Может ли прикладной уровень в DDD иметь модели?
Чтобы быть более явным, у меня есть credential
сущность в моей системе, которая связана с процессом аутентификации, который находится за пределами моего уровня домена, так где эта сущность будет? Я новичок в домене, управляемом дизайном.
Уровень приложений может использовать свои собственные представления данных. Если вы подключите его к пользовательскому интерфейсу, прикладному уровню придется преобразовывать объекты домена для просмотра данных.
Но я бы не назвал это «моделью», разве что в смысле «модель представления».
Без подробностей сложно сказать что-то более полезное, поэтому я попытаюсь ответить на вашу проблему интеграции на примере.
Взглянув на Пример приложения Вернона, вы можете иметь службу аутентификации, изолированную от вашего потребляющего приложения. Для этого Vernon моделирует три автономных Java-приложения.
Теперь есть сервис IdentityAccess, обеспечивающий всю аутентификацию. Там вы можете создать Tenant
Сущности. Тогда есть приложение Collaboration (форум и т. Д.), Которое использует свое собственное внутреннее представление Tenant
,
Таким образом, клиентское приложение получает TenantId
и создает свой собственный Tenant
объекты, чтобы связать темы форума с арендатором. Tenant
s не изменяются и не сохраняются из этого приложения, только используются.
Ваша точка зрения может быть еще проще. Если у тебя есть Credential
Сущность (в вашем Домене) и некоторая логика аутентификации вне его заставляют «аутентификатор» реализовывать специализированный интерфейс Домена и внедрять его обратно в объекты Домена если вам действительно нужно. (Это порты & Адаптерный подход: обе стороны могут указывать интерфейсы и ждать конкретных реализаций; другая сторона реализует интерфейс и внедряет объект обратно.)
Я предполагаю, что вам не обязательно иметь доступ из вашего домена к логике аутентификации, но нам нужно увидеть больше кода, чтобы судить об этом.
Вернон использует Служба аутентификации внутри домена обрабатывать неправильные данные для входа.
Других решений пока нет …