Como esse tipo de aplicativo e DDD se relacionam?

5

No design orientado a domínio, o aplicativo está dividido, como entendo, em quatro camadas:

  • Camada de apresentação
  • Camada de aplicativo
  • Camada de domínio
  • Camada de infraestrutura

Eu entendo isso bem, por exemplo, ao desenvolver aplicativos de área de trabalho com, por exemplo, o WPF no Windows.

Agora, há outro tipo de aplicativo que pessoalmente considero muito importante hoje. Eu não sei se há um termo técnico ainda para este tipo de aplicação (provavelmente existe, mas ainda não achei), mas vou descrevê-lo.

Temos um servidor que hospeda um aplicativo de N camadas que tem uma API da Web RESTful na qual os clientes podem fazer solicitações. As outras camadas são para processamento em segundo plano e comunicação com dispositivos, envio de notificações e assim por diante. Esse tipo de arquitetura aparece nos Serviços de Nuvem do Microsoft Azure, por exemplo, onde podemos hospedar várias funções da Web (a API da Web, por exemplo) e várias funções de trabalho (que fazem processamento em segundo plano).

Agora não vejo como relacionar isso com o tipo de divisão que DDD faz de um aplicativo.

A camada de domínio está, é claro, no servidor e as solicitações para a API, bem como o processamento em segundo plano, têm efeitos colaterais no modelo de domínio. A camada de infraestrutura também está no servidor.

No meu entendimento, a camada de aplicativo é todo esse aplicativo de N camadas (no caso do Azure, composto de todas as funções da Web e de trabalho).

Mas finalmente, não há apresentação. Essa coisa é uma API, ela foi criada para lidar com vários dispositivos. Navegadores da Web, smartphones, tablets e assim por diante.

Estou tentando me beneficiar do DDD nesse tipo de aplicativo, mas não consigo ver como ambos se relacionam. Como esse tipo de aplicativo e DDD se relacionam e como alguém pode se beneficiar do DDD nesses cenários?

    
por user1620696 18.02.2015 / 19:25
fonte

1 resposta

3

Eu não acho que eles necessariamente se relacionam. O DDD trata de projetar software de uma perspectiva de domínio de negócios, utilizando uma linguagem onipresente que você e seu cliente entendem. Muitos desenvolvedores de software confundem isso com uma técnica de programação, mas é mais uma maneira de organizar estruturas de software em potencial (ou seja, classes) em torno de conceitos de domínio de negócios. As camadas de software realmente não têm muito a ver com isso, na medida em que são apenas uma abstração diferente (mas às vezes complementar).

    
por 20.02.2015 / 01:53
fonte