@oldhowl

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

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

Какие только не смотрел примеры, везде все по разному. Где то вообще не заюзан слой приложения.
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@ivorobioff
Software Engineer
Этот слой как бы пользователь инфраструктуры и доменного слоя. Application layer стоит поверх все остальных слоев и является как бы входной точкой всего приложения. Именно через application layer происходит доступ к доменному слою и инфраструктуре из вне.

В одном приложение могут быть несколько application layer. К примеру, в веб приложение есть как минимум два разных application layer. Один вариант это который используется веб клиентами, там обычно находятся контроллеры. Второй вариант это команды для CLI. Все они обращаются к одному и тому же доменному слою но по разному обрабатывают запросы клиентов. Еще, каждый application layer может по-разному конфигурировать инфраструктуру и доменный слой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 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" - речь идёт о бизнес правилах характерных для конкретного приложения.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
LC Group Новосибирск
от 90 000 до 160 000 руб.
Hunt4You Севастополь
от 60 000 до 120 000 руб.
OS33 Нижний Новгород
от 120 000 до 150 000 руб.
20 янв. 2019, в 00:12
16000 руб./за проект
19 янв. 2019, в 23:33
110000 руб./за проект