В CQRS должна ли моя сторона чтения возвращать DTO или ViewModels?

У меня спор с коллегами по разработке стороны чтения приложения CQRS.

Опция 1: Сторона чтения моего приложения CQRS возвращает DTO, например:

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);
    }
}

Вариант 2: Сторона чтения приложения возвращает ViewModels, например:

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));
    }
}

Из исследований, которые я и мои коллеги провели по этому вопросу, ответы кажутся смешанными - похоже, это действительно зависит от контекста. Итак, я прошу вас, мои дорогие StackOverflowians:

Кажется ли, что один подход имеет явные преимущества перед другим? Если так, то кто они?

Ответы на вопрос(4)

Ваш ответ на вопрос