@oldhowl

Какую функцию выполняет Application Layer?

С доменом понятно -- описываем агрегатами и интерфейсами как все связано между собой
С инфраструктурой понятно -- реализовываем интерфейсы
С application layer не очень. Что он выполняет кроме того что мэппит из DTO в агрегат?

Какие только не смотрел примеры, везде все по разному. Где то вообще не заюзан слой приложения.
  • Вопрос задан
  • 933 просмотра
Пригласить эксперта
Ответы на вопрос 1
ApeCoder
@ApeCoder
У меня под руками книжка Эванса, правда косноязычный русский перевод.

Там этот уровень назван "Операционным" и написано "определяет задачи, которые должна решить задача, и распределяет их между объектами, выражающими суть предметной области".

Дальше приведен пример где на этом уровне нарисован FundsTransferService - который отправляет сообщения объектам account, чтобы провести банковскую транзакцию.

То есть, другими словами, это уровень конкрентного применения доменной области - реализации конкретных бизнес опреаций и именно к нему обращается интерфейс пользователя - в примере он вызывает метод transferTo класса FundTransferService, передавая ему номера счетов, а дальше этот класс уже руководит счетами чтобы произошла бизнес операция (наверное поэтому в краже назвали Операционным).

По-моем, это то, что соответствует уровню вариантов использования в "чистой архитектуре" дядюшки Боба:

"Use Cases
The software in this layer contains application specific business rules. It encapsulates and implements all of the use cases of the system. These use cases orchestrate the flow of data to and from the entities, and direct those entities to use their enterprise wide business rules to achieve the goals of the use case.

We do not expect changes in this layer to affect the entities. We also do not expect this layer to be affected by changes to externalities such as the database, the UI, or any of the common frameworks. This layer is isolated from such concerns.

We do, however, expect that changes to the operation of the application will affect the use-cases and therefore the software in this layer. If the details of a use-case change, then some code in this layer will certainly be affected."

Обратите внимание на слова "application specific" - речь идёт о бизнес правилах характерных для конкретного приложения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы