MVC는 웹에만 적용됩니까?


14

MVC (Model View Controller)에 대해 개발자와 이야기 할 때마다 거의 서버가 엔티티를 작성하고 URL을 요청한다고 말하면 해당 모델의 시각적 표현을 제공합니다.

  • 이것은 MVC 가 웹 전용 이거나 웹 응용 프로그램 작성을 위해 MVC를 사용하는 개발자 인 사람들을 만나고 있다는 것을 의미 합니까?

  • 데스크톱 스타일 응용 프로그램에서 MVC를 사용합니까?

  • 나는 패러다임에 익숙하지 않으며 MVC에 대한 수퍼 세트를 알고 싶습니다.


1
Programmers.SE 또는 'mvc'에 대한 스택 오버플로 태그 위키 를 확인 했 습니까?
gnat

3
@gnat 그래 내가 한
Deeptechtons

6
그럼 당신은 아마 당신의 질문에 대한 답을 알고 있습니까?
gnat

4
@gnat 심각하게 아니오, 나는 MVC를 완전히 처음 접했으며 Windows 응용 프로그램에 적용되거나 MVC 배지를 다운로드하는 응용 프로그램을 다운로드 페이지에서 사용하는 것에 대해 MVC를 사용하거나 듣지 못했습니다. 질문이 어리석은 미안하지만 나를 위해 그것은 퍼즐 않습니다
Deeptechtons

MVC의 역사를 배우는 데 도움이되는 많은 자료가 있지만이 오해를 많이 볼 수 있으므로 블로그 블로그에 멋진 요약을 썼습니다 .kutulu.org / 2012 / 01 / mvc-mvp-mvvm-mvpvm-lmnop-wtf .html
KutuluMike

답변:


22

MVC는 패턴입니다. 패턴은 모든 프로그래밍에 적용됩니다. MVC는 웹 컨텍스트에서 매우 잘 작동합니다.

으로 모기 점에서 단지 MVC 태그를 보라 당신은 그것을 구현되는 여러 사례를 볼 수 있습니다.


5
이것이 핵심입니다. MVC는 웹 응용 프로그램에서 실제로 잘 작동하며 실제로 Rails, Django 및 ASP.NET MVC와 같은 최신 MVC 기반 프레임 워크가 인기를 얻는 이유 중 상당 부분입니다. 다른 컨텍스트 (데스크톱 앱과 같은)에서도 작동하지만보기와 컨트롤러를 깨끗하게 분리하는 것이 더 어렵습니다. 따라서 모델 위임 (Swing에서 사용)과 같은보기 컨트롤러 분리를 제거하거나 분할이 발생하는 위치를 변경하는 변형 Model-View-ViewModel (주로 .Net WPF 앱에서 사용)과 같은 데스크톱 응용 프로그램에서 더 일반적입니다.
케빈 카스 카트

컨트롤러가 무엇을하는지에 대한 원래 스몰 토크 설명 (모델의 메시지로 사용자 입력을 변환)을 보면 Windows 자체는 기본적으로 하나의 큰 컨트롤러입니다. 그렇기 때문에 패턴으로서의 MVC는 Windows UI 응용 프로그램과 잘 맞지 않습니다. Windows 이외의 시스템을위한 UI 프레임 워크에서 훨씬 더 많이 사용되었습니다.
KutuluMike

@MichaelEdenfield 실제로는 아닙니다. MVP가 더 인기가 있지만 MVC와 WinForms를 함께 사용할 수 있지만 MVP는 MVC의 변형입니다.
Andy

45

MVC가 1977 년이고 웹이 1991 년에 만 발명되었다는 점을 고려하면 MVC는 웹 만을위한 것이 아니라는 것이 분명합니다 .


30
이것은 좋은 시작이지만, 입안에서 쓴 맛이 있습니다.
Nicolas C.

2
정확 하고 으스스합니다. 좋은 물건!
Tom Hawtin-tackline

1
"1982 년에 인터넷 프로토콜 스위트 (TCP / IP)가 표준화되었고 인터넷이라고하는 완전히 상호 연결된 TCP / IP 네트워크의 전세계 네트워크 개념이 도입되었습니다." 위키 . 넷스케이프를 의미한다면 괜찮습니다.하지만 "웹"은 그 전에 존재했습니다.
jmq

4
@jmquigley "인터넷"과 "웹"은 매우 다른 두 가지입니다.
Eric King

1
@jmq 1977은 1982 년 이전에는 여전히 그렇고 다른 사람은 Web! = Internet을 지적했습니다. 웹은 실제로 1991 년 이전에 존재하지 않았습니다.
Andy

9

아니요, OS X 및 iOS 용 개발은 Model View Controller 패턴을 사용합니다.


2
마지막으로, 해설없이 첫 번째와 두 번째 포인트에 대한 답변.
JeffO

8

Microsoft 환경에서 질문을하면 많은 사람들이 웹 전용 MVC 구현 인 Asp.Net MVC를 의미한다고 가정합니다.

불행히도 이것이 MVC 패턴의 구현이라는 것을 인식하지 못하고 이들이 상호 교환 가능한 용어라고 생각하는 많은 사람들이 있습니다. 이는 "웹 전용"으로 가정합니다.


3
+1 이것은 방법론 후에 플랫폼의 이름을 지정할 때 발생하는 문제입니다. 사람들이 플랫폼에 처음 소개되면 구별을 보지 못합니다.
MattDavey

@Ozz 이것은 MVC가 주제 일 때 다른 개발자들이 항상 웹에 대해 이야기하는 이유를 설명했습니다
Deeptechtons

1
감사합니다.
Andy

