Ho letto .NET Domain-Driven Design con C #: Problem - Design - Solution e ho notato che il autore ha creato un servizio di dominio per ogni radice aggregata.
Tuttavia, i servizi di dominio erano solo facciate per il repository corrispondente. Ad esempio questo è un esempio di codice dall'applicazione del suo libro
public static class CompanyService
{
private static ICompanyRepository repository;
private static IUnitOfWork unitOfWork;
static CompanyService()
{
CompanyService.unitOfWork = new UnitOfWork();
CompanyService.repository =
RepositoryFactory.GetRepository<ICompanyRepository,
Company>(CompanyService.unitOfWork);
}
public static IList<Company> GetOwners()
{
return CompanyService.GetAllCompanies();
}
public static IList<Company> GetAllCompanies()
{
return CompanyService.repository.FindAll();
}
public static void SaveCompany(Company company)
{
CompanyService.repository[company.Key] = company;
CompanyService.unitOfWork.Commit();
}
public static Company GetCompany(object companyKey)
{
return CompanyService.repository.FindBy(companyKey);
}
}
Come vedi quasi tutte le chiamate ai servizi sono wrapper per le chiamate al repository. È un buon esempio nella costruzione di servizi di dominio?
Dovremmo sempre avvolgere i nostri repository nei servizi di dominio? C'è un approccio migliore?