Padrão Arquitetural MVC e suas aplicações para Web Rafael Mendonça França DCOMP - 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

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

  • 1.
    Padrão Arquitetural MVCe suas aplicações para Web Rafael Mendonça França DCOMP - UFS
  • 2.
    Sumário Introdução PadrãoMVC Evolução do desenvolvimento WEB Implementações do MVC JSF
  • 3.
    Introdução A lutapela 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
  • 4.
    Introdução Aplicações deuma 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
  • 5.
    Introdução Aplicações deduas 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
  • 6.
    Introdução Aplicações den 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
  • 7.
    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.
  • 8.
    Padrão MVC: Model-View-ControllerCamadas 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.
  • 9.
  • 10.
    Evolução do desenvolvimentoWEB 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.
  • 11.
    Evolução do desenvolvimentoWEB 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.
  • 12.
    Evolução do desenvolvimentoWEB Model 2: Arquitetura centrada no Servlet As aplicações implementadas utilizando o Model 2 são mais fáceis de manter e extender.
  • 13.
    Implementações do MVC.NET Microsoft UIP Maverick.NET ActionScript ARP PureMVC Java JavaServer Faces Spring Framework Struts PHP Zend Framework Symfony Framework
  • 14.
    JSF – JavaServerFaces É 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.
  • 15.
  • 16.
    JSF – JavaServerFaces 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.
  • 17.
    JSF – JavaServerFaces 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.
  • 18.
    JSF – JavaServerFaces 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
  • 19.
    JSF – JavaServerFaces 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.
  • 20.
    JSF – JavaServerFaces 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.
  • 21.
    JSF – JavaServerFaces 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.
  • 22.
  • 23.
    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