我在服務端分開我的查詢和命令如下:如何返回結果,而將命令查詢分離(CQS)
public class ProductCommandService{
void AddProduct(Product product);
}
public interface ProductQueryService{
Product GetProduct(Guid id);
Product[] GetAllProducts();
}
Command Query Separation接受的方法應該改變狀態或返回結果。沒有問題。
public class ProductController: ApiController{
private interface ProductCommandService commandService;
private interface ProductQueryService queryService;
[HttpPost]
public ActionResult Create(Product product){
commandService.AddProduct(product);
return ???
}
[HttpGet]
public Product GetProduct(Guid id){
return commandService.GetProduct(id);
}
[HttpGet]
public Product[] GetAllProducts(){
return queryService.GetAllProducts();
}
}
我申請上的服務側命令查詢分離,但在控制器類不應用。因爲用戶可能想要查看創建的產品結果。但commandService在中創建控制器操作metod並不返回創建的產品。
我們將返回給用戶什麼?所有產品? CQS是否適用於應用程序生命週期?
小心你的術語QCS不是CQRS。無論如何,看到這篇博客文章:http://blog.ploeh.dk/2014/08/11/cqs-versus-server-generated-ids/ –