Witam, dopiero co poznaje sposób tworzenia oprogramowania opartego o DDD, więc proszę o wyrozumiałość. Czytam i oglądam różne tutoriale i spotkałem intrygujące mnie podejście. Mianowicie, tak jak w tytule serwisy domenowe zostały opakowane o dodatkowe serwisy aplikacji. Czyli dajmy na to:
Produkt serwisu domeny
public class ProductService : Service<Product>, IProductService
{
private readonly IProductRepository _repository;
public ProductService(IProductRepository repository)
:base(repository)
{
this._repository = repository;
}
public IEnumerable<Product> FindByName(string name)
{
return _repository.FindByName(name);
}
}
Produkt serwisu aplikacji
public class ProductService : Service<Product>, IProductService
{
private readonly IProductService _productService;
public ProductService(IProductService productService)
:base(productService)
{
this._repository = repository;
}
public IEnumerable<Product> FindByName(string name)
{
return _productService.FindByName(name);
}
}
Zastanawiam się dlaczego została zrobiona dodatkowa warstwa serwisów? Czy nie lepiej wywoływać w kontrolerach, metody serwisów domenowych? Wiem, że w DDD model dzielony jest na logikę biznesową i logikę aplikacji, tutaj częściowo zostało to zrealizowane tylko miałem pewność, że w serwis aplikacji będzie odgrywał inna rolę np. autoryzacje, zabezpieczania a nie korzystał z logi domeny? No chyba, że jest w tym jakiś ukryty sens, którego nie dostrzegam, tak więc prosiłbym o pomoc i dyskusje.
Pozdrawiam.