Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta leomurta@ic.uff.br



Documentos relacionados
Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Desenvolvimento Web TCC Turma A-1

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Programação II Programação para a Web. Christopher Burrows

Java para WEB. Servlets

Java II. Sérgio Luiz Ruivace Cerqueira

Java para Desenvolvimento Web

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Associação Carioca de Ensino Superior Centro Universitário Carioca

Introdução à Plataforma J2EE Java2 Enterprise Edition. Alex de V. Garcia, Dr.

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Java Servlets. Leonardo Gresta Paulino Murta

programação de páginas de conteúdo dinâmico

Programação Web Aula 12 - Java Web Software

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Java na WEB Servlet. Sumário

Arquitetura de uma Webapp

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

Desenvolvimento Web com JSP/Servlets

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski

Prof. Roberto Desenvolvimento Web Avançado

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets

Aula 03 - Projeto Java Web

Desenvolvimento de aplicações web com JSP

Universidade da Beira Interior

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Programação Web Prof. Wladimir

Criação de uma aplicação usando Servlets

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Escrevendo meu primeiro porlet. Gustavo Lira Consultor 4Linux

Kassius Vargas Prestes

UNIDADE II JAVA SERVLETS

Servlets e Applets, funcionamento e comparativo.

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Programação em Rede. Servlets. Manipulação de dados de input em Servlets

UFG - Instituto de Informática

Curso de Aprendizado Industrial Desenvolvedor WEB

BEM-VINDOS AO CURSO DE ORIENTADO A OBJETOS

Desenvolvendo para WEB

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Desenvolvimento Web Protocolos da Internet

World Wide Web e Aplicações

Aula 4. Objetivos. Conteúdo dinâmico na internet.

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

UFG - Instituto de Informática

Curso de Aprendizado Industrial Desenvolvedor WEB

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Aula 14 Serviços Internet (Servidor Web Apache)

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

J2EE TM Java 2 Plataform, Enterprise Edition

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Tutorial. Começando a Criar Aplicativos SMS

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

INTRODUÇÃO À TECNOLOGIA SERVLETS

GERAÇÃO DE RELATÓRIOS

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Servlets & JSP. Prof. Ramon Chiara

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Integração de sistemas utilizando Web Services do tipo REST

Orientada a serviços: JAX-WS SOAP API

MÓDULO Programação para Web 2

TDC2012. EJB simples e descomplicado, na prática. Slide 1

Objetivo - AUMENTAR A PRODUTIVIDADE NO DESENVOLVIMENTO. Aumenta a produtividade de tal forma que o tempo de desenvolvimento é reduzido em até 80%.

Interface Homem Máquina para Domótica baseado em tecnologias Web

Programação para Internet II

UNIDADE III JAVA SERVER PAGES

Daniel Wildt FACENSA Grupo de Estudos Java - FUJA Slide: 1

Programação WEB Introdução

Arquitetura de Banco de Dados

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Experiência em missão crítica de missão crítica

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Programando em PHP. Conceitos Básicos

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Java para WEB com Struts 2 e Hibernate

Java II. Sérgio Luiz Ruivace Cerqueira

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

Autenticação e Autorização

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Transcrição:

Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Aplicações Convencionais vs. Web Aplicações convencionais Escritas usando uma linguagem de programação (ex.: Java) Sites de conteúdo estáhco Escritos usando uma linguagem de marcação (ex.: HTML) Aplicações Web Escritas usando uma mistura de linguagem de marcação (ex.: HTML) com linguagem de programação (ex.: Java) Conteúdo dinâmico Leo Murta Arquiteturas Web 2

Estratégias para gerar conteúdo dinâmico Marcação Programação Leo Murta Arquiteturas Web 3

Exemplo de marcação na programação (Servlet) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AloMundo extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getwriter(); response.setcontenttype("text/html"); out.println("<html><body>"); out.println("<p>servlet Alo Mundo...</P>"); for (int i = 0; i < 10; i++) { out.println(i + "<BR>"); } out.println("</body></html>"); } } Leo Murta Arquiteturas Web 4

Exemplo de programação na marcação (JSP) <HTML> <BODY> <P>JSP Alo Mundo...</P> <% for (int i = 0; i < 10; i++) { %> <%= i %><BR> <% } %> </BODY> </HTML> Leo Murta Arquiteturas Web 5

Servlet: Servlet x JSP Java é a linguagem principal Indicado para implementar regras de negócio e manipulação de dados JSP: HTML é a linguagem principal Indicado para interface com o usuário Leo Murta Arquiteturas Web 6

