Padrão Arquitetural MVC e suas aplicações para WEB

Preview:

Citation preview

Padrão Arquitetural MVC e suas aplicações para Web

Rafael Mendonça FrançaDCOMP - UFS

Sumário

Introdução Padrão MVC Evolução do desenvolvimento WEB Implementações do MVC JSF

Introdução

A luta pela qualidade no Software vem produzindo a anos padrões e técnicas para construção de sistemas com menos defeitos e de manutenção mais fácil e simples.

O uso de camadas é um padrão arquitetural que ajuda na tarefa de separar responsabilidades, promovendo baixo acoplamento e alta coesão

Introdução

Aplicações de uma camada: Antigamente um aplicativo era desenvolvido

para ser usado em uma única máquina. Esse aplicativo continha todas a funcionalidades

em um único módulo gerado por uma grande quantidade de linhas de código e de manutenção nada fácil.

A entrada do usuário, verificação, lógica de negócio e acesso a banco de dados estava presente em um mesmo lugar.

Lógica de Apresentação Lógica de Negócios Acesso a Dados

Introdução

Aplicações de duas camadas: Surgiram com a necessidade de compartilhar a

lógica de acesso a dados. A base de dados geralmente é colocada em

uma máquina específica. Aplicativos instalados em estações clientes

contendo toda a lógica da aplicação. Grande problema com o gerenciamento de

versões.

Lógica de Apresentação Lógica de Negócios Acesso a Dados

Introdução

Aplicações de n camadas: Separa a lógica de negócio da interface com o usuário. Cada camada é auto-contida o suficiente de forma que a

aplicação pode ser dividida em vários computadores numa rede distribuída.

Possibilita que vários usuários tenham acesso as mesmas aplicações sem ter que instala-las em suas máquinas.

Torna os sistemas mais flexíveis permitindo que as partes possam ser alteradas de forma independente.

Facilita a reutilização e manutenção.

Lógica de Apresentação Lógica de Negócios Acesso a Dados

Padrão MVC: Model-View-Controller

É um padrão arquitetural que divide as aplicações em 3 camadas independentes.

Permite que um mesmo aplicativo possa ser visualizado através de vária interfaces.

Padrão MVC: Model-View-Controller

Camadas do MVC: Camada de Apresentação (View)

Inclui os elementos de exibição no cliente: HTML, XML, Applets, MIDlets.

É usada para receber a entradas de dados e apresentar o resultado.

Camada de Lógica da Aplicação (Model) Modela os dados e o comportamento por trás do

processo de negócio. Se preocupa apenas com o armazenamento e

geração dos dados. Camada de Controle

Interpreta as ações do usuário e as mapeia para chamadas do modelo.

É responsável pelo fluxo da aplicação.

Padrão MVC: Model-View-Controller

Evolução do desenvolvimento WEB

Sem o MVC Na primeira fase da evolução apenas eram

produzidas páginas em HTML estático para mostrar informações estáticas.

Na próxima fase evolutiva, foram usadas tecnologias de geração dinâmica de páginas como o CGI, Servlets e JSP.

Evolução do desenvolvimento WEB

Model 1: Arquitetura centrada na página As páginas JSP tratam todos os aspectos da

aplicação – apresentação, controle e processos de negócio – utilizando JavaBean para processar a lógica e links para a navegação.

Evolução do desenvolvimento WEB

Model 2: Arquitetura centrada no Servlet As aplicações implementadas utilizando o Model

2 são mais fáceis de manter e extender.

Implementações do MVC

.NET Microsoft UIP Maverick.NET

ActionScript ARP PureMVC

Java JavaServer Faces Spring Framework Struts

PHP Zend Framework Symfony Framework

JSF – JavaServer Faces

É uma implementação do Model 2. É também uma especificação da JCP – Java

Community Process. (JSR-127) Foi criado com o intuito de facilitar o

desenvolvimento de interfaces web. Facilita a integração com IDEs. Possui um conjunto padrão de componentes. Possui uma API para validação dos dados. Especifica um modelo para

internacionalização e localização.

JSF – JavaServer Faces

JSF – JavaServer Faces

Principais partes do JSF Componentes de Interface com o usuário

Foca na interatividade com o usuário final. Diferente dos componentes Swing eles ficam

residentes no lado do servidor, não do cliente. Os componentes tem a capacidade de guardar

informações de estado entre as requisições. Renderizadores

São responsáveis por gerar as diferentes formas de visualização (HTML, WML, SVG, applet, etc.)

São organizados em Render Kits.

JSF – JavaServer Faces

Principais partes do JSF (continuação) Validadores

Responsável por validar os dados digitados pelo usuário.

Os dados são validados no lado do servidor. Backing beans

É responsável pela interação entre a camada de visão e a de modelo.

Geralmente contém propriedades que serão utilizadas pelos usuários e tratadores de eventos que processarão essas propriedades e irão manipular a interface ou fazer algum processamento da aplicação.

JSF – JavaServer Faces

Principais partes do JSF (continuação) Conversores

Responsável por converter um objeto em String para mostra-lo na tela, e de uma String de entrada para um objeto.

Eventos e listeners São responsáveis por capturar e tratar os meios que

o usuário interage com os componentes de interface. Tipos de eventos:

Eventos de mudança de valor Eventos de ações Eventos de modelo de dados Eventos de fase

JSF – JavaServer Faces

Principais partes do JSF (continuação) Mensagens

Auxiliam a informar o usuários erros na aplicação. As mensagens podem ser de dois tipos:

Mensagens de erros na aplicação Mensagens de erros na entrada do usuário

Navegação O Faces possibilita um sistema de navegação

elegante, onde o tratador de navegação é responsável que página vai ser carregada de acordo com a lógica da ação.

JSF – JavaServer Faces

Ciclo de vida do processo de requisição O clico de vida da requisições do Faces são

divididos em 6 fases. Fase 1: Restaurar árvore de componentes Fase 2: Aplicar valores da requisição Fase 3: Processar validação Fase 4: Atualizar valores do Modelo Fase 5: Chamar aplicação Fase 6: Renderizar resposta

Após cada fase o JSF irá enviar os eventos para os listeners interessados. Esses listeners irão processar lógica de negócio ou manipular componentes.

JSF – JavaServer Faces

Ciclo de vida do processo de requisição (continuação) Os listeners podem se necessário pular para a

fase final: “Renderizar resposta”. Quatro dessas fases geram mensagens: “Aplicar

valores da requisição”, “Processar validação”, “Atualizar valores do Modelo”, “Chamar aplicação”. Com ou sem mensagem é a fase “Renderizar resposta” que envia as saídas para o usuário.

JSF – JavaServer Faces

Bibliografia

K. D. Mann. JavaServer Faces In Action. Manning, 2005 G. Seshadri. Understanding JavaServer Pages Model 2

architecture: Exploring the MVC design pattern. JavaWorld.com, 1999.

Arquitetura MVC baseada em modelos. PUC-RIO. The J2EE tuturial 1.4: The Life Cycle of a JavaServer Faces

Page. Sun. Disponível em: http://java.sun.com/j2ee/1.4/docs/tutorial Página da web: http://jcp.org

Recommended