Tópico 4 Prof MSc Vitor Mesaque Alves de Lima 1. Introdução Padrão Arquitetural em 3 Camadas MVC...

Preview:

Citation preview

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

Recommended