Dificuldade Conciliar os dois mundos Ferramentas dishntas (IDE vs. Editor) Habilidades dishntas (Programador vs. Web Designer) IDE Java Boa para escrever código Java Ruim para escrever HTML Editor HTML Bom para escrever HTML Ruim para escrever código Java Leo Murta Arquiteturas Web 7

Necessidade Organizar a forma de trabalho com essas tecnologias Especial relevância para sistemas grandes e complexos com equipes mul8disciplinares Leo Murta Arquiteturas Web 8

Aplicações Web Grande variedade de Hpos de aplicação e domínios Blog pessoal Site de um curso Ferramenta de busca Rede social Home- banking E- commerce Grande variedade de requisitos não- funcionais Desempenho Escalabilidade Robustez Segurança Disponibilidade Portabilidade Leo Murta Arquiteturas Web 9

Arquiteturas Web Visam separação de responsabilidades entre os componentes da aplicação Web Atendem os requisitos não- funcionais esperados pela aplicação A um custo do seu aumento de complexidade Qual a arquitetura que melhor resolve o problema no curto, médio e longo prazo? Curto prazo: desenvolvimento Médio prazo: produção Longo prazo: manutenção Leo Murta Arquiteturas Web 10

Arquiteturas Web As principais arquiteturas separam as responsabilidades em camadas Cada camada pode estar em uma ou mais máquinas diferentes O número de camadas (contado do lado servidor) varia em função da complexidade a ser lidada Leo Murta Arquiteturas Web 11

Arquiteturas Web Sistemas cliente- servidor tradicionais têm somente 1 camada no lado servidor Armazenamento Arquiteturas em 2 camadas têm separação das enhdades em Apresentação Armazenamento Arquiteturas em 3 camadas têm separação das enhdades em Apresentação Aplicação Armazenamento Leo Murta Arquiteturas Web 12

Arquitetura em 1 camada Cliente Servidor Armazenamento SGBD Leo Murta Arquiteturas Web 13

Arquitetura em 2 camadas Cliente Apresentação Servidor Armazenamento <html>... </html> SGBD Leo Murta Arquiteturas Web 14

Arquitetura em 3 camadas Cliente Servidor Apres. Aplicação Armaz. CompraProduto <html>... </html> Pedido Especificacao 1 1..* Item 0..* 1 Produto SGBD 1 0..* Leo Murta Arquiteturas Web 15

Regras de negócio Cliente? Servidor Armazenamento SGBD Onde estão as REGRAS DE NEGÓCIO? Leo Murta Arquiteturas Web 16

Regras de negócio Cliente Apresentação Servidor? Armazenamento <html>... </html> SGBD Onde estão as REGRAS DE NEGÓCIO? Leo Murta Arquiteturas Web 17

Regras de negócio Cliente Servidor Apres. Aplicação Armaz. CompraProduto <html>... </html> REGRAS DE NEGÓCIO Pedido Especificacao 1 1..* 1 0..* Item 0..* 1 Produto SGBD Leo Murta Arquiteturas Web 18

Por que Java? Java Community Process (JCP) Especificações (JSR) Implementações Ferramentas Implementação de referência Demais implementações Teste de compahbilidade IDEs Ferramentas de apoio Leo Murta Arquiteturas Web 19

Por que Java? (alguns membros do JCP) VMWare Apache Boeing Sybase CA Sun Eclipse Sony Fujitsu SAP Java Google Samsung Hitachi RedHat IBM Oracle Intel Novell Nokia NEC Motorola Leo Murta Arquiteturas Web 20

Arquiteturas Web em Java Java permite a adoção de diferentes arquiteturas web Dentre as mais famosas estão Model2 (mais simples) Java EE (mais complexa) Leo Murta Arquiteturas Web 21

Arquitetura Model2 em Java Servidores exemplo Cliente GlassFish Java DB Apresentação Aplicação Armazenamento <html>... </html> CompraProduto SGBD Browser (formularios + Applet) Aplicação Java JSP (página de resposta) Servlet (regras de negócio) JDBC (acesso a dados) SGBD (dados) Leo Murta Arquiteturas Web 22

Arquitetura Model2 em Java (elementos fundamentais) JSP Páginas HTML com código Java embuhdo Servlet Classes Java que rodam em servidores JDBC API de acesso a banco de dados em Java Leo Murta Arquiteturas Web 23

