Где должны выполняться реализации службы домена в структуре проекта DDD? Если у нас есть реализация IDomainInterface
и DomainInterface
, должна ли реализация DomainInterface
быть частью инфраструктуры или ядра/домена решения/проекта?DDD: Где разместить реализацию доменных служб
ответ
Домены службы домена и их реализация могут находиться в доменном слое. Однако, если реализация службы домена зависит от требований к инфраструктуре, то, применяя принцип инверсии зависимостей, реализация будет жить на уровне инфраструктуры, в то время как в зависимости от интерфейса, определенного в домене.
Большинство доменных служб не должны зависеть от проблем с инфраструктурой и будут использоваться для моделирования случаев использования, которые не могут найти естественный дом в рамках существующего агрегата, но некоторые службы домена будут.
Хранилища являются наиболее распространенными службами домена, требующими знания в области инфраструктуры, и поэтому вы найдете их реализацию, живущую на уровне инфраструктуры, но есть и другие примеры.
Например, в идентификации & доступа в IDDD в ограниченном контексте EncryptionService интерфейса жизни в области в то время как конкретная реализация MD5EncryptionService живет в инфраструктуре.
Как интерфейс, так и реализация службы домена должны находиться на уровне домена (ядра). Более конкретно интерфейс и реализация должны находиться в одном модуле (пространстве имен) в качестве объектов домена, используемых службой.
Место реализации - это то, что определяет, какой тип обслуживания он представляет, например, приложение, домен или инфраструктуру.
Остерегайтесь моделирования концепций домена как служб, так как это может привести к anemic domain model, где логика домена находится в сервисах, а не в объектах и объектах значений.
Этот ответ крайне неверен. Например, репозиторий - это служба домена, и его реализация не должна жить в домене. – plalx
Я согласен с тем, что реализация репозитория не должна жить в домене, поскольку это служба инфраструктуры, поэтому ** не ** служба домена. Другие заявили то же самое: «Реализация хранилища также является примером инфраструктурной службы». - http://gorodinski.com/blog/2012/04/14/services-in-domain-driven-design-ddd/ и http://stackoverflow.com/a/2279729/441292 – Martin4ndersen
С точки зрения домена любая сервисный интерфейс, определенный в домене, является службой домена, независимо от ее реализации. – plalx
- 1. DDD: Где разместить события домена
- 2. DDD Где разместить преобразование изображения
- 3. Служба доменных служб WCF RIA
- 4. Аудит доменных служб Active Directory
- 5. DDD: путаница в отношении хранилища/доменных границ
- 6. Где поставить «лишнюю» реализацию?
- 7. Клонировать службы доменных служб Active Directory
- 8. Услуги доменных служб SonarQube и Azure
- 9. Установка доменных служб Active Directory в C#
- 10. Услуги доменных служб и приложений для графических приложений
- 11. DDD/CQRS: где упорствовать
- 12. DDD - Идентификация сущностей, корней и служб
- 13. Где разместить этот инвариант?
- 14. DDD, PHP - где выполнить проверку?
- 15. Где создать реализацию интерфейса?
- 16. DDD-сопоставление моделей данных модели сущностей для доменных моделей
- 17. Где поставить «классы ViewModel» в подход DDD?
- 18. DDD и ASP.NET - где вы используете репозитории?
- 19. Приложение DDD Sample - Где hsqldb?
- 20. DDD: Где создавать объекты сущностей?
- 21. Где находится логгер в DDD?
- 22. Где находится файл служб?
- 23. ddd - Где должна синхронизироваться с удаленным API?
- 24. Где не использовать реализацию IDisposable?
- 25. Где можно найти реализацию tf.image.resize_bicubic?
- 26. Настройка доменных служб Active Directory на Windows Server 2012
- 27. Домены также заменяют инъекции доменных служб на сущности?
- 28. Тестирование доменных служб с использованием реальной базы данных
- 29. Реализация доменных служб как методы расширения для репозитория
- 30. Получение папки доменных служб Active Directory и/или DistingiushedName
Доменные службы не имеют ничего общего с инфраструктурой –
Только инфраструктура касается, например. репозиторий, будет реализован на уровне инфраструктуры. Служба домена и ее взаимодействие с репозиторием будут реализованы на уровне домена. [AuthorizationService] (https://github.com/VaughnVernon/IDDD_Samples_NET/blob/90fcc52d9c1af29640ec2a8a3e0e7c692f3e6663/iddd_identityaccess/Domain.Model/Access/AuthorizationService.cs) из [Реализация проекта, управляемого доменом] (https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577) является одним из таких примеров. – Martin4ndersen
@AlexeyZimarev Репозиторий - это служба домена. Большинство доменных служб не должны зависеть от деталей инфраструктуры, хотя некоторые из них будут.Например, у вас может быть служба домена шифрования в ограниченном контексте Identity & Access, где реализация поддерживается в инфраструктуре, поскольку она использует некоторую стороннюю библиотеку шифрования. – plalx