Vi várias postagens de trabalho de desenvolvedor recentemente que incluem uma frase mais ou menos assim: "Deve ter experiência com a arquitetura N-Tier" ou "Deve ser capaz de desenvolver aplicativos N-Tier".
Isso me leva a perguntar: o que é arquitetura N-Tier? Como alguém ganha experiência com isso?
architecture
n-tier-architecture
multi-tier
Joshua Carmody
fonte
fonte
Respostas:
Wikipedia :
É discutível o que conta como "camadas", mas, na minha opinião, precisa pelo menos cruzar a fronteira do processo. Ou então é chamado de camadas. Mas, ele não precisa estar em máquinas fisicamente diferentes. Embora eu não recomende, você pode hospedar camada lógica e banco de dados na mesma caixa.
Editar : Uma implicação é que a camada de apresentação e a lógica (às vezes chamada de Business Logic Layer) precisam cruzar os limites da máquina "através do fio" às vezes em redes não confiáveis, lentas e / ou inseguras. Isso é muito diferente do aplicativo de área de trabalho simples, onde os dados residem na mesma máquina que os arquivos ou aplicativos da Web, onde você pode acessar diretamente o banco de dados.
Para a programação em n camadas, você precisa empacotar os dados em algum tipo de forma transportável chamada "conjunto de dados" e executá-los rapidamente. A classe DataSet do .NET ou o protocolo de Serviços da Web, como o SOAP, são algumas dessas tentativas de passar objetos por fios.
fonte
É baseado em como você separa a camada de apresentação da lógica de negócios principal e do acesso a dados ( Wikipedia )
fonte
É uma palavra da moda que se refere a coisas como a arquitetura normal da Web com, por exemplo, Javascript - ASP.Net - Middleware - camada de banco de dados. Cada uma dessas coisas é uma "camada".
fonte
Retirado do site da Microsoft .
fonte
Se eu entendo a pergunta, parece-me que o interlocutor está realmente perguntando "OK, então o nível 3 é bem compreendido, mas parece que há uma mistura de hype, confusão e incerteza em torno do que o nível 4 ou generalizar, arquiteturas de camada N significam. Então ... qual é a definição de camada N que é amplamente entendida e acordada? "
Na verdade, é uma pergunta bastante profunda e, para explicar o porquê, preciso ir um pouco mais fundo. Tenha paciencia comigo.
A arquitetura clássica de três camadas: banco de dados, "lógica de negócios" e apresentação, é uma boa maneira de esclarecer como respeitar o princípio da separação de preocupações. Ou seja, se eu quiser mudar a forma como "a empresa" deseja atender os clientes, não precisarei examinar todo o sistema para descobrir como fazer isso e, em particular, as decisões sobre questões de negócios não devem ser dispersas quer ou não através do código.
Agora, esse modelo serviu bem por décadas e é o modelo clássico de 'cliente-servidor'. Avanço rápido para as ofertas na nuvem, em que os navegadores da web são a interface do usuário para um conjunto amplo e fisicamente distribuído de usuários, e normalmente é necessário adicionar serviços de distribuição de conteúdo, que não fazem parte da arquitetura clássica de três camadas (e que precisam ser gerenciados por direito próprio).
O conceito generaliza quando se trata de serviços, microsserviços, como dados e computação são distribuídos e assim por diante. Se algo é ou não uma 'camada', tudo se resume a saber se a camada fornece ou não um modelo de interface e implantação para serviços que estão por trás (ou abaixo) da camada. Portanto, uma rede de distribuição de conteúdo seria uma camada, mas um serviço de autenticação não seria.
Agora, leia outras descrições de exemplos de arquiteturas de N camadas com esse conceito em mente e você começará a entender o problema. Outras perspectivas incluem abordagens baseadas em fornecedor (por exemplo, NGINX), balanceadores de carga com reconhecimento de conteúdo, serviços de isolamento e segurança de dados (por exemplo, IBM Datapower), os quais podem ou não agregar valor a uma determinada arquitetura, implementação e casos de uso.
fonte
Entendo que o N-Tier separa a lógica comercial, o acesso e os dados do cliente usando máquinas físicas separadas. A teoria é que um deles pode ser atualizado independentemente dos outros.
fonte
Aplicativos de dados de camada N são aplicativos de dados separados em várias camadas. Também chamados de "aplicativos distribuídos" e "aplicativos de várias camadas", os aplicativos de camada n separam o processamento em camadas discretas distribuídas entre o cliente e o servidor. Ao desenvolver aplicativos que acessam dados, você deve ter uma separação clara entre as várias camadas que compõem o aplicativo.
E assim por diante em http://msdn.microsoft.com/en-us/library/bb384398.aspx
fonte
Ao construir o MCV usual (uma arquitetura de três camadas), pode-se decidir implementar o MCV com interfaces de dois andares, de modo que se possa substituir um nível específico sem precisar modificar nem mesmo uma linha de código.
Muitas vezes vemos os benefícios disso , por exemplo, em cenários em que você deseja poder usar mais de um banco de dados (nesse caso, você tem uma interface dupla entre o controle e as camadas de dados).
Quando você o coloca na camada View (apresentação), pode (espere !!) substituir a interface USER por outra máquina, automatizando assim a entrada REAL (!!!) - e, assim, executar testes de usabilidade tediosos por milhares de vezes, sem que nenhum usuário precise tocar e re-tocar e re-tocar novamente nas mesmas coisas repetidamente.
Alguns descrevem essa arquitetura de 3 camadas com 1 ou 2 interfaces duplas como arquitetura de 4 ou 5 camadas , implicitamente implicando as interfaces duplas.
Outros casos incluem (mas não estão limitados a) o fato de que você - no caso de sistemas de banco de dados replicados semi ou totalmente - seria praticamente capaz de considerar um dos bancos de dados como o "mestre" e, portanto, teria uma camada compreendendo o mestre e outro compreendendo o banco de dados escravo.
Exemplo para celular
Portanto, multicamadas - ou N - de fato tem algumas interpretações, enquanto eu certamente me ateria às de três camadas + camadas extras, compostas por discos de interface finos presos entre eles para permitir as trocas de camadas e, em termos de teste (particularmente usado em dispositivos móveis), agora você pode executar testes de usuário no software real, simulando os usuários tocando de maneiras que a lógica de controle não pode distinguir de um usuário real. Isso é quase primordial na simulação de testes reais do usuário , pois você pode gravar todas as entradas do OTA dos usuários e, em seguida, reutilizar a mesma entrada ao fazer testes de regressão.
fonte
Quando falamos de camadas, geralmente falamos de processos físicos (com espaço de memória diferente).
Portanto, caso as Camadas de um aplicativo sejam implantadas em diferentes processos, esses diferentes processos terão camadas diferentes.
Portanto, o nome genérico é de n camadas.
fonte
de https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier
Uma arquitetura de camada N divide os pneus de um aplicativo em pneus lógicos e físicos, principalmente, e eles são divididos em sub-partes.
Camadas são uma maneira de separar responsabilidades e gerenciar dependências. Cada camada tem uma responsabilidade específica. Uma camada superior pode usar serviços em uma camada inferior, mas não o contrário.
As camadas são fisicamente separadas, executando em máquinas separadas. Uma camada pode ligar para outra camada diretamente ou usar mensagens assíncronas (fila de mensagens). Embora cada camada possa estar hospedada em sua própria camada, isso não é necessário. Várias camadas podem estar hospedadas na mesma camada. Separar fisicamente as camadas melhora a escalabilidade e a resiliência, mas também adiciona latência à comunicação de rede adicional.
Um aplicativo tradicional de três camadas possui uma camada de apresentação, uma intermediária e uma de banco de dados. A camada intermediária é opcional. Aplicativos mais complexos podem ter mais de três camadas. O diagrama acima mostra um aplicativo com duas camadas intermediárias, encapsulando diferentes áreas de funcionalidade.
Um aplicativo de camada N pode ter uma arquitetura de camada fechada ou uma arquitetura de camada aberta:
Uma arquitetura de camada fechada limita as dependências entre as camadas. No entanto, pode criar tráfego de rede desnecessário, se uma camada simplesmente passar solicitações para a próxima camada.
fonte
Um aplicativo de camada N é um aplicativo que possui mais de três componentes envolvidos. Quais são esses componentes?
Todas as aplicações sociais como Instagram, Facebook, serviços industriais de grande escala como Uber, Airbnb, jogos multijogador massivos online como Pokemon Go, aplicações com recursos sofisticados são aplicações de n camadas.
fonte
Martin Fowler demonstrando claramente:
A estratificação é uma das técnicas mais comuns usadas pelos projetistas de software para desmembrar um sistema de software complicado. Você vê isso nas arquiteturas de máquinas, onde as camadas descem de uma linguagem de programação com chamadas do sistema operacional para drivers de dispositivo e conjuntos de instruções da CPU, e para portas lógicas dentro dos chips. A rede possui FTP em camadas sobre o TCP, que está sobre o IP, sobre a Ethernet.
Ao pensar em um sistema em termos de camadas, você imagina os principais subsistemas do software organizados em alguma forma de camada de bolo, onde cada camada repousa sobre uma camada inferior. Nesse esquema, a camada superior usa vários serviços definidos pela camada inferior, mas a camada inferior não tem conhecimento da camada superior. Além disso, cada camada geralmente oculta suas camadas inferiores das camadas acima, portanto, a camada 4 usa os serviços da camada 3, que utiliza os serviços da camada 2, mas a camada 4 não tem conhecimento da camada 2. (Nem todas as arquiteturas de camadas são opacas como esta , mas a maioria é - ou melhor, a maioria é opaca.)
Dividir um sistema em camadas tem vários benefícios importantes.
• Você pode entender uma única camada como um todo coerente sem saber muito sobre as outras camadas. Você pode entender como criar um serviço FTP sobre o TCP sem conhecer os detalhes de como a Ethernet funciona.
• Você pode substituir camadas por implementações alternativas dos mesmos serviços básicos. Um serviço de FTP pode ser executado sem alterações por Ethernet, PPP ou qualquer outra empresa de cabo.
• Você minimiza as dependências entre as camadas. Se a empresa de cabo mudar seu sistema físico de transmissão, desde que faça o IP funcionar, não precisaremos alterar nosso serviço de FTP.
• Camadas são bons locais para padronização. TCP e IP são padrões porque definem como suas camadas devem operar.
• Depois de criar uma camada, você pode usá-la para muitos serviços de nível superior. Assim, o TCP / IP é usado por FTP, telnet, SSH e HTTP. Caso contrário, todos esses protocolos de nível superior teriam que escrever seus próprios protocolos de nível inferior. Da biblioteca de Kyle Geoffrey Passarelli
A estratificação é uma técnica importante, mas há desvantagens.
• Camadas encapsulam algumas, mas não todas, coisas bem. Como resultado, você às vezes recebe alterações em cascata. O exemplo clássico disso em um aplicativo corporativo em camadas é adicionar um campo que precisa ser exibido na interface do usuário, deve estar no banco de dados e, portanto, deve ser adicionado a todas as camadas intermediárias.
• Camadas extras podem prejudicar o desempenho. Em todas as camadas, as coisas normalmente precisam ser transformadas de uma representação para outra. No entanto, o encapsulamento de uma função subjacente geralmente oferece ganhos de eficiência que mais do que compensam. Uma camada que controla as transações pode ser otimizada e, em seguida, tornar tudo mais rápido. Mas a parte mais difícil de uma arquitetura em camadas é decidir quais camadas ter e qual deve ser a responsabilidade de cada camada.
fonte