Это часть серии, основанной на том, как я разбираюсь в DDD :)
Следуя предыдущему вопросу, но фоновые знания не требуются: databases-have">Система, использующая службы WCF из другой системы, когда базовые базы данных имеют отношения
Есть система документов и система управления персоналом. Системе управления персоналом необходимо сохранить документ, а также некоторые специфические для отдела кадров данные, относящиеся к документу.
Моя первая мысль заключалась в том, что вызов Document System должен быть в службе приложений системы управления персоналом (удален ненужный код):
public class HRDocumentService
{
public void SaveDocument(string filename, string employee)
{
long documentLibraryId = _documentLibraryService.SaveDocument(filename);
HRDocument hrDocument = HRDocument.CreateDocument(documentLibraryId, employee);
_hrDocumentRepository.Save(hrDocument);
}
}
а репозиторий такой:
public class HRDocumentRepository
{
public long Save(HRDocument hrDocument)
{
_session.Save(hrDocument);
}
}
Но Джек Чарльтон говорит в этой статье "Что скрывается за репозиторием? Почти все, что вам нравится. Да, вы не ослышались. У вас может быть база данных или у вас может быть много разных баз данных. Вы можете использовать реляционные базы данных или объектные базы данных. база данных в памяти или синглтон, содержащий список элементов в памяти. У вас может быть уровень REST, или набор сервисов SOA, или файловая система, или кеш в памяти…»
Итак, теперь я думаю, что сервис должен быть таким:
public class HRDocumentService
{
public void SaveDocument(string filename, string employee)
{
HRDocument hrDocument = HRDocument.CreateDocument(documentLibraryId, employee);
_hrDocumentRepository.Save(hrDocument);
}
}
и вызывает службу библиотеки документов в репозитории следующим образом:
public class HRDocumentRepository
{
public long Save(HRDocument hrDocument)
{
long documentLibraryId = _documentLibraryService.SaveDocument(filename);
hrDocument.DocumentLibraryId = documentLibraryId;
_session.Save(hrDocument);
}
}
Таким образом, возможно, репозиторий по-прежнему отвечает только за сохранение.
Я на правильном пути здесь или далеко?