Я отделяя мой запрос и команду на стороне службы, как это:Как вернуть результат, применяя разделение команд запроса (ОКК)
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 работает в Создать Контроллер Действие метод и не возвращает созданный продукт.
Что мы будем возвращать пользователю? Все продукты? Будет ли CQS использовать жизненный цикл приложения?
Будьте осторожны с вашей терминологией. QCS не является CQRS. Во всяком случае, см. Это сообщение в блоге: http://blog.ploeh.dk/2014/08/11/cqs-versus-server-generated-ids/ –