Tôi đã đọc .NET Domain-Driven Design với C #: Problem - Design - Solution và tôi nhận thấy rằng tác giả đã tạo ra một dịch vụ miền cho mỗi gốc tổng hợp.
Tuy nhiên, các dịch vụ miền chỉ là mặt tiền của kho lưu trữ tương ứng. Ví dụ, đây là một mẫu mã từ ứng dụng từ cuốn sách của anh ấy
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);
}
}
Như bạn thấy hầu hết tất cả các cuộc gọi đến dịch vụ đều là trình bao bọc cho các cuộc gọi kho lưu trữ. Đây có phải là một mô hình tốt khi xây dựng các dịch vụ tên miền?
Chúng ta có nên luôn luôn lưu trữ các kho lưu trữ của chúng tôi trong các dịch vụ tên miền? Có một cách tiếp cận tốt hơn?
GetAllCompanies()
kết thúc tốt đẹp repository.FindAll()
. Tuy nhiên, tại sao tôi không thể tạo một phương thức lưu trữ repository.GetAllCompanies()
thay thế?!