Mais um exemplo de arquitetura em N-Camadas com .NET

Olá pessoal, tudo certo?

Semana passada estive com uma equipe de desenvolvimento, discutindo sobre alternativas para a organização em camadas de uma aplicação. Como principal característica, a solução devia compartilhar as camadas de serviços e negócio entre clientes desktop e web. Ou seja, estações clientes com desktop (para ambientes locais) e estações clientes com interface web (para ambientes remotos via rede), consumindo as mesmas interfaces de serviços e contratos de mensagens.

Imediatamente lembrei do seguinte desenho, que ilustra um projeto semelhante para submissão de relatórios de despesas (Expenses) de funcionários:
image

Veja, na camada cliente, usuários pode submeter seus expenses a partir de estações desktop ou via web, sendo que ambos consomem uma primeira interface de serviços. Na camada de serviços, podemos disparar workflows de aprovação de expenses, por exemplo, ou mesmo serviços atômicos de atualização, consulta, etc. Ao mesmo tempo, a camada de serviços pode ainda expor serviços específicos para usuários finais e para usuários responsáveis, como aprovadores, revisores, etc.

Ainda no servidor de aplicação, uma camada de negócio pode ser implementada para suporte de atividades específicas, como validação de limites de aprovação, regras de submissão, além de workflows específicos de processo, revisão e logging de mensagens.

Finalmente, uma camada de acesso a dados pode interagir tanto com bases de dados para persistência de dados e para persistência de workflows (para os casos de workflows de longa duração).

Claro que esse desenho ilustra uma visão alto nível das camadas candidatas para organização da aplicação. O desenho também dá uma idéia simplificada sobre a infraestrutura envolvida, muito simples. Poderíamos ampliar essa visão para o seguinte cenário:

image

O que achou? O desenho acima está longe de seguir um formalismo e precisão de projeto em relação ao planejamento de capacidade para o time de infraestrutura. Mas dá para ter uma ideia das tecnologias alternativas que a solução final pode aplicar. Só para citar, veja que falta  a visão sobre gerenciamento e monitoração, aspectos de integração com sistemas externos, processos de ALM envolvidos, etc.

O primeiro desenho da solução Expense em N-Camadas eu retirei do seguinte link, confira!

Layered Architecture Sample for .NET
Ref.: https://layersample.codeplex.com/

Por enquanto é só! Até o próximo post :)

Waldemir.