[quote=sergiotaborda]A graça do padrão Layer é que vc pode ter quantas camadas quiser
É importante destinguir o padrão Layer do conceito de layer em si (camada).
Um sistema estruturado em camadas está usando o padrão layer, mas também a estruturação de andares e plataformas pode obedecer ao padrão layer. Protocolos tb podem obedecer ao padrão Layer como o TCP. Portanto, o padrão layer é mais genérico que apenas camadas de aplicação.
Quando falamos de software temos que falar primeiro em plataformas e andares e entender que dentro dos andares termos camadas de API. Nas traduções se perde muito dos conceitos. Em inglês temos Platform (plataforma), store (andar), tier (nodo) e layer (camada). Cada um representa uma coisa diferente, mas é comum as pessoas chamarem tudo de layer. A culpa é principalmente do padrão Layer que popularizou essa nomenclatura.
Os sistemas são desenhados em andares. Os andares são fatia logicas da aplicação que mediam a interação do usuário com os dados.
O primeiro andar é exatamente o que media com o usuário : andar cliente que cuida do look & feel da interação. Se a interação é via linha de comandos, html, desktop, browser, etc… tudo isso são formas da “aparencia” do andar cliente. Ele é o menino bonito. O segundo é apresentação.
A apresentação cuida das regras de navegação no cliente, controles vários de validação. Só boa aparência não chega, precisa de boa apresentação.
A seguir vem o dominio, também chamado de “negocio”. Aqui estão as regras, as entidades, as “coisas” que são especificas à finalidade da aplicação.
Depois vêm a integração. A integração é uma camada vasta e normalmente relacionada a alguma coisa de I/O. Acesso a banco via jdbc, leitura de páginas com UrlConnection, leitura e escrita de arquivos (xml ou nao), comunicação com outros sistemas através de um protocolo comum, comunicação com hardware, envio de sms, etc…
Finalmente temos os recursos. Os recursos são os arquivos em si, o banco em si mesmo, etc… são aquilo que persiste e existe fora da aplicação, inclusive memória, espaço em disco, etc…
Em relação aos nodos , normalmente , hoje , temos arquiteturas 3-tier (3-nodos) : máquina onde roda o cliente (browser, por exemplo) + servidor aplicação + servidor de banco
Percorrendo a sua lista:
Camada de Apresentação = andar de apresentação
Camada de Aplicação = plataforma de aplicação ou a aplicação em si mesma para distinguir de camada java, por exemplo.
Camada de Negócios = Camada de Domínio = Camada Business (negocio em ingles) = andar de negocios / dominio
Camada de Dados = andar de recursos
Camada de Interface = Camada Cliente = andar cliente
Camada Web = ambiguo pode ser = Camada Cliente = andar cliente no contexto de andares mas pode significa o nodo cliente no contexto de n-tier.
Camada Servidor = nodo servidor (de aplicação ou de banco)
Camada de Integração = andar de integração
Camada de Serviços = ambiguo pode se referir à camada de serviços no andar de dominio, ou no andar de integração ou na plataforma de aplicação.
Camada de Informação Distribuída(EIS) = um dos tipos de integração possivel. quando é a única, ela corresponde ao andar de integração, quando é uma das muitas usada , então é realmente um camada dentro do andar de integração.
Camada de Persistencia = um dos tipos de integração possivel. quando é a única, ela corresponde ao andar de integração, quando é uma das muitas usada , então é realmente um camada dentro do andar de integração.
Camada de Recursos = andar de recursos.
tomando atenção verá que não ha tantas assim. Camadas , camadas mesmo (layers) normalmente t~em nomes relacionados ao que fazem, por exemplo envio de email, configuração, validação , logging, transações, internacionalização/localização, etc… isso normalmente são os nomes dos pacotes onde residem as classes correspondentes. É nivel mais fino do padrão layer.
Imagine vários nodos (cubos) conetados ums aos outros. Isso é o padrão layer aplicado a nodos.
Escolha um nodo desses. Ele é separado em andares e plataformas. Cada uma destas dimensões aplica o padrão layer.
Escolha um andar. Ele é composto de várias camadas de “código”, onde se aplica o padrão layer mais uma vez.
É por isto que o padrão Layer é um padrão arquitetural. Ele está em todas as construções que vc usa num software.[/quote]
Oi Sergio, que bom estar aqui
Nossa adorei a sua explicação + a explicação no link do Java Building.
Agora está muito claro para mim o que é o padrão Layer e onde ele está aplicado e onde se aplica.
Surgiu uma dúvida: Para a minha agenda acredito que a melhor arquitetura é a Standalone, onde existe um só nodo com uma única pliha de plataformas e andares. Mas e se futuramente for necessário desenvolver uma agenda maior e precisar fazer uso da arquitetura 3-tier para isso, será difícil fazer essa transformação de arquitetura? Pelo que li e entendi nas explicações parece ser óbvio que não terei graves problemas porém na pratica é a mesma realidade?
E uma pergunta: Como quero desenvolver minha agenda com Swing, dos cinco andares do meu nodo ( Arq. Standalone ), para minha agenda especificamente, posso dizer que o andar Cliente é o Swing em sí (o ‘menino bonito’, q lindo :P) e o andar Apresentação seria o MVP que me ajudou a fazer no outro tópico?
Obrigada Sergio, você sempre me ajuda de forma técnica e didática ao mesmo tempo, gosto muito da forma na qual ajuda. Obrigada…