Это является частью серии, основанной на моем понимании DDD:)
Исходя из предыдущего вопроса, но базовые знания не требуются: Система использует службы WCF из другой системыкогда базовые базы данных имеют отношения
Существует система документов и система управления персоналом.Система HR должна сохранять документ, а также некоторые специфические данные HR, относящиеся к документу.
Моей первой мыслью было, что вызов к Системе документов должен быть в Службе приложений системы управления персоналом (удален код unaceacery):
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);
}
}
Таким образом, возможно, хранилище по-прежнему отвечает только за постоянство.
Я на правильных линиях здесь или далеко?