Контроллеры! = Бизнес Уровень? - PullRequest
4 голосов
/ 21 февраля 2010

Итак, я предполагаю, что люди все еще используют бизнес-уровень вне логики контроллера? Если да, то где нарисована эта серая линия и что вы не включили в классы контроллеров, как в проекте бизнес-уровня, и наоборот? Мне кажется, что контроллеры полностью избавляют от необходимости использовать бизнес-уровень в вашем приложении MVC.

Ответы [ 3 ]

9 голосов
/ 21 февраля 2010

Уровень контроллера, по моему мнению, является частью представления. То, что вы называете бизнес-уровнем, я называю сервисами (, а не веб-сервисами; это лишь один из множества вариантов развертывания).

Бизнес-уровень знает о вариантах использования и единицах работы для достижения целей пользователей.

Контроллер занимается проверкой, связыванием и маршалингом запросов, определяет, какая служба необходима для выполнения запроса, и передает ему значения, отменяет маршализацию ответа и направляет его в следующее соответствующее представление.

Поэтому я согласен с гипотезой, изложенной в вашем названии: контроллер! = Сервис.

Классическим шаблоном, пришедшим из Smalltalk, является Model-View-Controller, который не согласуется с моим утверждением, разбив представление и контроллер на отдельные уровни.

То, что я описываю, - это то, что реализовано в платформах Java как для веб, так и для настольных компьютеров. Изменение технологии представления обычно означает также изменение контроллера.

Таким образом, если бы идиома Smalltalk была модель-представление-контроллер, более современный подход был бы похож на представление-> контроллер-> сервис-> модель / постоянство. Модель означает «доменные объекты», которые не зависят от всех технологий просмотра.

8 голосов
/ 21 февраля 2010

Линия не "серая". Это совершенно и абсолютно.

Модель (или «бизнес-уровень») работает с любой презентацией. GUI, командная строка, веб. И не требуется любые изменения для переноса с помощью графического интерфейса (представление + управление) приложения командной строки или веб-приложения.

Вы знаете, что правильно выполнили модель («бизнес-уровень»), когда вообще нет функций представления или управления. Кроме того, оно настолько полно, что любой графический интерфейс может использовать его напрямую.

3 голосов
/ 21 февраля 2010

Проще говоря:

  • Контроллер должен содержать специфичную для приложения логику.
  • «Бизнес-уровень» должен содержать бизнес-логику.

В соответствии с доменным подходом Эрика Эванса «Бизнес уровень» содержит:

  • Уровень обслуживания: интерфейс разработан на основе сценария использования
  • Доменные модели: базовые доменные объекты, сущности, объекты значений и др.
  • Объекты доступа к данным: репозитории

Также обратите внимание, что модели Domain не относятся к уровню доступа к данным. Он может инкапсулировать доступ к данным, но не сам уровень доступа к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...