Arquitetura multicamada: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m v1.43b - Corrigido usando WP:PCW (Duplo travessão numa única ligação)
Foi descrito de forma mais abrangente o conceito de arquitetura multicamada, dando exemplos de duas, suas vantagens e desvantagens.
Etiquetas: Possível conteúdo ofensivo Editor Visual
Linha 1:
Em [[Engenharia de software]], a arquitetura em camadas (mais conhecida como arquitetura multicamadas) é um sistema [[Cliente-servidor|Cliente-Servidor]] onde as camadas de apresentação, processamento de aplicativos e gerenciamento de dados são separados
{{Sem-fontes|data=fevereiro de 2016}}
{{Reciclagem|data=janeiro de 2012}}
Um programa de aplicação em '''n camadas''' é um [[aplicativo]] desenvolvido de forma a ter várias camadas lógicas. Cada camada é auto-contida o suficiente de forma que a aplicação pode ser dividida em vários [[computador]]es em uma [[Rede de computadores|rede]] distribuída.
 
A arquitetura em camadas pode ser definida como um processo de decomposição de sistemas complexos em camadas para facilitar a compreensão do mesmo, como também, facilitar a manutenção deste sistema, ainda afirma que, esta técnica foi emprestada da arquitetura de computadores, que utilizam camadas de chamada ao sistema operacional, drivers e afins.
A forma mais comum da [[Arquitetura de computadores|arquitetura]] é a [[Modelo em três camadas|aplicação em três camadas]] ('''''3-Tier'''''), comumente usada em aplicações web, na qual as camadas são:
* [[interface]] com o [[usuário]] (Camada de Apresentação);
* lógica do negócio (Camada de Negócio); e
* [[banco de dados]] (Camada de Dados).
 
== Arquiteturas clássicas ==
Cada camada desta arquitetura é normalmente mantida em um [[servidor]] específico para tornar-se mais escalonável e independente das demais. Com o mesmo objetivo são utilizadas tecnologias de [[middleware]] como, por exemplo, [[CORBA]], [[Web Services]] ou [[RMI]].
Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar os serviços em uma camada inferior, mas não o oposto.
 
=== Camada de apresentação ===
Esta arquitetura tem como características:
A camada de apresentação é responsável pela apresentação, interação do usuário e recebimento de dados processados pelo software bem como suas funções.
* Baixos custos de disponibilização;
 
* Baixos custos na mudança da base de dados;
Em sistemas distribuídos, existem duas alternativas para apresentação:
* Baixos custos na mudança da lógica de negócios;
 
* Eficiente armazenamento e reutilização de recursos.
* Usando um navegador web, todo o conteúdo e formulário de uma aplicação web clássica são apresentados em [[XML]], [[XHTML]] E [[JavaScript]], entre outras linguagens criadas para a [[World Wide Web]]. Sua comunicação com camadas é geralmente feita através do [[Hypertext Transfer Protocol|HTTP]].
* Usando um cliente gordo, você produz sua própria interface gráfica do usuário. Usando as opções de exibição estendida da linguagem de programação ou da biblioteca gráfica para essa finalidade, como Flash ou [[Swing (Java)|Java Swing]] se comunicando com a camada de aplicativos por meio de protocolos de rede, como [[SOAP]], Microsoft NET Remoting, entre outros.
 
=== Camada de controle ===
A camada de controle é responsável por comandar o fluxo de dar apresentação servindo como uma camada intermediária entre a camada de apresentação e a lógica.
 
=== Camada lógica de negócios ===
A camada lógica de negócios se refere a implementação de regras de negócio ou requisitos do sistema.
 
=== Camada de acesso a dados ===
A camada de dados inclui as técnicas de persistência de dados (compartilhamento de arquivos, servidores de banco de dados e etc) e a camada de acesso a dados que encapsula os mecanismos e expõe os dados. O armazenamento persistente geralmente usa [[banco de dados]], mas outros sistemas podem usar arquivos normais.
 
Ao utilizar banco de dados, as interfaces deles são usadas para troca de dados com a camada de preservação de dados. Quando programação orientada a objetos em conjunto com um DBMS relacional, a camada de acesso a dados requer mapeamento relacional de objeto.
 
