MVC (Model View Controller)에 대해 개발자와 이야기 할 때마다 거의 서버가 엔티티를 작성하고 URL을 요청한다고 말하면 해당 모델의 시각적 표현을 제공합니다.
이것은 MVC 가 웹 전용 이거나 웹 응용 프로그램 작성을 위해 MVC를 사용하는 개발자 인 사람들을 만나고 있다는 것을 의미 합니까?
데스크톱 스타일 응용 프로그램에서 MVC를 사용합니까?
나는 패러다임에 익숙하지 않으며 MVC에 대한 수퍼 세트를 알고 싶습니다.
MVC (Model View Controller)에 대해 개발자와 이야기 할 때마다 거의 서버가 엔티티를 작성하고 URL을 요청한다고 말하면 해당 모델의 시각적 표현을 제공합니다.
이것은 MVC 가 웹 전용 이거나 웹 응용 프로그램 작성을 위해 MVC를 사용하는 개발자 인 사람들을 만나고 있다는 것을 의미 합니까?
데스크톱 스타일 응용 프로그램에서 MVC를 사용합니까?
나는 패러다임에 익숙하지 않으며 MVC에 대한 수퍼 세트를 알고 싶습니다.
답변:
MVC는 패턴입니다. 패턴은 모든 프로그래밍에 적용됩니다. MVC는 웹 컨텍스트에서 매우 잘 작동합니다.
으로 모기 점에서 단지 MVC 태그를 보라 당신은 그것을 구현되는 여러 사례를 볼 수 있습니다.
MVC가 1977 년이고 웹이 1991 년에 만 발명되었다는 점을 고려하면 MVC는 웹 만을위한 것이 아니라는 것이 분명합니다 .
Microsoft 환경에서 질문을하면 많은 사람들이 웹 전용 MVC 구현 인 Asp.Net MVC를 의미한다고 가정합니다.
불행히도 이것이 MVC 패턴의 구현이라는 것을 인식하지 못하고 이들이 상호 교환 가능한 용어라고 생각하는 많은 사람들이 있습니다. 이는 "웹 전용"으로 가정합니다.
내가 아는 한 MVC의 첫 번째 구현은 Smalltalk에있었습니다. 스몰 토크 -80에 분명히 존재했습니다. 비록 그것을 증명할 수있는 문서는 없지만, 그 문서 (또는 어쨌든 비슷한 것)는 몇 년 동안 스몰 토크에 있었다고 생각합니다.
대부분의 OO GUI 프레임 워크에는 최소한 일부 MVC 변형이 포함되어 있습니다. 그러나이 경우 "슈퍼 셋"이 정확히 무엇을 의미하는지 잘 모르겠습니다. 주어진 변형이 MVC의 수퍼 셋, 서브 세트 또는 피어인지 여부를 말하기는 약간 어렵지만 대부분의 피어를 고려하는 경향이 있습니다.
어쨌든 웹 개발이 아닌 데스크톱 개발에이 중 대부분 (대부분의)이 사용되었습니다. 일부 오래된 AT & T 특허 덕분에 대부분의 윈도우 시스템은 필요에 따라 뷰를 재생성 할 수있는 프로그램이 필요합니다. 이것은 (거의) 현재 상태를 유지하는 코드 (모델)와 해당 상태를 표시하는 코드 (보기)를 적어도 어느 정도 분리시킵니다. 그래도 여전히 1) 컨트롤러 기능이 분리되는 정도, 2) 각 주요 부분 사이에 선을 그릴 위치에 대한 정확한 세부 사항이 다양합니다.
이 영역에는 다양한 디자인 패턴이 있습니다.
등등. 수년에 걸쳐 이들은 서로 얽히고 서로 뭉개지고 변화하며 다양한 맥락에서 적용되었습니다. 여기서 중요한 점은 1977 년의 MVC 디자인 패턴이 상당히 많이 바뀌었고 더 이상 서버 측 웹 프레임 워크에서 사용하는 디자인 패턴이 아니라는 것입니다. 원래 스몰 토크 구현의 예에서 모델은 변경 사항에 대한 뷰를 관찰합니다. 서버 측에서는 단순히 사용자 브라우저에서 html 요소를 관찰 할 수 없기 때문에 더 이상 그렇지 않습니다. 대신 뷰가 변경되면 뷰는 컨트롤러에 요청을 보내면 뷰가 업데이트됩니다. 모델에 대한 업데이트는 모델에 종속 된 모든 뷰가 업데이트됨을 의미하므로 원래 MVC 구현도 따르지 않습니다.
최신 웹 프레임 워크는 Model 2 아키텍처로 알려진 간단한 3 계층 아키텍처를 따릅니다.
물론 웹에는 실제 MVC 아키텍처의 예가 있지만보기는 xml 및 json이며 변경 사항이 관찰되지 않기 때문에 모델 2 아키텍처를 따르는 서버에 연결된 클라이언트 측 전용입니다. 클라이언트 측 순수 mvc 아키텍처의 예는 Sencha Touch 및 Sproutcore입니다.
브라우저에 MVC가 있고 서버에 mvc가 있고 데이터 계층에 mvc가있는 경우 계층 적 mvc 구현이 있습니다.
노트. 나는 웹 프레임 워크에 대해서만 이야기했지만 java swing 및 Flex와 같은 다른 MVC 구현에는 다른 구현 차이점이 있습니다.
한 가지 알아야 할 것은 MVC를 구현한다고 주장하는 프레임 워크만큼 많은 MVC 맛이 있다는 것입니다.
대부분 모델이 어떤 상태를 유지하고 뷰가 렌더링한다는 사실에 동의합니다. 그러나 컨트롤러는 매우 다른 역할을합니다.
Smalltalk에서 처음 설명 된 모델은 응용 프로그램, 데이터 및 비즈니스 방법의 핵심입니다. 보기는 애플리케이션 상태 (일명 모델)의 그래픽 표현이며 컨트롤러는 사용자 입력, 마우스 및 키보드 이벤트를 관리합니다. 예를 들어 컨트롤러는 키보드 이벤트를 포커스가있는보기 요소로 라우팅합니다.
.jsp 페이지에서 모델은 대부분 데이터이며,보기는 해당 모델을 HTML로 렌더링하고 컨트롤러는 모델을 적절한보기로 라우팅하여 렌더링합니다.
따라서 귀하의 질문에 대답하기 위해 MVC는 독립형 응용 프로그램 (Java, .Net, Flex)과 웹 (jsp 페이지) 모두에서 사용되지만 매우 다릅니다. 즉, 알고있는 MVC는 독립형 응용 프로그램에서 사용되지 않습니다.