.NET - Estilos de Arquitetura e Padrões de Arquitetura
Hoje vamos apresentar os conceitos de estilos de arquitetura e padrões de arquitetura e tentar entender a diferença existente entre eles. |
Antes de entrar no assunto do artigo precisamos definir o que é arquitetura de software, e vamos recorrer à MSDN que diz o seguinte:
"Arquitetura de aplicativo de software é o processo de definição de uma solução estruturada que atenda a todos os requisitos técnicos e operacionais, ao mesmo tempo em que otimiza atributos comuns de qualidade, como desempenho, segurança e capacidade de gerenciamento. Envolve uma série de decisões baseadas em uma ampla gama de fatores, e cada uma dessas decisões pode ter um impacto considerável na qualidade, desempenho, capacidade de manutenção e sucesso geral do aplicativo."
Não existe um consenso entre os conceitos de estilos de arquitetura e padrões de arquitetura; inclusive, para a MSDN estilos e padrões de arquitetura são a mesma coisa.
Veja a definição da MSDN : "Um estilo de arquitetura, às vezes chamado de padrão de arquitetura, é um conjunto de princípios - um padrão que fornece uma estrutura abstrata para uma família de sistemas..."
Eu não acho que seja tão simples assim, então vou apresentar outra visão para este problema e você decide.
Vamos encontrar definições distintas para este conceito como segue:
O estilo de arquitetura é uma solução muito específica para um software específico, que normalmente se concentra em como organizar o código criado para o software.
Ele se concentra em criar as camadas e módulos do software e permitir uma interação apropriada entre os vários módulos para dar os resultados corretos na implementação.
Um
padrão arquitetônico é a descrição dos tipos e
elementos de relacionamento junto com um conjunto de restrições para implementar
um sistema de software. Os padrões geralmente são soluções reutilizáveis para
problemas ou modelos comuns.
De qualquer forma, é importante reforçar a idéia de que
Estilos Arquitetônicos, Padrões Arquitetônicos e Padrões de Projeto não
são mutuamente exclusivos, são complementares e todos podem nos ensinar algo,
embora, como de costume, devam ser usados apenas quando necessário.
Estilos arquitetônicos
Os estilos arquitetônicos nos dizem, de forma
geral, como organizar nosso código. É o nível mais alto de granularidade
e é usado para especificar camadas, módulos de alto nível do aplicativo e como
esses módulos e camadas interagem entre si, definindo as relações entre eles.
Exemplos de estilos arquitetônicos:
Um Estilo de Arquitetura pode ser implementado de várias maneiras, com um ambiente técnico específico, políticas, estruturas ou práticas específicas.
Padrões Arquitetônicos
Um padrão é uma solução recorrente para um problema recorrente. No caso dos
Padrões Arquitetônicos, eles resolvem os problemas
relacionados ao Estilo Arquitetônico.
Por exemplo:
"quais classes teremos e como elas interagirão, a fim de implementar um sistema com um conjunto específico de camadas",
ou
"quais módulos de alto nível teremos em nossa Arquitetura Orientada a Serviços e como eles se comunicarão" ,
ou
“quantas
camadas nossa arquitetura cliente-servidor terá“.
Os padrões arquitetônicos têm um impacto extenso na base do código, na maioria
das vezes impactando todo o aplicativo horizontalmente (ou seja, como
estruturar o código dentro de uma camada) ou verticalmente (ou seja, como
uma solicitação é processada das camadas externas para as internas).
Exemplos de padrões arquitetônicos:
Dessa forma podemos distinguir entre estilo e padrão de arquitetura com base no escopo de atuação. Assim :
Além disso, um padrão pode ser usado como padrão de arquitetura ou padrão de projeto, novamente dependendo do escopo em que o usamos, em um projeto específico.
E estamos conversados...
"Não se turbe o
vosso coração; credes em Deus, crede também em mim.
Na casa de meu Pai há muitas moradas; se não fosse assim, eu vo-lo teria dito.
Vou preparar-vos lugar."
João 14:1,2
Referências:
Padrões de Projeto - O modelo MVC - Model ...
Design Patterns - Identificando e Aplicando padrões
.NET - Você já esta usando Padrões de Projeto ...
NET - Usando padrões de projeto e princípios .