내 의견으로는 MVC에는 두 가지 유형이 있습니다-순수하고 불결합니다 (더 나은 단어가 없기 때문에 :)
순수한 MVC는 작은 대화에 도입 된 것입니다.
개인 컴퓨팅 / 데스크톱 응용 프로그램을위한 것입니다. 보시다시피, 모델은 업데이트 / 변경 사항을 뷰에 알려줍니다. MVC에서는 (불완전한) 것은 아닙니다.
웹 애플리케이션을 위해 선전 된 다른 (불완전한) MVC는 위의 클래식 MVC 대신 PAC ( Presentation-abstraction-control ) 패턴에 가깝습니다. 그것은 코드 구성과 우려의 분리에 관한 것입니다.
- 모델 : 저장된 데이터의 추상화
- 제어 : 일반적으로 비즈니스 로직 계층이라고하는 것은 물론 HTTP 요청을 해당 비즈니스 로직 (일명 컨트롤러)으로 라우팅하는 응용 프로그램의 일부
- 보기 : 대부분 모델의 데이터를 형식화하여 클라이언트에 반환하는 템플릿을 봅니다. 모델은 절대로 업데이트를 뷰에 전송하지 않으며 뷰가 모델의 업데이트를 '구독'하지도 않습니다. 악몽과 연결될 것입니다. 따라서 실제 MVC보다 PAC와 비슷합니다.
이제 웹 애플리케이션이 일반적으로 구성되는 방법은 다음과 같습니다.
- 프론트 엔드 : Backbone.js 등의 프레임 워크를 사용하는 클라이언트의 MVC. 본질적으로 '진정한'MVC 형식입니다.
- 백엔드 : 코드 구성 및 우려 분리를위한 MVC / PAC가 있습니다.
- 글로벌 웹 앱 (전체 웹 애플리케이션 용) : JSON 데이터 만 리턴하는 RESTful 백엔드가 있는 경우 View 및 Controller가 본질적으로 존재하는 프론트 엔드 클라이언트 애플리케이션 의 모델 로 전체 백엔드를 인식 할 수 있습니다 .
MVC의 단점은 무엇 입니까? 글쎄, 패턴은 시간의 시험을 견디어 왔기 때문에 조금 '복잡한'것보다 그다지 중요한 것은 많지 않습니다. MVC는 복합 패턴입니다. 전략 / 관찰자 패턴을 구현하며 모두 높은 수준의 패턴을 형성하도록 잘 정렬되어 있습니다.
어디서나 사용해야합니까? 아마. 매우 복잡한 웹 응용 프로그램이 여러 계층으로 분할 될 수 있습니다! View / Business Logic / Data 레이어만으로는 벗어날 수 없습니다. 중요한 프레임 워크 / 조직은 여전히 MVC-ish 일 수 있지만 거시적 수준 일뿐입니다.
MVC 자체만으로는 나쁜 선택이 될 수있는 예는 다음과 같습니다 . 대형 은행을위한 항공 교통 관제 시스템 또는 대출 / 모기지 처리 응용 프로그램을 설계 해보십시오. MVC만으로는 나쁜 선택입니다. 필연적으로 이벤트 계층 / 메시지 대기열과 개별 계층 내에 MVC가 포함 된 다중 계층 구조 및 코드 기반을보다 잘 구성 할 수있는 중요한 MVC / PAC 설계가있을 수 있습니다.