@ 앤디-그것은 MS 개발자 bashing이 아니었고, 나는 Asp.Net MVC 개발자이며, 나는 원래의 대답을 기다리고 있습니다. 나는 "모든"사람들이나 "모든".net 개발자들에게 말하지 않았고, 많은 사람들이 만드는 것을 본 가정이나 실수에 대한 관찰 일뿐입니다. 감사.
ozz

2

내가 아는 한 MVC의 첫 번째 구현은 Smalltalk에있었습니다. 스몰 토크 -80에 분명히 존재했습니다. 비록 그것을 증명할 수있는 문서는 없지만, 그 문서 (또는 어쨌든 비슷한 것)는 몇 년 동안 스몰 토크에 있었다고 생각합니다.

대부분의 OO GUI 프레임 워크에는 최소한 일부 MVC 변형이 포함되어 있습니다. 그러나이 경우 "슈퍼 셋"이 정확히 무엇을 의미하는지 잘 모르겠습니다. 주어진 변형이 MVC의 수퍼 셋, 서브 세트 또는 피어인지 여부를 말하기는 약간 어렵지만 대부분의 피어를 고려하는 경향이 있습니다.

어쨌든 웹 개발이 아닌 데스크톱 개발에이 중 대부분 (대부분의)이 사용되었습니다. 일부 오래된 AT & T 특허 덕분에 대부분의 윈도우 시스템은 필요에 따라 뷰를 재생성 할 수있는 프로그램이 필요합니다. 이것은 (거의) 현재 상태를 유지하는 코드 (모델)와 해당 상태를 표시하는 코드 (보기)를 적어도 어느 정도 분리시킵니다. 그래도 여전히 1) 컨트롤러 기능이 분리되는 정도, 2) 각 주요 부분 사이에 선을 그릴 위치에 대한 정확한 세부 사항이 다양합니다.



1

이 영역에는 다양한 디자인 패턴이 있습니다.

  • 모델 뷰 발표자 (mvp)
  • 모델 뷰보기 발표자 (mvvp)
  • 모델 뷰 컨트롤러
  • 모델 2

등등. 수년에 걸쳐 이들은 서로 얽히고 서로 뭉개지고 변화하며 다양한 맥락에서 적용되었습니다. 여기서 중요한 점은 1977 년의 MVC 디자인 패턴이 상당히 많이 바뀌었고 더 이상 서버 측 웹 프레임 워크에서 사용하는 디자인 패턴이 아니라는 것입니다. 원래 스몰 토크 구현의 예에서 모델은 변경 사항에 대한 뷰를 관찰합니다. 서버 측에서는 단순히 사용자 브라우저에서 html 요소를 관찰 할 수 없기 때문에 더 이상 그렇지 않습니다. 대신 뷰가 변경되면 뷰는 컨트롤러에 요청을 보내면 뷰가 업데이트됩니다. 모델에 대한 업데이트는 모델에 종속 된 모든 뷰가 업데이트됨을 의미하므로 원래 MVC 구현도 따르지 않습니다.

최신 웹 프레임 워크는 Model 2 아키텍처로 알려진 간단한 3 계층 아키텍처를 따릅니다.

물론 웹에는 실제 MVC 아키텍처의 예가 있지만보기는 xml 및 json이며 변경 사항이 관찰되지 않기 때문에 모델 2 아키텍처를 따르는 서버에 연결된 클라이언트 측 전용입니다. 클라이언트 측 순수 mvc 아키텍처의 예는 Sencha Touch 및 Sproutcore입니다.

브라우저에 MVC가 있고 서버에 mvc가 있고 데이터 계층에 mvc가있는 경우 계층 적 mvc 구현이 있습니다.

노트. 나는 웹 프레임 워크에 대해서만 이야기했지만 java swing 및 Flex와 같은 다른 MVC 구현에는 다른 구현 차이점이 있습니다.


사람들이 왜 다른 사람들에게 투표를했는지에 대해서는 왜 이해가되지 않습니까? 그들이 주제에 대한 지식이 없다면 좋은 선생님은 그들이 그것을 올바르게 배울 때까지 그를 때리지 말고 올바른 출처로 안내 할 것입니다!
Deeptechtons

이 질문은 mvc와 웹이 잘 작동하고 웹이 아닌 mvc에 대해 호소한다고 가정하므로 웹 컨텍스트에서 mvc의 예만 제공하면 -1
hildred

1

한 가지 알아야 할 것은 MVC를 구현한다고 주장하는 프레임 워크만큼 많은 MVC 맛이 있다는 것입니다.

대부분 모델이 어떤 상태를 유지하고 뷰가 렌더링한다는 사실에 동의합니다. 그러나 컨트롤러는 매우 다른 역할을합니다.

Smalltalk에서 처음 설명 된 모델은 응용 프로그램, 데이터 및 비즈니스 방법의 핵심입니다. 보기는 애플리케이션 상태 (일명 모델)의 그래픽 표현이며 컨트롤러는 사용자 입력, 마우스 및 키보드 이벤트를 관리합니다. 예를 들어 컨트롤러는 키보드 이벤트를 포커스가있는보기 요소로 라우팅합니다.

.jsp 페이지에서 모델은 대부분 데이터이며,보기는 해당 모델을 HTML로 렌더링하고 컨트롤러는 모델을 적절한보기로 라우팅하여 렌더링합니다.

따라서 귀하의 질문에 대답하기 위해 MVC는 독립형 응용 프로그램 (Java, .Net, Flex)과 웹 (jsp 페이지) 모두에서 사용되지만 매우 다릅니다. 즉, 알고있는 MVC는 독립형 응용 프로그램에서 사용되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.