Tworze nowy projekt i brakuje mi wiedzy i doświadczenia odnośnie tego gdzie i co wrzucać.
Moja solucja to aplikacja angularowa SPA, WebApi dla tej aplikacji, infrastruktura do komunikacji z db, mikroserwisami i domena.
Zastanawiam się gdzie umieszczać odpowiednie rzeczy.
- Czy komendy / zapytania z CQRS powinny być w projekcie Domain tam gdzie modele domenowe? W końcu są to czyste klasy POCO bez zachowania
- Czy CommandHandlery powinni być w projekcie Web tam gdzie WebApi czy w Infrastrukturze tam gdzie serwisy integrujące?
- Czy QueryHandlery powinny być w Infrastrukturze bo jest to miejsce najbliżej bazy danych - źródła danych?
- Czy CommandBus powinno coś zwracać? Czy sama komenda coś powinna zwracać?
- CQRS i restful api
Mam komendę:
public class CashCaseCloseCommand : ICommand
{
public Guid Id { get; set; }
}
I teraz api kontolerów:
[HttpPatch]
public IHttpActionResult Patch([FromBody] CashCaseCloseCommand command)
{
this._commandBus.Send(command);
return Ok();
}
[HttpPatch, Route("{id:Guid}/close")]
public IHttpActionResult Patch([FromUri] Guid id)
{
this._commandBus.Send(new CashCaseCloseCommand { Id = id });
return Ok();
}
Które podejście jest lepsze?