=== Injeção de Dependências ===
A responsabilidade para a apresentação e interação do usuário reside nos componentes da primeira camada. Esses componentes clientes permitem ao usuário interagir com os processos da segunda camada de uma maneira segura e intuitiva. O [[WebSphere Application Server]] suporta diversos tipos de cliente. Os clientes não acessam os serviços da terceira camada diretamente. Por exemplo, um componente cliente fornece um formulário no qual um cliente faz um pedido de produtos. O componente do cliente enviar esse pedido aos processos da segunda camada, que verificam os bancos de dados do produto e executam tarefas necessárias para o faturamento e a remessa.
 
== Vantagens e Desvantagens ==
'''Vantagens'''
 
As principais vantagens desse tipo de arquitetura são:
 
* Isola funções do [[Sistemas operacionais|SO]] facilitando sua manutenção e depuração;
* Cria uma hierarquia de níveis de modos de acesso, protegendo as camadas mais internas.
 
'''Desvantagens'''
 
As principais desvantagens desse tipo de arquitetura são:
 
* Desempenho: cada nova camada implica uma mudança no modo de acesso;
* Atualmente, a maioria dos sistemas comerciais utiliza o modelo de duas camadas, onde existem os modos de acesso usuário (não-privilegiado) e [[Núcleo (sistema operacional)|kernel]] (privilegiado);
* A maioria das versões do [[Unix|UNIX]] e o Windows da Microsoft estão baseadas neste modelo.
 
== Arquitetura Duas Camadas ==
A arquitetura duas camadas é uma arquitetura que consiste em duas camadas de software. Onde somente o maior pode acessar a camada inferior, a camada inferior é um provedor de serviços do mais alto. Portanto, frequentemente se fala de uma arquitetura cliente-servidor.
 
As arquiteturas cliente-servidor não precisam necessariamente ser realizadas por meio de diferentes computadores, mas o cliente também pode ser entendido como um módulo de software que acessa um segundo módulo de software no mesmo computador, geralmente dentro do mesmo aplicativo. No entanto, o exemplo dado na figura usa uma arquitetura cliente-servidor do lado do computador.
 
== Arquitetura Três Camadas ==
A arquitetura três camadas é uma arquitetura que possui três camadas de software, sendo elas camada do cliente, camada lógica e camada de dados. Em discrepância com a arquitetura duas camadas, há uma camada adicional sendo geralmente a camada lógica que executa o processamento de dados.
 
Todas as três camadas devem comunicar-se entre si. Protocolos abertos, padrões e APIs expostas simplificam essa comunicação. É possível criar os componentes do cliente em qualquer linguagem de programação, como [[Java (linguagem de programação)|Java]] ou [[C++]]. Esses clientes são executados em qualquer sistema operacional, conversando com a camada lógica do aplicativo. Os bancos de dados na terceira camada podem ser de qualquer design se a camada de aplicativo puder consultá-los e manipulá-los. A chave para esta arquitetura é a camada de lógica.<ref>{{Citar web|url=https://www.ibm.com/support/knowledgecenter/pt-br/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/covr_3-tier.html|titulo=IBM Knowledge Center|acessodata=2018-09-08|obra=www.ibm.com|lingua=pt-BR}}</ref>
 
== Modelo de Camadas em Sistemas Operacionais ==
Um modelo de camada, também chamado de modelo shell , é um dos três principais modelos de arquitetura de sistemas operacionais. Além do kernel monolítico e do microkernel, existe o modelo de camada. No modelo de camada, os vários componentes do sistema operacional são construídos um no outro, como shells. Isso também pode ser visto na figura ao lado.
 
As transições entre as camadas são formadas por interfaces, onde as transições devem ser limpas, não há saltos (por exemplo, de um programa aplicativo diretamente para a estrutura de dados). A comunicação ocorre através das interfaces de cada camada intermediária individual.
 
Em geral, quanto mais próxima a camada estiver do hardware, mais privilegiada será a permissão de leitura e gravação. A transição do modo kernel para o modo usuário pode ser difícil de demarcar.
 
== Rastreabilidade ==
A cada dia o rastreamento de ponta a ponta da comunicação entre camadas ficam mais importante em sistemas complexos, podendo ser implementado por meio do padrão de medição de resposta de aplicativos mediante as transações associados de cada camada.
 
== Ver também ==