Arquitetura Model2 em Java (cenário jpico) Cliente Servidor Apresentação Aplicação Armazenamento <html>... </html> Servlet CompraProduto JDBC SGBD JSP Leo Murta Arquiteturas Web 24

Arquitetura Model2 em Java (cenário jpico) 1. Cliente solicita um Servlet usualmente após o preenchimento de um formulário HTML 2. Servidor interpreta o Servlet na camada de aplicação 3. Se necessário, a camada de aplicação se comunica com a camada de armazenamento através de JDBC 4. Camada de aplicação redireciona o fluxo para a camada de apresentação 5. Servidor constrói uma página de resposta usando JSP 6. Servidor retorna a página de resposta. Leo Murta Arquiteturas Web 25

Arquitetura Java EE Servidores exemplo Cliente GlassFish Java DB Apresentação Aplicação Armazenamento <html>... </html> CompraProduto SGBD Browser (formularios + Applet) Aplicação Java JSF (interface dinâmica) EJB (regras de negócio) JPA (entidades) SGBD (dados) Leo Murta Arquiteturas Web 26

JSF Arquitetura Java EE (elementos fundamentais) Framework de apresentação que faz uso disciplinado de Servlet e JSP EJB Componentes de negócio JPA EnHdades persistentes Leo Murta Arquiteturas Web 27

Arquitetura Java EE (cenário jpico) Cliente Servidor Apresentação Aplicação Armazenamento Servlet <html>... </html> EJB CompraProduto Pedido Especificacao 1 1..* Item 0..* 1 Produto SGBD SGBD JSF JPA 1 0..* Leo Murta Arquiteturas Web 28

Arquitetura Java EE (cenário jpico) 1. Cliente solicita um Servlet usualmente após o preenchimento de um formulário HTML 2. Servidor interpreta o Servlet e redireciona o fluxo para um EJB na camada de aplicação 3. Se necessário, a camada de aplicação faz uso de outros EJBs ou se comunica com a camada de armazenamento através de enhdades JPA 4. Camada de aplicação redireciona o fluxo para a camada de apresentação 5. Servidor constrói uma página de resposta usando JSF 6. Servidor retorna a página de resposta Leo Murta Arquiteturas Web 29

Containers Infraestrutura capaz de oferecer serviços básicos para códigos Java Segurança Transação Lookup e injeção de dependências e recursos ConecHvidade remota Gestão do ciclo de vida Leo Murta Arquiteturas Web 30

Containers Fonte: livro Java EE 7 Tutorial Leo Murta Arquiteturas Web 31

Container Web Containers Interface entre componentes web (Servlets, JSP ou JSF) e o servidor Java EE Container EJB Interface entre componentes EJB e o servidor Java EE Container Cliente Interface entre aplicações Java e o servidor Java EE Leo Murta Arquiteturas Web 32

Comunicação cliente- servidor Cliente Servidor Protocolo HTTP Leo Murta Arquiteturas Web 33

Protocolo HTTP O protocolo HTTP fornece um mecanismo simples de requisição- resposta Sem manutenção de estado Independente do Hpo do conteúdo Partes de uma mensagem HTTP Requisição (método + URL)/Resposta (código) Cabeçalho (pares chave- valor) Corpo da mensagem Leo Murta Arquiteturas Web 34

Protocolo HTTP Fonte: livro Java EE 7: The Big Picture Leo Murta Arquiteturas Web 35

Protocolo HTTP (Alguns métodos de requisição) GET Consulta dados do servidor Permite passagem de parâmetros, que aparecem na URL Não deve alterar o estado do servidor POST Insere dados no servidor, sem limite de tamanho ÚHl para enviar dados sensíveis, pois não ficam visíveis na URL Pode alterar o estado do servidor PUT Atualiza dados no servidor DELETE Remove dados do servidor Leo Murta Arquiteturas Web 36

Protocolo HTTP (Alguns códigos de resposta) 200 OK 401 Not Authorized 403 Forbidden 404 Not Found 408 Request Timeout 429 Too Many Requests 500 Internal Server Error 503 Service Unavailable Leo Murta Arquiteturas Web 37

Protocolo HTTP (URL) Uma URL é um conjunto de informações de idenhficação de recurso: hxp://www.xpto.com:8080/pub/exemplo.jsp?p1=v1&p2=v2 protocolo domínio porta caminho recurso parâmetros e argumentos Leo Murta Arquiteturas Web 38

Arquiteturas de Aplicações Web Leonardo Gresta Paulino Murta leomurta@ic.uff.br