KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm having a debate with my coworkers in the design of the read side of a CQRS application. Option 1: The application read side of my CQRS application returns DTOs, e.g: public interface IOrderReadService { public OrderDto Load(int id); } public class SomeController { public ActionResult SomeAction(int id) { var dto = ObjectFactory.GetInstance<IOrderReadService>().Load(id); var viewModel = Mapper.Map<OrderDto, SomeViewModel>(); return View(viewModel); } } public class SomeOtherController { public ActionResult SomeOtherAction(int id) { var dto = ObjectFactory.GetInstance<IOrderReadService>().Load(id); var viewModel = Mapper.Map<OrderDto, SomeOtherViewModel>(); return View(viewModel); } } Option 2: The application read side returns ViewModels, e.g.: public interface IOrderReadService { public SomeViewModel LoadSomething(int id); public SomeOtherViewModel LoadSomethingElse(int id); } public class SomeController { public ActionResult SomeAction(int id) { return View(ObjectFactory.GetInstance<IOrderReadService>().LoadSomething(id)); } } public class SomeOtherController { public ActionResult SomeOtherAction(int id) { return View(ObjectFactory.GetInstance<IOrderReadService>().LoadSomethingElse(id)); } } From the research my coworkers and I have done on the matter, responses appear mixed - it looks like it really depends on context. So I ask you, my dear StackOverflowians: Does one approach seem to have clear advantages over the other? If so, what are they?
Tags (comma-separated)
Save Edits
Cancel