Назначение служебного уровня
Правильно ли я полагаю, что цель уровня сервиса включает следующее?
- истощение моделей домена (т.е. перемещение определенных функций, таких как кэширование, создание экземпляров)
- сокращение зависимостей от моделей доменов
- Минимизация API
Ответы
Ответ 1
В терминах управляемого доменом дизайна, например, уровень службы домена используется для операций, которые не могут быть определены в контексте объектов домена. Например, если у вас есть объект CreditCard, подходящей операцией на вашем уровне обслуживания будет выдача новой кредитной карты.
В более крупном приложении используется модель Anemic Domain Models, где объекты домена используются только как контейнеры данных, а вся бизнес-логика находится на уровне обслуживания домена (иногда это называется анти-шаблоном, но может быть очень полезным в большом решении, с добавлением другого слоя абстракции).
В разностных решениях архитектуры и шаблоны сервисный уровень может иметь разную цель.
Ответ 2
Традиционно (когда не используется Domain Driven Design) уровень сервиса или "бизнес-уровень", как его еще называют, - это код, в котором вы кодируете всю бизнес-логику для своего приложения. Так, например, в приложении, которое занимается выдачей банковских кредитов, уровень обслуживания - это место, где идет код, который определяет, следует ли предоставлять определенный кредит.
Очевидно, что на уровне обслуживания потребуется некоторая информация о заявителе займа, чтобы иметь возможность принять решение о ее доверии. Чтобы получить эту информацию, бизнес-уровень вызывает слой "данные" или "репозиторий", который занимается извлечением и хранением информации в базе данных.
Уровень сервиса не затрагивает такие вопросы, как сохранение или другие инфраструктурные проблемы.
Если ваш дизайн зависит от домена, ответ anthares верен.
Ответ 3
Уровень обслуживания, как следует из названия, предоставляет службы, которые не являются непосредственной ответственностью любого другого объекта домена.
Уровень обслуживания также помогает в развязывании обязанностей. Уровень обслуживания формирует среднюю часть между уровнем базы данных/уровня персистентности и уровнем Client/UI/Web.
Правильное проектирование уровня обслуживания позволяет использовать его с любого клиента, будь то веб-клиент или веб-служба (SOA) или мобильное устройство.