Уровень обслуживания = прикладной уровень = уровень контроллера GRASP
Я думаю, что сервисный / прикладной уровень - это то же самое, что Ларман описывает как GRASP Controller, будучи первым объектом за уровнем GUI, который делегируется на уровень домена, и его следует повторно использовать из другого GUI.
Уровень обслуживания (Evans) такой же, как уровень приложения (Fowler), потому что сам Фаулер так говорит в своих "бликах" о "модели анемичного домена": http://martinfowler.com/bliki/AnemicDomainModel.html
Цитата: "Уровень приложений [его имя для Service Layer]: определяет задания, которые должно выполнять программное обеспечение, и направляет выразительные доменные объекты для решения проблем. Задачи, за которые этот уровень отвечает, важны для бизнеса или необходимы для взаимодействия с прикладные уровни других систем. Этот слой поддерживается тонким. Он не содержит бизнес-правил или знаний, а только координирует задачи и делегирует работу для совместной работы объектов домена на следующем уровне. Он не имеет состояния, отражающего бизнес-ситуацию, но он может иметь состояние, отражающее ход выполнения задачи для пользователя или программы ".
Теперь рассмотрим приведенное выше описание (а также см. Книгу Фаулера PEAA, касающуюся определения методов уровня обслуживания из вариантов использования), а также рассмотрим картину в описании Фаулером уровня обслуживания, которая иллюстрирует уровень обслуживания, являющийся первым уровнем после "пользовательского интерфейса" в этот URL: http://martinfowler.com/eaaCatalog/serviceLayer.html
Теперь сравните вышеупомянутое описание сервисного / прикладного уровня с некоторыми словами Лармана о контроллере GRASP (в 3-м издании его популярной книги OOAD "Применение UML и шаблонов", возраст 302-306): "... первый объект за пределами уровня пользовательского интерфейса, который получает и координирует ("контролирует") системную операцию..." "... представляет сценарий варианта использования, в котором происходит системное событие..." "... Обычно контроллер должен делегировать другие объекты - это та работа, которую необходимо выполнить; она координирует или контролирует деятельность. Сама не выполняет много работы... ".
Я думаю, что уровень GRASP Controller Лармана такой же, как уровень приложений / услуг Эванса / Фаулера. Другие люди не согласны? Затем объясните существенные различия между этими концепциями и приведите пример класса Controller вместо класса Service/Application.
Мой вопрос рождается, потому что некоторые говорят, что создание модельных доменных объектов является обязанностью контроллера, а не другого уровня обслуживания / приложения. Но не могли бы вы привести пример класса уровня обслуживания и разницу между классом контроллера?
1 ответ
На самом деле есть UI Controller и Domain Controller как наиболее часто используемые шаблоны.
Контроллер пользовательского интерфейса координирует доступ к View в виде шаблона MVC.
Контроллер домена координирует доступ к домену, и он называется Service Layer (Фаулер, который я предпочитаю) или Application Layer (Эванс).
Оба являются косвенными слоями (Façade Pattern), используемыми для разделения классов между подсистемами / слоями. Это обеспечивает модульность и лучшую поддержку (вы можете поменять домен для удаленных служб или поменять представление с HTML на Flex и просто изменить слой косвенности)
GRASP Controller является гибридом обоих. Я рекомендую вам использовать этот термин только для анализа, а не для реализации.
Надеюсь, поможет!