В этом задайте кому-то ответы: "Вы никогда не позволяете реализации объектов домена сами ссылаться на службы!", Является ли это утверждение жестким правилом DDD или зависит от вашего собственного приложения и архитектуры?
Продуманный пример:
В качестве примера предположим, что у нас есть объект UserImage
в нашей модели, который заполняется пользователем из загруженного изображения. И затем давайте предположим, что мы можем отправить это изображение на стороннюю службу, которая может идентифицировать отпечатки пальцев и возвращать Guid
, если совпадение найдено.
public IThumbPrintService {
Guid FindMatch(Bitmap image);
}
public class UserImage {
public Bitmap Image {get; set;}
public Guid ThumbPrintId {get; set;}
public bool FindThumbPrintMatch() {
// Would you call the service from here?
ThumbPrintId = _thumbPrintService.FindMatch(this.Image);
return ! ThumbPrintId.CompareTo(Guid.Empty);
}
}
public class RoboCopUserImageService : IUserImageService {
// Or move the call to a service method
// since it depends on calling a separate service interface
public bool FindThumbPrintMatch(UserImage userImage) {
userImage.ThumbPrintId = _thumbPrintService.FindMatch(userImage.Image);
return !userImage.ThumbPrintId.CompareTo(Guid.Empty);
}
}
Что можно избежать или получить, если не позволить объектам домена самим обращаться к службам обслуживания?
РЕДАКТИРОВАТЬ: Есть ли хорошие онлайн-статьи, которые обсуждают эту конкретную тему?