MVC 모드: 모델 뷰는 현재 주류 모드인 컨트롤러를 제어하려고 시도하며, 서버 소프트웨어 입력의 기본 모드로 학습 및 마스터를 수행하고, 주류 프레임워크인 Struts 1/2 JSF Wicket은 기본적으로 MVC 모드를 지원합니다.
하지만 B/S 및 인터넷 애플리케이션, 웹 2.0, 소셜 미디어와 게임과 같은 자주 사용되는 인터랙티브 애플리케이션의 지속적인 대중화로 인해, 비교적 정적인 MVC 모드는 더 이상 고도로 상호작용적이고 행동 지향적인 애플리케이션에 적합하지 않습니다.
DDD 도메인 모델링 자체는 구조에 더 많은 주의를 기울이며, 엔티 값 객체와 서버도 일종의 구조적 구분이지만, 객체 임무와 동작의 중요성을 강조하지는 않으며, 이것이 객체와 데이터베이스의 유일한 차이점입니다.
그와는 반대로객체 설계: 역할, 책임, 그리고 협업이 책은 객체가 실제로 특정 역할을 수행하고, 그 역할이 책임이 있으며, 특정 장면 맥락에서 특정 상호작용적 행동이 구현된다고 제안하는데, 이는 Jdon에서 충분히 논의된 바 있습니다:
DCI, 도메인 모델, 도메인 이벤트에 대한 몇 가지 아이디어
비동기식 아키텍처 사고: Akka로 도메인 모델링 구현
이 책은 중앙집중식 컨트롤러의 네 가지 주요 단점을 요약하며, MVC의 컨트롤러는 실제로 이 중앙집중식 컨트롤러 스타일에 속합니다:
1. 제어 논리가 지나치게 복잡해질 수 있습니다. 컨트롤러는 복잡할 수 있고, 많은 사람들이 Struts의 Action 컨트롤러로 비즈니스 코드를 작성하는 경우가 흔합니다.모든 행동은 행동 속에 있으며, 어떤 행동은 거의 수천 줄에 달합니다.
2. 컨트롤러는 정보 보유자의 콘텐츠에 의존할 수 있습니다. 컨트롤러는 정보 데이터 센터나 데이터베이스에 의존하게 되고, 컨트롤러는 많은 일을 하므로 도메인 객체는 거의 하지 않으며, 컨트롤러는 결국 무엇을 할 뿐만 아니라 전략적 사항도 결정하고, 어떻게 구현할지와 같은 전술적 문제들도 결정합니다.
3. 객체는 컨트롤러의 동작을 통해 간접적으로 결합될 수 있습니다. 객체들은 컨트롤러의 동작을 통해 간접적으로 결합되며, 컨트롤러에서 한 객체가 쿼리된 후 다른 객체로 복사되어 두 객체가 결합됩니다.
4. 흥미로운 작업은 컨트롤러에서 이루어집니다.
MVC의 컨트롤러는 일종의 중재자 모드이자 중앙집중식 제어자이며, 관찰자 모드와의 주요 차이점입니다: 중재자 모드는 통신을 캡슐화하는 반면, 관찰자 분산 통신은 통신 관점에서 보면 고유의 결함도 가지고 있는데, 큰 완전 결합 집중기가 되기 쉽다는 점입니다.오이것은 용납되지 않습니다.
DCI 아키텍처이것은 최근에야 등장한 새로운 개념으로, 의무 중심 설계와 일치하며 올바른 시각에서 소프트웨어를 바라봅니다DDD개발과 개선.
DCI는 Data Context Interactions의 약자이며, 중요한 기여는 장면(scenes) 개념을 제시한 것입니다. 이 개념은 『Duty-Driven Development』라는 책에는 언급되지 않고, MVC를 부정하고 문제를 드러내며 대안을 제시하지 않습니다DCI이는 MVC의 대안 아키텍처이며, DCI는 아래 그림(사진에서 가져온 것)에서 보듯이 컨트롤러를 대체하는 시나리오로 MVC를 대체합니다.원본 영어 TheDCI Architecture: A New Vision of Object-Oriented Programming):
이 장면은 실제로 MVC의 조작과 모델 일부를 찾아내어 캐릭터 장면 형태로 재조립합니다. 이것은 MVC 모드 고려와는 완전히 다른 새로운 각도이며, MVC 모드는 이 각도에 더 가깝습니다오。
최근에 누군가가 이 문제를 제기했습니다씬 컨텍스트는 새로운 객체 유형입니다, 장면은 단순히 교체될 수 있을 뿐만 아니라요소웹 서비스는 MVC 컨트롤러를 대체할 수도 있습니다.
개인적으로는 새로운 계층적 아키텍처가 앞으로 이렇게 될 것이라고 생각합니다: View --> Context ---> 도메인 모델 ---> 컴포넌트/저장소
MVC 모드는 죽었어.
|