Какие слои не учитываются MVC?

MVC моделирует только уровень представления

Я не понимаю этого утверждения. MVC разделяет приложение на модель, представление и представление. Разве это не все уровни, необходимые для завершения приложения?

Я имею в виду, что при создании приложения MVC какие еще уровни, выходящие за рамки MVC, необходимы и действительно взаимодействуют с уровнем «представления»?


person microwth    schedule 28.01.2019    source источник
comment
M, V и C на самом деле являются частью уровня представления. Что касается других слоев, это зависит от вашего шаблона проектирования. Вам может понадобиться сервисный уровень, плательщик данных, доменный уровень, инфраструктурный уровень и т. д. Ни один из этих других уровней не должен ничего знать о представлении.   -  person DavidG    schedule 28.01.2019
comment
Разве модель не является уровнем данных?   -  person microwth    schedule 28.01.2019
comment
Нет, эти модели на самом деле являются моделями представления (часто называемыми моделями представления). Ваш слой данных должен содержать собственные модели. Хотя вы можете выплевывать модели данных прямо в свои представления, это действительно не очень хорошая идея.   -  person DavidG    schedule 28.01.2019
comment
@microwth: это может быть в простых сценариях. Например, в простом приложении ASP.NET MVC вы можете написать несколько классов моделей и позволить Entity Framework обрабатывать доступ к данным за вас. Это скрывает уровень данных и предполагает, что модели данных и модели представления одинаковы, что действительно может быть в простых приложениях. Зависит от системы и различных архитектурных потребностей.   -  person David    schedule 28.01.2019
comment
Рассмотрим такой шаблон, как проектирование, управляемое предметной областью (также известное как DDD), в этом стиле разработки у вас могут быть модели данных, модели предметной области и модели представлений. Это очень помогает в таких вещах, как разделение интересов.   -  person DavidG    schedule 28.01.2019
comment
где вы держите бизнес-логику?   -  person microwth    schedule 28.01.2019
comment
Зависит от шаблона, который вы используете. В DDD бизнес-логика называется логикой предметной области и, как ни странно, хранится на уровне предметной области.   -  person DavidG    schedule 28.01.2019
comment
@DavidG в MVC? это свойство контроллера или модели?   -  person microwth    schedule 28.01.2019
comment
Можно, но я настоятельно рекомендую вам этого не делать.   -  person DavidG    schedule 28.01.2019
comment
@DavidG какой? Контроллер?   -  person microwth    schedule 28.01.2019
comment
Я не понимаю вопроса. В любом случае, это обсуждение здесь не по теме, я предлагаю вам прочитать несколько шаблонов. Попробуйте DDD, это хороший стиль для использования.   -  person DavidG    schedule 28.01.2019
comment
@DavidG Я имею в виду, о чем, может быть, вы говорили?   -  person microwth    schedule 28.01.2019
comment
Вы спросили, где хранить бизнес-логику, я говорю, что она должна быть вне всего проекта MVC.   -  person DavidG    schedule 28.01.2019
comment
Проголосовал за закрытие на основании мнения. Чтобы ответить на этот вопрос, вам нужно решить, какие слои вы на самом деле хотите реализовать, что будет отличаться от разработчика к разработчику. Некоторые разработчики могут использовать только уровень представления и обслуживания, при этом уровень обслуживания может запрашивать базу данных, некоторые разработчики могут использовать только уровень представления и данных, а уровень представления содержит бизнес-логику, некоторые могут использовать предварительный уровень, уровень обслуживания и уровень данных. или некоторые могут поместить все на уровень представления. Все зависит от архитектуры, которую ВЫ считаете наиболее подходящей для проекта.   -  person GregH    schedule 28.01.2019
comment
@microwth MVC изначально разрабатывался для настольных приложений с учетом разделения задач. Со временем люди попытались применить такое разделение и в веб-приложениях. Хотя были необходимы адаптации, что привело к множеству шаблонов: MVVM, MVP, MVC Model 2 и т. д. Итак: MVC — это не MVVM или MVP и т. д. Но у всех этих подходов есть одно общее: разделение задач происходит путем разделения только два уровня друг от друга: уровень модели (включая бизнес-логику) и механизм доставки (уровень, включающий любые другие компоненты, ответственные за передачу данных между пользователем и уровнем модели).   -  person dakis    schedule 28.01.2019
comment
@microwth Некоторые ссылки: это, это, это.   -  person dakis    schedule 28.01.2019