Leí .NET Domain-Driven Design con C #: Problema - Diseño - Solución y noté que el autor creó un servicio de dominio para cada raíz agregada.
Sin embargo, los servicios de dominio solo eran fachadas al repositorio correspondiente. Por ejemplo, este es un ejemplo de código de la aplicación de su 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);
}
}
Como puede ver, casi todas las llamadas a los servicios son contenedores para llamadas al repositorio. ¿Es este un buen patrón al crear servicios de dominio?
¿Deberíamos siempre envolver nuestros repositorios en servicios de dominio? ¿Hay un mejor enfoque?
GetAllCompanies()envolturas repository.FindAll(). Sin embargo, ¿por qué no puedo crear un método de repositorio repository.GetAllCompanies()?