Compreendendo o padrão de comando em um contexto DDD

Estive recentemente lendo este artigo aqui:https://cuttingedge.it/blogs/steven/pivot/entry.php?id=100. Parece falar sobre o uso de comandos (http://www.dofactory.com/net/command-design-pattern) em vez de serviços de aplicativos.

Por favor veja o código abaixo:

public sealed class ShipmentController
{
    private readonly ICommandDispatcher dispatcher;

    public void ShipOrder(ShipOrder cmd) => dispatcher.Dispatch(cmd);
}

sealed class CommandDispatcher : ICommandDispatcher
{
    private readonly Container container;

    public void Dispatch(dynamic cmd) => GetHandler(cmd.GetType()).Handle(cmd);

    private dynamic GetHandler(Type type) =>
        container.GetInstance(typeof(ICommandHandler<>).MakeGenericType(type));
}

que substitui código como este:http://www.zankavtaskin.com/2013/11/applied-domain-driven-design-ddd-part-6.html

Eu tenho três perguntas:

1) Isso significa que você deve ter um comando por solicitação de comando na camada de serviço de aplicativo? Isso não resultaria em explosão de classe, por exemplo se você tiver 100 comandos?

2) O que você faz com as consultas do CQRS? Você cria serviços de aplicativos regulares para eles?

3) O que você faz com os cenários em que extrai do banco de dados (faça um pedido); execute um comando no pedido, por exemplo CalculateTax e depois persiste no banco de dados? Eu suponho que o fluxo seria (isso é certo):

MVC 
Application Service (to extract order from database)
Command (Application Service calls CalculateTaxCommand)

questionAnswers(1)

yourAnswerToTheQuestion