Режим MVC: Model View пытается управлять контроллером, который является текущим основным режимом и используется как базовый способ входа в серверное программное обеспечение для изучения и освоения, а основной фреймворк Struts 1/2 JSF Wicket фактически поддерживает режим MVC.
Однако с постоянной популярностью B/S и интернет-приложений, Web 2.0 и большого количества частых интерактивных приложений, таких как социальные сети и игры, относительно статичный режим MVC больше не подходит для высокоинтерактивных и ориентированных на поведение приложений.
Само моделирование доменной системы DDD уделяет больше внимания структуре, его значение объект и сервер также являются своего рода структурным разделением, но оно не подчеркивает важность задач и поведения объектов, и это единственное отличие между объектами и базами данных.
НапротивДизайн объектов: роли, обязанности и сотрудничествоВ книге предполагается, что объект действительно играет определённую роль, и эта роль несёт ответственность, а затем определённое интерактивное поведение будет реализовано в определённом контексте сцены, что подробно обсуждалось в Jdon:
DCI, доменная модель, несколько идей для предметных событий
Асинхронное архитектурное мышление: реализуйте моделирование доменов с помощью Akka
В книге изложены четыре основных недостатка централизованных контроллеров, и контроллеры MVC фактически относятся к этому централизованному стилю контроллеров:
1. Логика управления может быть слишком сложной. Контроллеры могут быть сложными, и многие люди часто пишут бизнес-код в контроллерах Action от Struts.Все действия — это действия, а некоторые действия — почти тысячи строк.
2. Контроллеры могут зависеть от содержимого носителей информации. Контроллеры становятся зависимыми от информационных дата-центров или баз данных, контроллеры выполняют множество вещей, а доменные объекты делают очень мало, и контроллер не только делает что в итоге, но и принимает стратегические решения, а также тактические вопросы, такие как как это делать и реализовывать.
3. Объекты могут косвенно связываться через действия своего контроллера. Объекты косвенно связываются между собой через действия контроллера, один объект запрашивается в контроллере, затем копируется в другой, и оба объекта связываются вместе.
4. Единственная интересная работа — это контроллер.
Контроллер MVC — это своего рода медиаторный режим, но также централизованный контроллер; это главное отличие от режима наблюдателя: режим медиатора инкапсулирует коммуникацию, тогда как режим наблюдателя — децентрализованную связь, с точки зрения коммуникации контроллер также имеет свои недостатки: легко превратиться в большой и полностью связанный концентратор, всё это предназначено дляООЭто не терпимо.
Архитектура DCIЭто новая концепция, появившаяся совсем недавно и рассматривающая программное обеспечение с новой точки зрения, совпадающая с проектированием, основанным на долге и правойDDDразвитие и улучшение.
DCI — это сокращение от Data Context Interactions, и его важный вклад заключается в выдвижении концепции сцен, которая не упоминается в книге «Развитие, основанное на долге», где MVC лишь отрицает MVC, раскрывает его проблемы и не предлагает альтернативыDCIЭто альтернативная архитектура MVC, и DCI заменяет MVC сценариями для замены контроллеров, как показано на рисунке ниже (изображение).Оригинальный английский TheDCI Architecture: A New Vision of Object-Oriented Programming):
Сцена фактически выкапывает некоторые элементы управления и модели из MVC и собирает их заново в виде сцен с персонажами. Это новый угол, полностью отличающийся от рассмотрения режима MVC, который больше соответствует этому углуОО。
Недавно кто-то поднял этот вопросКонтекст сцены — это новый тип объекта, сцену можно не только заменить.SOAВеб-сервисы также могут заменить контроллеры MVC.
Лично я считаю, что новая иерархическая архитектура в будущем может выглядеть следующим образом: Просмотр --> Модель контекста ---> домена ---> компонента/репозитория
Режим MVC мёртв.
|