En CQRS, ¿debería mi lado de lectura devolver DTO o ViewModels?

Estoy teniendo un debate con mis compañeros de trabajo sobre el diseño del lado de lectura de una aplicación CQRS.

Opción 1 El lado de lectura de la aplicación de mi aplicación CQRS devuelve DTO, por ejemplo:

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

Opcion 2 El lado de lectura de la aplicación devuelve ViewModels, por ejemplo

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

De la investigación que mis compañeros de trabajo y yo hemos hecho sobre el tema, las respuestas parecen mixtas, parece que realmente depende del contexto. Entonces les pregunto, mis queridos StackOverflowians:

¿Un enfoque parece tener claras ventajas sobre el otro? ¿Si es así, Que son

Respuestas a la pregunta(4)

Su respuesta a la pregunta