 .NET - Considerações sobre arquitetura e desenho de 
aplicações
.NET - Considerações sobre arquitetura e desenho de 
aplicações
Com o aumento da utilização de linguagens e 
técnicas de programação orientada a objetos temos ouvido falar com frequência em 
desenvolvimento de aplicações em duas camadas , três camadas e n-camadas . Este 
artigo tem como objetivo abordar em linhas gerais a descrição de cada uma destas 
arquiteturas , falar das vantagens e desvantagens de cada uma bem como das 
opções de implementação pertinentes a plataforma .Net.
1-) A arquitetura de aplicação para 
duas camadas
  
    | Esta arquitetura é uma das 
    mais simples ; um exemplo bem conhecido seria uma aplicação usando ADO.NET 
    acessando diretamente um banco de dados SQL Server, Oracle , MySQL, etc. Ao 
    lado temos a figura que representa esta arquitetura. 
    Não há camadas intervindo entre a aplicação 
    cliente e o banco de dados a não ser a camada ADO.NET. |  | 
Quando usar a arquitetura de duas camadas
  - indicada para pequenas aplicações que não 
  possuem muitos formulários ou até mesmo sem formulários.
- apropriada para protótipos onde a versão 
  final da aplicação usa uma arquitetura mais complexa (três camada, n-camadas)
Opções de implementação
  - Utilizar as técnicas de vinculação de dados 
  para conectar um DataSet ADO.NET diretamente aos controles dos formulários
- Acessar via código os objetos ADO.NET para 
  carregar os dados para os controles na interface com o usuário.
- Colocar as regras de negócio via código nos 
  formulários da aplicação usando uma das técnicas acima.
Vantagens
  - O desenvolvimento da aplicação é feita de 
  forma rápida , simples , fácil e com um custo muito baixo.
- Você pode ter uma visão geral da sua 
  aplicação apenas no código dos formulários sem qualquer outro componente.
Desvantagens
  - Todas as regras de negócio estão na 
  interface com o cliente. Se você precisar alterar qualquer regra todos os 
  clientes precisarão ser alterados.
- Haverá uma grande quantidade de código 
  repetido através da aplicação pois vários formulários irão usar as mesmas 
  informações (tabelas, instruções SQL , conexões). Manter a aplicação pode se 
  tornar uma tarefa muito complexa pois qualquer alteração em um nome de campo 
  ou de tabela terá que ser feita em diversas partes da sua aplicação.
- Se houver mudanças na lógica de acesso a 
  dados sua aplicação pode se tornar inviável. Se você esta usando arquivos 
  textos ou XML para guardar os dados e depois deseja migrar para um banco de 
  dados SQL Server , MySQL , Oracle , etc. haverá necessidade de reescrever todo 
  o código de acesso a dados de sua aplicação.
2-) A arquitetura de aplicação para 
três camadas
  
    | A arquitetura em três camadas 
    é outra opção no desenho de aplicações .NET. Neste modelo podemos usar um 
    serviço Web XML para separar o acesso a fonte de dados para outro componente 
    que retorna as informações para a aplicação de frente. 
    Ao lado temos a figura que representa este 
    modelo. Esta arquitetura pode ser usada tanto para 
    aplicações baseadas em Web Forms como Windows Forms. |  | 
Quando usar a arquitetura de duas camadas
  - Indicada quando você precisa dos recursos de 
  uma aplicação desktop mas os usuários se conectam a sua aplicação de 
  diferentes locais e acessam os dados através de uma interface HTTP
Opções de implementação
  - Todo o código SQL reside em um seviço Web 
  XML. Os DataSets são construídos no servidor e retornados como um fluxo XML 
  para o cliente onde são novamente reconstruídos em um DataSet
- Os DataSets retornados de um serviço Web XML 
  podem ser vinculados manual ou diretamente aos controles de formulário.
- Todas as regras de negócios são codificadas 
  diretamente nos formulários
Vantagens
  - O desenvolvimento da aplicação é feita de 
  forma rápida , simples , fácil e com um custo muito baixo.
- Os usuários podem rodar sua aplicação de 
  qualquer (internet ou intranet)
- O acesso a fonte de dados esta separada em 
  seu próprio componente de forma que o código da aplicação de frente não possuí 
  código SQL embutido.
- A informação da conexão é mantida somente no 
  serviço XML , minimizando a manutenção do cliente.
- A camada de acesso a dados pode ser 
  atualizada em um único local centralizado. Você não precisa distribuir 
  componentes ao cliente quando houver alterações nesta camada.
Desvantagens
  - Todas as regras de negócio estão na camada 
  de frente (front-end) ou interface com o usuário. Se você precisar alterar uma 
  regra todos os clientes deverão ser atualizados.
-  Manter a aplicação pode se tornar uma 
  tarefa muito complexa pois qualquer alteração em um nome de campo ou de tabela 
  terá que ser feita em diversas partes da sua aplicação.
- O desempenho usando uma interface HTTP é 
  mais lento do que acessar diretamente a fonte de dados.
- Se não houver acesso a internet ou intranet 
  sua aplicação fica indisponível
3-) A lógica da arquitetura de 
aplicação para n-camadas
  
    | 
 O melhor modelo para construir aplicações usando a plataforma .NET é o de 
    n-camadas. Nele estamos separando todos os processos lógicos em classes.
 Em uma aplicação de negócios isto 
    geralmente envolve um componente para a regra de negócios , um componente 
    para a camada de dados e a camada da interface com o cliente que usa estes 
    componentes.  Na figura ao lado temos o desenho dos 
    processos separados em classes o que torna mais fácil criar e manter a 
    aplicação   | 
     | 
Quando usar a arquitetura de duas camadas
  - Este modelo é indicado para todos os tipos 
  de aplicações pois tem um bom desempenho tanto para pequenas , médias como 
  grandes aplicações.
Opções de implementação
  - Criar a interface com o usuário usando Web 
  Forms ou Windows Forms
- Criar as regras de negócios como um 
  componente separado em um projeto do tipo Class Library
- Cria a camada de dados como um componente 
  separado  em um projeto do tipo Class Library. Esta camada usa classes 
  que encapsulam o acesso a cada tabela. Os dataset tipados devem ser usados 
  pois fornecem a flexibilidade do dataset e tipagem para cada coluna nas 
  tabelas.
Vantagens
  - Centraliza a regra de negócios em um 
  componente facilita a manutenção , uso e reusabilidade.
- Centralizar a camada de dados em um 
  componente evita repetição de código na aplicação. Cada formulário que precisa 
  de acesso aos dados usa o mesmo componente
- Os dataset tipados fornecem o benefício da 
  tipagem de dados e do intelliSense no código.
- A centralização das rotinas de acesso aos 
  dados ajuda a manutenção pois é preciso alterar somente um único local.
- Fornece a flexibilidade de separar os 
  componentes em diferentes máquinas físicas em qualquer momento.
Desvantagens
  - O desenvolvimento é mais demorado devido a 
  necessidade de criar componentes separados
- Com mais componentes para o tratamento , a 
  lógica e o entendimento da aplicação tende a ser mais complexo.
Conclusão
Dei uma rápida visão geral dos principais tipos 
de arquitetura que podem ser consideradas na modelagem de aplicações .NET; suas 
vantagens , desvantagens e métodos de implementação.  Com isto espero 
contribuir para que você possa criar aplicações mais robustas , confiáveis e de 
fácil manutenção
Até mais... 

José Carlos
Macoratti