O App Arch Guide 2.0 (Microsoft patterns&practices), Capítulo 6, fala sobre estilos de arquitetura como MEssage-Bus, Arquitetura em Camadas, SOA. Além destes estilos há vários padrões arquiteturais, como Plug-in, Peer-to-Peer, Publish-Subscribe. Alguns autores fazem diferença entre estilos, padrões e metáforas de arquitetura.
O que é um estilo arquitetural? De acordo com o App Arch Guide, um estilo arquitetural é:
Um conjunto de princípios. Você pode pensar nisso como um padrão granular que oferece um framework abstrato para uma família de sistemas. Um estilo arquitetural melhora o particionamento e promove reuso de design fornecendo soluções para problemas recorrentes.
Os autores do guia listam vários estilos arquiteturais:
Estilo de Arquitetura Descrição Client-Server Se grega o sistema em duas aplica,ão, onde o cliente faz uma requisição de serviço ao servidor. Arquitetura baseada em Componentes Decompõe o design da aplicação em componentes lógicos e funcioais que são independentes de local e expõe interfaces de comunicação bem definidas. Arquitetura em Camadas Separa as respnsabilidades da aplicação em grupos bem definidos (camadas). Message-Bus Um sistema de software que pode receber e enviar mensagens baseado em um conjunto de formatos conhecidos, de forma que sistemas possam se comunicar uns com os outros sem necessidade de conhecer o destinatário atual. N-tier / 3-tier Separa funcionalidade em segmentos de forma muito similar ao estilo de camadas, mas com cada segmento sendo uma camada localizado fisicamente em um computador separado. Orientado a Objetos Um estilo arquitetural baseado na divisão de tarefas para uma aplicação ou sistema em reutilização individual e objetos auto-suficientes, cada um contendo os dados e comportamentos relevantes ao objeto. Apresentação Separada Separa a lógica paragerenciar a interação do usuário da visualização da interface de usuário (UI) e dos dados com os quais o usuário trabalha. Service-Oriented Architecture (SOA) Refere-se a aplicações que expõe e consome funcionalidades como um serviço usando contratos e mensagens.
Cada um desses estilos são aplicados a áreas específicas de interesseL
Categoria Estilos de Arquitetura COmunicação Service-Oriented Architecture (SOA), Message Bus, Pipes e Filtros Deployment Client/server, 3-Tier, N-Tier Domain Domain Model, Gateway Interação Apresentação Separada Estrutura Baseado em Componentes, Orientado a Objetos, Arquitetura em Camadas
J.D. Meier, resumindo alguns pontos chave do livroA Practical Guide to Enterprise Architecture por James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, e Elias K. Jo, notou uma diferença sutil entre estilos e padrões arquiteturais:
- Um estilo arquitetural é um conceito orgnizacional, central de um sistema.
- Um padrão arquitetural descreve uma solução granular a nível de sub-sistemas ou módulos e seus relacionamentos.
- Uma metáfora de sistema é mais conceitual e relacionada mais ao conceito do mundo real do que ao coneito da engenharia de software.
David Calvert fez em 1996 uma lista parcial de estilos/padrões arquiteturais:
- Dataflow Systems -- Batch sequential, Pipes e filters.
- Call-and-return systems -- Programa principal e sub-rotinas, Sistemas OO, Camadas hierárquicas.
- Independent components -- Processos de comunicação, Sistemas de eventos.
- Virtual Machines -- Interpretadores, sistemas baseados em regras.
- Data-centered systems (repositórios) -- Databases, sitemas de Hypertexto, quadros negros.
Outros estilos/padrões mais modernos são: Plugin, Peer-to-Peer, Shared Nothing Architecture, Representational State Transfer (REST), Front-end e back-end. Há uma lista mais completa no Wikipedia.