Arquitetura de Software e Linguagens para
desenvolvimento na Web Atual
Tópico 4
Prof MSc Vitor Mesaque Alves de Lima
1
Introdução Padrão Arquitetural em 3 Camadas MVC MVP Comparações Linguagens Web
◦ Scripts Client-Side◦ Scripts Server-Side◦ Processamento no Servidor◦ Ajax
Conclusões
Programação para Web 2
Tópicos
Crescimento exponencial do desenvolvimento de aplicações Web◦ Internet: divulgação com baixo custo de produtos
e serviços◦ aumento da capacidade de tráfego nas redes◦ aumento na capacidade de armazenamento e
processamento
Surgimento de novas tecnologias para o desenvolvimento de WebApps:◦ robustas e com maior interação
Programação para Web 3
Introdução
Tecnologias baseadas em padrões arquiteturais e padrões Web:◦ MVC (Model-View-Controller)◦ Arquitetura em 3 camadas
◦ facilitam a manutenção e a evolução das WebApps
◦ menor acoplamento entre os módulos: interface gráfica e dados da aplicação
Exemplo de tecnologias: JSP, Ruby, Python e PHP
Programação para Web 4
Introdução
WebApps possuem um amplo conjunto de conceitos e terminologias associadas◦ características de aplicações hipermídia
Não exigem a instalação para a sua execução: somente um navegador Web
Vários padrões arquiteturais existentes na literatura, porém os mais utilizados:◦ MVC◦ Arquitetura em 3 camadas
Programação para Web 5
Padrões Arquiteturais e Web
“Um Padrão descreve um problema que ocorre repetidas vezes em nosso meio e inclui uma solução genérica para o mesmo, de tal maneira que se pode utilizá-la mais de um milhão de vezes, sem nunca fazê-lo de forma idêntica.”
[Cristopher Alexander, 1979]
Programação para Web 6
Padrão
Padrões Arquiteturais: expressam um esquema de organização estrutural fundamental para sistemas de software. (BUSCHMANN et al., 1996)
Padrões de Projeto: disponibilizam um esquema para refinamento de subsistemas ou componentes de um sistema de software (GAMMA et al., 1995)
Idiomas: descreve como implementar aspectos particulares de componentes ou de relacionamentos entre eles, usando as características de uma dada linguagem de programação
7
Categorias de Padrões em Engenharia de Software
Padrão Arquitetural em
3 Camadas
Programação para Web 8
Uma arquitetura em camadas é organizada hierarquicamente, onde as camadas mais internas provêem serviços às camadas mais externas
Padrão Arquitetural em Camadas
9Programação para Web
CoreLevel
Base Utility
Useful SystemsAgregados de Elementos Menores
Users
Componentes◦ Camadas
Conectores◦ protocolos que determinam como as Camadas
interagem Regras
◦ limites de interação às Camadas adjacentes
◦ Exemplos: protocolos de comunicação em camadas (OSI), alguns sistemas operacionais, arquitetura em 3 Camadas para sistemas de informação comerciais (Interface, Negócio, Persistência)
Padrão Arquitetural em Camadas
10Programação para Web
É um tipo de arquitetura cliente/servidor:◦ interface com o usuário, lógica de processo, e
armazenamento de dados são desenvolvidos e mantidos em módulos independentes
Mais conhecida: 3 Camadas◦ Forma como é concebida permite que cada
módulo seja atualizado ou replicado de maneira independente com relação aos requisitos de tecnologias
Programação para Web 11
Padrão Arquitetural em Camadas
Componentes:◦ Camada de Apresentação: interface gráfica
permitindo a interação com o usuários por meio dos serviços disponíveis
◦ Camada Lógica: contém toda a lógica do negócio, bem como a lógica de transações
◦ Camada de Dados: contém os dados que são manipulados pela aplicação, bem como o acesso, atualização e persistência destes
Programação para Web 12
Padrão Arquitetural em 3 Camadas
Programação para Web 13
Padrão Arquitetural em 3 Camadas
Programação para Web 14
Padrão Arquitetural em 3 Camadas
Camada de Dados
Camada do Negocio
Camada de apresentação
Vantagens:◦ Suporte à Evolução dos Sistemas◦ Flexibilidade e boa Manutenibilidade
Desvantagens:◦ Problemas de Desempenho e Comunicação◦ Complexidade na Implementação do Sistema
Programação para Web 15
Padrão Arquitetural em 3 Camadas
Padrão Arquitetural Model-View-
Controller
Programação para Web 16
Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados (Model) e o layout (View)
Alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout
Programação para Web 17
Padrão Arquitetural MVC
O MVC resolve este problema através da separação das tarefas de acesso aosdados e lógica de negócio, lógica de apresentação e de interação
com o usuário, introduzindo um componente entre os
dois: o Controller
MVC = Model-view-controller
Programação para Web 18
Padrão Arquitetural MVC
MVC é um padrão de arquitetura de software
MVC é usado em padrões de projeto de software, mas MVC abrange mais da arquitetura de uma aplicação do que é típico para um padrão de projeto.
Programação para Web 19
Padrão Arquitetural MVC
Objetivo:◦ desacoplar a interface gráfica da navegação e do
comportamento da aplicação manutenção mais simples maior reutilização
◦ Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control)
◦ A idéia é permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces
Programação para Web 20
Padrão Arquitetural MVC
Componentes:
◦ Modelo: conteúdo da aplicação (objetos persistentes)
◦ Visão: funções de interface gráfica
◦ Controlador: coordena o fluxo do de dados entre o modelo e a visão
Programação para Web 21
Padrão Arquitetural MVC
Comportamento do MVC:◦ a Visão envia eventos para o Controlador◦ o controlador modifica o estado do Modelo◦ o Modelo notifica a Visão◦ Visão busca os dados no Modelo
Existem algumas variações do padrão MVC na literatura como é o caso do Modelo 2 da Sun
Programação para Web 22
Padrão Arquitetural MVC
Programação para Web 23
Padrão Arquitetural MVC
(Sun, 2007 - tradução)
Programação para Web 24
Padrão Arquitetural MVC
O Modelo pode ser formado por entidades que armazenam os dados que são apresentados pela Visão
A Visão pode ser uma interface gráfica
O Controlador pode ser uma ou mais classes que possuem métodos que permitem que o Modelo seja atualizado a partir de eventos disparados pela Visão
Programação para Web 25
Padrão Arquitetural MVC
Programação para Web 26
Padrão Arquitetural MVC
Frameworks MVC◦ ASP
ASP Xtreme Evolution; Toika; AJAXED; e outros◦ .Net
Microsoft MVC Framework◦ Java
Apache Struts; Mentawai; WebWork;Neo Framework; Spring MVC; JSF; e outros
◦ PHP CakePHP; CodeIgniter; Symfony; Zend Framework; e
outros
Programação para Web 27
Padrão Arquitetural MVC
Padrão Arquitetural Model-View-Presenter
Programação para Web 28
Padrão Arquitetural Model-View-Presenter◦ Utilizado para separar a lógica da apresentação
da apresentação propriamente dita
◦ A idéia do MVP é que toda a lógica que normalmente iria ligar a interface de usuário com os dados seja movida para uma classe separada
◦ Isso significa que a interface de usuário se torna bastante “fina”. Não há processamento embutido
Padrão Arquitetural MVP
Padrão Arquitetural MVP
O componente Model corresponde aos objetos que contêm a lógica do negócio
Esse componente não conhece a apresentação◦ Aspectos positivos: facilita o reuso da lógica do
negócio em diferentes contextos (ambientes)◦ Web, Smart Client, Mobile, WEB Services
Idealmente esse componente, deve expor interfaces de forma abstrata, em vez de concreta
Padrão Arquitetural MVP
O componente View é uma estrutura composta de controles de interface com o usuário◦ Esse componente não contém qualquer
comportamento que descreve como os controles reagem à eventos de sistema (i.e., a ações do usuário)
◦ A reação às ações do usuário é posicionada em um objeto separado, o componente Presenter
Os manipuladores para as ações do usuário ainda existem nos controles da IU, mas eles meramente passam (delegam) o processamento para o Presenter
Padrão Arquitetural MVP
O Presenter então decide como reagir ao evento notificado pelo componente View
Normalmente, essa reação corresponde ao envio de mensagens aos objetos componente Model◦ Composto de classes do domínio e de classes de
serviço
Conforme o presenter atualiza o modelo, o componente view é atualizado
Padrão Arquitetural MVP
Programação para Web 34
Padrão Arquitetural MVP
Programação para Web 35
Padrão Arquitetural MVP
Adapter:◦ Quando a lógica de IU é complexa, uma
alternativa é criar adaptatores◦ Adaptadores são objetos intermediários entre o
view e o presenter◦ Servem para ajudar o presenter na execução da
lógica da apresentação
Padrão Arquitetural MVP
Adapter
Programação para Web 37
Padrão Arquitetural MVP
DomínioApresentação
ModelView Presenter
NotificaçõesA
dapte
r
Resumo da arquitetura MVP:◦ View: exibe os dados e notifica eventos de
sistema para o Presenter◦ Presenter: coordena a comunicação entre o view
e a camada de serviços (ou camada de negócio) e é responsável pela lógica de IU
◦ Model: os dados que devem ser exibidos ou editados na tela
Padrão Arquitetural MVP
Aspectos Positivos◦ Facilita a modificação da IU por designers gráficos◦ Facilita o uso de TDD (Test Driven Design)◦ Separa adequadamente os aspectos da lógica da
aplicação
Aspectos Negativos◦ Requer uma mudança na forma de pensar do
desenvolvedor◦ Código é mais abstrato do que no estilo “Forms &
Controls” de programação visual◦ Mais código para implementar◦ Curva de aprendizado é acentuada
Padrão Arquitetural MVP
Comparações
Programação para Web 40
MVC é triangular:◦ Existe uma interação direta entre os seus 3
componentes: Visão interage com Controlador por eventos; Controlador interage com o Modelo e o atualiza; Modelo notifica a Visão por meio do Controlador; Visão busca os dados no Modelo.
Existem variações do MVC, como o Modelo 2 da Sun, que o torna linear◦ Visão e Modelo não se comunicam
Programação para Web 41
MVC x Arquitetura em Camadas
A arquitetura em 3 camadas é linear:◦ não existe uma interação entre a camada de
apresentação e a de Dados◦ o fluxo de dados sempre passa pela camada
lógica pode tornar a aplicação “pesada”
◦ Camadas dizem como agrupar os componentes◦ O MVC diz como os componentes da aplicação
interagem
Programação para Web 42
MVC x Arquitetura em 3 Camadas
O MVP é uma variante do padrão MVC Qual a diferença?
◦ No MVC, o View “conversa” (no sentido de poder enviar mensagens) com o Model
◦ No MVP, o View pode conhecer o Model, mas não envia mensagens para ele
MVP x MVC
Programação para Web 44
MVP x MVC
ViewControll
er
Model
ViewPresente
r
Model
MVC MVP
Linguagens Web
Programação para Web 45
Scripts Client-Side◦ São responsáveis pelas ações executadas no
browser, sem contato com o servidor. Os exemplos mais comuns são imagens e textos que mudam com o passar do mouse
Scripts Server-Side◦ Todo o processamento é realizado no servidor◦ Cliente recebe apenas o resultado-> HTML
Programação para Web 46
Linguagem para WEB
O navegador é responsável pelo tratamento do script◦ JavaScript e VBScript
Utilizado para diminuir o processamento do servidor◦ Imagens animadas, menus dinâmicos, etc◦ Validação de campos de formulário
Programação para Web 47
Scripts Client-Side
O processamento é feito pelo servidor◦ CGI, PHP, ASP, JSP
O cliente (navegador) recebe o resultado do processamento◦ Aplicações que exigem maior segurança◦ Banco de dados
Programação para Web 48
Scripts Server-Side
Além das arquiteturas e padrões Web, existe ainda os servidores Web◦ que permitem o processamento dos dados
enviados pelo cliente, no caso um navegador Web Estes servidores possuem algumas
características como:◦ autenticação, autorização e controle de acesso,
direcionamento de chamadas e filtragem da entrada e saída
Programação para Web 49
Processamento em Servidores Web
Entre os mais conhecidos servidores estão o Apache HTTP Server, o IBM HTTP Server◦ O Apache é o mais amplamente utilizado por:
não ser um software proprietário estabilidade já alcançada
O Apache permite a instalação de módulos individuais que dão suporte à algumas tecnologias como JSP, ASP e PHP
Programação para Web 50
Processamento em Servidores Web
Os servidores Web funcionam de maneira geral da seguinte forma:◦ recebem uma requisição HTTP do cliente◦ identificam o recurso desejado◦ localizam tal recurso e verificam sua
disponibilidade◦ enviam ao cliente se disponível, senão geram um
erro e apresentam ao cliente
Programação para Web 51
Processamento em Servidores Web
Programação para Web 52
Processamento em Servidores Web
Recuperação e entrega
Requisição
ComputadorCliente
ComputadorServidor
Internet
Software Navegador
Software Servidor
Processamento Server-side
Bando de Dados
Conclusões e Referências
Programação para Web 53
MVC e arquitetura 3 camadas consolidadas no desenvolvimento de aplicações Web
Tecnologias permitem o desenvolvimento de aplicações com maior interatividade e disponibilização de produtos e serviços
Programação para Web 54
Conclusões
Buschmann, F.; Meunier, R.; Rohnert, H.; Sommerlad, P.; Stal, M. Pattern-oriented software architecture: a system of patterns. New York, NY, USA: John Wiley & Sons, Inc., 1996
Pressman, R. S. Software engineering: A practitioner’s approach. McGraw-Hill Higher Education, 2006
Fragmental - http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas
Sun Java SE Application Design with MVC. 2007. Disponível em http://java.sun.com/developer/technicalArticles/javase/mvc/index.html
Tutorial da Sun: “J2EE 1.4 Tutorial”. Disponível em http://java.sun.com/j2ee/1.4/docs/tutorial/doc/J2EETutorialFront.html
Tutorial da Sun: “J2EE 5 Tutorial”. Disponível em http://java.sun.com/javaee/5/docs/tutorial/doc/
Sadoski, D.; Comella-Dorda, S. Three tier software architectures. 1997. Disponível em http://www.sei.cmu.edu/str/descriptions/threetier.html
Reese, G. Database programming with jdbc and java. O’Reilly, 2000
Parte do material foi originalmente elaborado por Edson A. Oliveira Junior e Renata Pontim – ICMC-USP
Programação para Web 55
Referências