Respostas:
Camadas lógicas são apenas uma maneira de organizar seu código. As camadas típicas incluem Apresentação, Negócios e Dados - o mesmo que o modelo tradicional de três camadas. Mas quando estamos falando de camadas, estamos falando apenas de organização lógica do código. De forma alguma está implícito que essas camadas possam ser executadas em computadores diferentes ou em processos diferentes em um único computador ou mesmo em um único processo em um único computador. Tudo o que estamos fazendo é discutir uma maneira de organizar um código em um conjunto de camadas definido por função específica.
No entanto, as camadas físicas são apenas para onde o código é executado. Especificamente, as camadas são locais onde as camadas são implantadas e onde as camadas são executadas. Em outras palavras, camadas são a implantação física de camadas.
Fonte: Rockford Lhotka, Todos os aplicativos devem ser de várias camadas?
Leia a postagem de Scott Hanselman sobre a questão: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx
Lembre-se, porém, que em "Scott World" (que também é o seu mundo :)) um "Nível" é uma unidade de implantação, enquanto um "Camada" é uma separação lógica de responsabilidade no código. Você pode dizer que possui um sistema de "três camadas", mas o executa em um laptop. Você pode dizer que possui um sistema de "três camadas", mas possui apenas páginas ASP.NET que conversam com um banco de dados. Há poder na precisão, amigos.
Camadas referem-se à separação lógica de código. As camadas lógicas ajudam a organizar melhor seu código. Por exemplo, um aplicativo pode ter as seguintes camadas.
1) Camada de apresentação ou UI 2) Camada de negócios ou lógica de negócios 3) Camada de acesso a dados ou Camada de dados
As três camadas acima residem em seus próprios projetos, podendo ser 3 ou mais. Quando compilamos os projetos, obtemos a respectiva camada DLL. Então, temos 3 DLLs agora.
Dependendo de como implementamos nosso aplicativo, podemos ter de 1 a 3 camadas. Como agora temos 3 DLLs, se implantarmos todas as DLLs na mesma máquina, teremos apenas 1 camada física, mas 3 camadas lógicas.
Se optarmos por implantar cada DLL em uma máquina separada, teremos 3 camadas e 3 camadas.
Portanto, Camadas são uma separação lógica e Camadas são uma separação física. Também podemos dizer que, camadas são a implantação física de camadas.
Por que sempre tentando usar palavras complexas?
Uma camada = parte do seu código , se o seu aplicativo for um bolo, isso é uma fatia.
Uma camada = uma máquina física , um servidor.
Uma camada hospeda uma ou mais camadas.
Exemplo de camadas:
Camada:
Seu código está hospedado em um servidor = Seu código está hospedado em uma camada.
Seu código está hospedado em 2 servidores = Seu código está hospedado em 2 camadas.
Por exemplo, uma máquina que hospeda o próprio site (a camada Apresentação), outra máquina que hospeda com mais segurança todo o código mais sensível à segurança (código comercial real - camada comercial, camada de acesso ao banco de dados, etc.).
Existem muitos benefícios para implementar uma arquitetura em camadas. Isso é complicado e a implementação adequada de um aplicativo em camadas leva tempo. Se você tiver algum, dê uma olhada nesta publicação da Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx
Em inglês simples, Tier
refere-se a "cada um de uma série de linhas ou níveis de uma estrutura colocada um acima do outro", enquanto Layer
refere-se a "uma folha, quantidade ou espessura do material, geralmente um de vários, cobrindo uma superfície ou corpo "
A camada é uma unidade física , onde o código / processo é executado. Por exemplo: cliente, servidor de aplicativos, servidor de banco de dados;
Camada é uma unidade lógica , como organizar o código. Ex .: apresentação (visualização), controlador, modelos, repositório, acesso a dados.
As camadas representam a separação física da apresentação, negócios, serviços e funcionalidade de dados do seu design em computadores e sistemas separados.
Camadas são os agrupamentos lógicos dos componentes de software que compõem o aplicativo ou serviço. Eles ajudam a diferenciar os diferentes tipos de tarefas executadas pelos componentes, facilitando a criação de um design que suporte a reutilização de componentes. Cada camada lógica contém vários tipos de componentes distintos, agrupados em subcamadas, com cada subcamada executando um tipo específico de tarefa.
O padrão de duas camadas representa um cliente e um servidor.
Nesse cenário, o cliente e o servidor podem existir na mesma máquina ou podem estar localizados em duas máquinas diferentes. A figura abaixo ilustra um cenário comum de aplicativo da Web em que o cliente interage com um servidor da Web localizado na camada do cliente. Essa camada contém a lógica da camada de apresentação e qualquer lógica necessária da camada de negócios. O aplicativo da Web se comunica com uma máquina separada que hospeda a camada do banco de dados, que contém a lógica da camada de dados.
Vantagens de Camadas e Camadas:
A estratificação ajuda a maximizar a capacidade de manutenção do código, otimizar a maneira como o aplicativo funciona quando implantado de diferentes maneiras e fornecer uma definição clara entre locais onde determinadas decisões de tecnologia ou design devem ser tomadas.
A colocação de suas camadas em camadas físicas separadas pode ajudar no desempenho, distribuindo a carga por vários servidores. Também pode ajudar na segurança, segregando componentes e camadas mais sensíveis em diferentes redes ou na Internet versus uma intranet.
Um aplicativo de 1 camada pode ser um aplicativo de 3 camadas.
Sim, meus queridos amigos disseram corretamente. A camada é uma partição lógica do aplicativo, enquanto a camada é uma partição física da partição da camada do sistema, depende da partição da camada. Assim como um aplicativo é executado em uma única máquina, mas segue a arquitetura em três camadas, podemos dizer que a arquitetura da camada pode existir em uma arquitetura de camadas. Em termos simples, a arquitetura de 3 camadas pode ser implementada em uma única máquina; então, podemos dizer que é uma arquitetura de 1 camada. Se implementarmos cada camada em uma máquina separada, ela será chamada de arquitetura de três camadas. Uma camada também pode executar várias camadas. Componente relacionado à arquitetura da camada para se comunicar facilmente.
Assim como seguimos a arquitetura abaixo
Um cliente pode interagir com a "camada de apresentação", mas eles acessam o componente público da camada abaixo (como o componente público da camada de lógica de negócios) para a "camada de lógica de negócios" devido a razões de segurança.
P * por que usamos arquitetura de camada? porque se implementarmos a arquitetura de camadas, aumentaremos a eficiência de nossos aplicativos, como
==> segurança
==> gerenciabilidade
==> escalabilidade
outra necessidade, como após o desenvolvimento do aplicativo, precisamos alterar dbms ou modificar a lógica de negócios, etc., então é necessário para todos.
P * por que usamos a arquitetura de camadas?
porque a implementação física de cada camada fornece uma melhor eficiência, sem a arquitetura da camada, não podemos implementar a arquitetura da camada. máquina separada para implementar camada separada e camada separada é implementar uma ou mais camadas, é por isso que a usamos.
usa para fins de tolerância a falhas. ==> fácil de manter.
Exemplo simples
Assim como um banco aberto em uma câmara, em que categorias o funcionário:
todos eles são os componentes relacionados do sistema.
Se vamos ao banco para fins de empréstimo, primeiro um porteiro abre a porta com um sorriso e depois vamos para perto de uma pessoa que apresenta todos os esquemas de empréstimo e depois vamos para a cabine do gerente e aprovamos o empréstimo. Depois disso, finalmente vamos ao balcão do caixa tomar empréstimo. Estes são a arquitetura da camada do banco.
E o nível? A agência de um banco é aberta em uma cidade, depois em outra cidade, depois em outra, mas qual é o requisito básico de cada agência
exatamente o mesmo conceito de camada e camada.
Camadas são uma separação lógica de related-functionality[code]
dentro de um aplicativo. A comunicação entre camadas é explícita e é pouco acoplada. [Lógica de apresentação, Lógica de aplicação, Lógica de acesso a dados]
As camadas são a separação física de layers
[que são hospedadas em servidores individuais] em um computador individual (processo).
Como mostrado no diagrama:
1-Tier & 3-Layers « App Logic with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer « Browser View[php], App Logic[jsp], DataStorage
Vantagens n- camada :
melhor
escalabilidade de segurança : à medida que sua organização cresce Você pode escalar sua camada de banco de dados com o cluster de DB sem tocar em outras camadas.
Manutenção : o web designer pode alterar o código de exibição sem tocar nas outras camadas nas outras camadas. Atualize ou aprimore
facilmente [Ex: você pode adicionar código de aplicativo adicional, atualizar área de armazenamento ou até adicionar várias camadas de apresentação para dispositivos separados, como celular, tablet, pc]
Gosto da descrição abaixo do Microsoft Application Architecture Guide 2
Camadas descrevem os agrupamentos lógicos da funcionalidade e componentes em um aplicativo; enquanto as camadas descrevem a distribuição física da funcionalidade e dos componentes em servidores, computadores, redes ou locais remotos separados. Embora ambas as camadas e camadas usem o mesmo conjunto de nomes (apresentação, negócios, serviços e dados), lembre-se de que apenas camadas implicam uma separação física.
Uso camadas para descrever o arquiteto ou a pilha de tecnologia em um componente de minhas soluções. Eu uso camadas para agrupar logicamente esses componentes normalmente quando há comunicação de rede ou interprocesso.
Tecnicamente, uma camada pode ser um tipo de ambiente mínimo necessário para a execução do código.
Por exemplo, hipoteticamente, um aplicativo de três camadas pode ser executado em
1 máquina física com 3 máquinas virtuais sem SO.
(Esse era um aplicativo de nível 3 (hardware))
1 máquina física com 3 máquinas virtuais com 3 diferentes / mesmos sistemas operacionais
(Esse era um aplicativo de nível 3 (OS))
1 máquina física com 1 máquina virtual com 1 SO, mas 3 AppServers
(Esse era um aplicativo de nível 3 (AppServer))
1 máquina física com 1 máquina virtual com 1 SO com 1 AppServer, mas 3 DBMS
(Esse era um aplicativo de nível 3 (DBMS))
1 máquina física com 1 máquina virtual com 1 SO com 1 AppServers e 1 DBMS, mas 3 pastas de trabalho do Excel.
(Esse era um aplicativo de nível 3 (AppServer))
A pasta de trabalho do Excel é o ambiente mínimo necessário para a execução do código VBA.
Essas três pastas de trabalho podem ficar em um único computador físico ou em várias.
Percebi que, na prática, as pessoas querem dizer "Nível do SO" quando dizem "Nível" no contexto de descrição do aplicativo.
Ou seja, se um aplicativo é executado em três sistemas operacionais separados, é um aplicativo de três camadas.
Portanto, uma maneira pedanticamente correta de descrever um aplicativo seria
Aplicativo "compatível com 1 a 3 camadas, executando em 2 camadas".
:)
Camadas são apenas tipos de código em relação à separação funcional de tarefas dentro do aplicativo (por exemplo, Apresentação, Dados, Segurança etc.)
Quando você fala sobre apresentação, serviço, dados, camada de rede, está falando sobre camadas. Quando você "os implanta separadamente", você fala sobre camadas.
Camadas tem tudo a ver com implantação. Faça o seguinte: temos um aplicativo que possui um front-end criado no Angular, que possui um back-end como MongoDB e uma camada intermediária que interage entre o front-end e o back-end. Portanto, quando esse aplicativo front-end, aplicativo de banco de dados e a camada intermediária são implantados separadamente, dizemos que é um aplicativo de três camadas.
Benefício: se precisarmos escalar nosso back-end no futuro, precisamos escalar o back-end de forma independente e não será necessário escalá-lo.