Após muito tempo sem escrever aqui, resolvi comentar sobre uma discussão que aconteceu na lista do .NetArchitects. A dúvida é sobre o que é a Camada de Aplicação em Domain Driven Design.

Não quero entrar em muitos detalhes sobre o que é Domain Driven Design, mas isolar seu domínio é algo fundamental. O Capítulo 4 — Isolating the Domain, do livro azul, discorre sobre o tema e introduz a noção de Arquitetura em Camadas (Layered Architecture). Divisão em camadas não é nenhuma novidade, mas Evans mostra como a arquitetura em camadas pode ser utilizada como mecanismo de isolamento do domínio. No livro, as camadas são separadas assim:

Essas camadas são formas de organizar as dependências dentro da sua aplicação. User Interface, Domain e Infrastructure são velhas conhecidas e normalmente não existe muita dúvida sobre quais são as responsabilidades de cada uma. Agora, o que é a Application Layer?