Páginas dinâmicas. Eduardo Ferreira dos Santos. Agosto, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

Documentos relacionados
Processo de desenvolvimento

EA975 - Laboratório de Engenharia de Software

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22

Um Cliente de Webmail para ser acessado em Celulares

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW

Programação para Web

Capítulo 7. A camada de aplicação

UFCD 0793 Scripts CGI e Folhas de Estilo Formadora: Sónia Rodrigues

Ademir Cristiano Gabardo. Novatec

Análise Léxica II. Eduardo Ferreira dos Santos. Setembro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 30

Desenvolvimento Web. Introdução Geral. Prof. Vicente Paulo de Camargo

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Programação para Internet

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

PARA QUEM É ESTE CURSO?

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Desenvolvimento de Aplicações Distribuídas

REST. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 35

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Programação para Internet

Colocando um site na Internet

Engenharia de Software Aplicações de Internet

Nesta disciplina aprenderemos. HTML CSS JavaScript Jquery PHP

Sistemas Distribuídos

Introdução à Computação

Redes de Computadores

1- Confiabilidade ( 2 ) Proteção contra perdas e estragos. 2- Integridade ( 3 ) Proteção contra interferência de cortes de funcionamento

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1

SI06 DIMENSÃO TECNOLÓGICA I

Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Sistemas Distribuídos

Características de Sistemas Distribuídos

Sistemas Distribuídos

Firewall - Inspeção com estado. (Stateful Inspection)

Desenvolvendo Websites com PHP

POLÍTICA DE PRIVACIDADE (em vigor a partir de 30 de Agosto de 2017) ESCOPO DA POLÍTICA DE PRIVACIDADE E CONSENTIMENTO

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Redes de Computadores

Introdução a Sistemas Distribuídos

Características de Sistemas Distribuídos

EA975 - Laboratório de Engenharia de Software

O CMS JOOMLA! UM GUIA PARA INICIANTES

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Chamadas de Sistema (SYSCALL)

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

O que é um banco de dados? Banco de Dados. Banco de dados

Facilitando sua vida com

informação enviada (ex. Facebook) ou que a rede social utilize essa informação para sugerir locais de interesse próximos ao usuário (ex. Foursquare).

Introdução à Informática

Prof. Fabiano Taguchi

Preparação AV3 Fundamentos de Redes de Computadores

Browser é um programa desenvolvido para permitir a navegação pela web, capaz de processar diversas linguagens, como HTML, ASP, PHP.

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016

Unidade 1 Introdução

Java para Desenvolvimento Web Carga Horária: 40 Horas.

Editor: Rubens Prates PY Editoração eletrônica: Carolina Kuwabata Revisão gramatical: Patrizia Zagni Capa: Edinei Gonçalves/Carolina Kuwabata

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO WEB E MOBILE

Construção de sites Aula 1

Bancos de Dados Distribuídos

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Korth Silberschatz Sundarshan. Sistema de Banco de Dados, 5/E

Internet, Intranet e Extranet

POLÍTICA DE PRIVACIDADE. Políticas. Resumo Detalhamento da Política de Privacidade ao utilizar a Plataforma de Aplicações TASKED

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

INTRODUÇÃO À INTERNET E À WORLD WIDE WEB

Protocolo HTTP. Professor Leonardo Larback

CCT0298 ANALISE DE REDES Aula : Trafego HTTP

arquitetura shared-nothing em 3 camadas

Desenvolvimento Web. Versão 2 Jan/2019. Professor Emiliano S. Monteiro

XSL - extemsible Stylesheet Language. Prof. Antonio Almeida de Barros Jr.

Sistemas Especializados

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Processos ca 3 pítulo

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Trabalhando com PHP

AULA 01 Introdução (HTML, CSS e Javascript) PROGRAMAÇÃO PARA WEB Marcelo Henrique dos Santos

Gerência de memória II

Administradora de Consórcios. Uma nova era de treinamentos inicia agora.

Planificação Anual da disciplina de Redes de Comunicação 12º PI

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

ALCATEL-LUCENT ENTERPRISE RAINBOW TM

Internet Explorer 8.0 Navegador (Browser)

Programação para web HTML: Formulários

Web Presentation Patterns - Controllers

Download e Upload. De forma muito objetiva podemos dizer que um arquivo possui pelo menos três características que os definem:

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO

Sérgio Koch Van-Dall

SISTEMAS OPERACIONAIS DE REDE

Programação para Internet

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Capítulo 7. A camada de aplicação

Redes de Computadores.

Caracterização de Sistemas Distribuídos

Conceitos, Arquitetura e Design

Redes de Computadores I Seminário Novas Tecnologias em Redes HTML5. Jessica da Silva Hahn Letícia Aparecida Coelho

Transcrição:

Páginas dinâmicas Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 30

Sumário 1 Páginas dinâmicas 2 Engenharia de Software 2 / 30

Páginas dinâmicas 1 Páginas dinâmicas 2 Engenharia de Software 3 / 30

Páginas dinâmicas Enviando parâmetros Para que o conteúdo seja dinâmico os sistemas Web precisam suportar algum tipo de interação; Para o usuário interagir é necessário permitir o envio de parâmetros para o servidor Web. http://localhost/hello.php?name=manuel&title=dr O servidor Web envia os parâmetros para o interpretador da linguagem, que tem o papel de armazenar e processar os dados. Veja o exemplo para a linguagem PHP: $HTTP_Request GET /hello.php?name=manuel&title=dr HTTP/1.1 $QUERY_STRING name=manuel&title=dr $_GET["name"] Manuel $_GET["title"] Dr 4 / 30

Páginas dinâmicas Sistemas de templates Gerando HTML: Nenhuma da soluções utilizadas até agora permitem a separação entre HTML e código; A lógica da aplicação está misturada ao HTML. A mistura entre código HTML e aplicação é tão comum que, para mitigar o problema, foram desenvolvidos os sistemas de template (template systems). Template: arquivo HTML que contém tags (ou marcações) indicando o conteúdo que deve ser substituído; Normalmente existe um gateway CGI que substitui as tags pelo conteúdo: Todas as denições de layout e estilo estão no template; Todo o conteúdo e processamento está no CGI; Separação clara entre conteúdo e lógica. Diversas implementações em diferentes linguagens. 5 / 30

Páginas dinâmicas Engenharia de templates Algumas vezes, a lógica da aplicação está embutida no template; Questões relativas à Engenharia de Software: O que é separação de contexto (separation of concerns)? O que é decisão de projeto (design choice)? O que são dependências? 6 / 30

Páginas dinâmicas 1 Fonte: https://pt.wikipedia.org/wiki/ficheiro:tempenggen015.svg 7 / 30 Template Engines As template engines tentam resolver o problema das dependências tornando o processamento da aplicação independente do layout. Figura 1.1: Diagrama para template Engines 1

Páginas dinâmicas Exemplo PHP Listing 1: Exemplo de engine em PHP [Pérez-Quiñones, 2011] f u n c t i o n g e n e r a t e _ p a g e ( $ f i l e, $ v a r i a b l e s ) { // r e a d t h e f i l e // s e a r c h f o r %symbol% and r e p l a c e w i t h $ v a r i a b l e s [ ' symbol ' ] } Listing 2: Arquivo de template chamando as variáveis [Pérez-Quiñones, 2011] <h t m l> <body> H e l l o %NAME% </ body> </ h t m l> Listing 3: Chamada da engine [Pérez-Quiñones, 2011] $names = a r r a y ( " N A M E "=>" J o e ", " L A S T "=>" S m i t h " ) ; g e n e r a t e _ p a g e ( " t e m p. h t m l ", $names ) ; 8 / 30

Páginas dinâmicas Limitações Qual o contexto em que nossa engine de template falharia? Dados estruturados; Arrays; Formatação condicional. 9 / 30

1 Páginas dinâmicas 2 Engenharia de Software 10 / 30

Desaos [Andersson et al., 2006] Alguns desaos inerentes às aplicações para a Web: Sessões compartilhadas e portáveis; Compartilhamento de músicas; Compartilhamento de fotos; Compartilhamento de documentos. O que normalmente não é possível compartilhar é a sua experiência utilizando a Internet; Utilização de dispositivos móveis; Computação ubíqua. O computador pode me ajudar a ser tudo o que eu preciso? 11 / 30

Exemplo de desao E se pudéssemos construir uma espécie de nutricionista pessoal online? Vamos chamá-lo de Doutor [Andersson et al., 2006]: 09h00 Você liga para o Doutor do seu celular: Doutor Qual foi o seu café? Você Um copo de suco, duas fatias de pão e uma xícara de café com leite. Doutor Qual o tamanho do copo de suco? Você Médio 10h45 Você come um bolo trazido por um companheiro de trabalho a avisa o Doutor. Ele informa o que você já comeu e quando de caloria ainda pode consumir. 12 / 30

Exemplo de desao (cont.) 13h30 Você come um sanduíche e uma Coca Zero. Você acessa o Doutor e reporta o consumo. 16h00 Você faz uma pausa para o lanche e come salgadinho e refrigerante. Você decide acessar o celular e informar o Doutor do seu consumo. 19h00 Você malha por 45 minutos e informa o Doutor pelo celular. 20h30 Você chega em casa, janta e o Doutor fornece o relatório diário de quanto você consumiu e se está perto ou longe da meta. Você está cando gordo. 13 / 30

Modelagem do Doutor Alguns componentes identicados no exemplo: Um modelo adaptativo de usuário; Banco de dados de calorias para diferentes comidas; Algum conhecimento sobre nutrição; Total de calorias consumidas x Peso estimado por idade. Interface Web para navegadores; Interface Web para dispositivos móveis; Um sistema de reconhecimento de voz? Objetivo principal da Web: conectar-se com outras pessoas; Qual a importância da conexão com outras pessoas percebida na Web atual? Como você arrumou seu último emprego/estágio? 14 / 30

Limitações do HTTP Protocolo HTTP Não armazena estado (stateless) e anônimo; Quando a conexão é nalizada, toda a comunicação é nalizada; Como criar uma experiência contínua em cima dessa limitação do HTTP? 15 / 30

Limitações do HTTP Protocolo HTTP Não armazena estado (stateless) e anônimo; Quando a conexão é nalizada, toda a comunicação é nalizada; Como criar uma experiência contínua em cima dessa limitação do HTTP? Como armazenar o estado entre diferentes requisições? 16 / 30

Limitações do HTTP Protocolo HTTP Não armazena estado (stateless) e anônimo; Quando a conexão é nalizada, toda a comunicação é nalizada; Como criar uma experiência contínua em cima dessa limitação do HTTP? Como armazenar o estado entre diferentes requisições? Arquivo de log no servidor? 17 / 30

Limitações do HTTP Protocolo HTTP Não armazena estado (stateless) e anônimo; Quando a conexão é nalizada, toda a comunicação é nalizada; Como criar uma experiência contínua em cima dessa limitação do HTTP? Como armazenar o estado entre diferentes requisições? Arquivo de log no servidor? HTTP não sabe quem está conectando. No mesmo endereço IP podem estar potecialmente milhares de usuários. 18 / 30

Enviando parâmetros Para que o conteúdo seja dinâmico os sistemas Web precisam suportar algum tipo de interação; Para o usuário interagir é necessário permitir o envio de parâmetros para o servidor Web. http://localhost/hello.php?name=manuel&title=dr O servidor Web envia os parâmetros para o interpretador da linguagem, que tem o papel de armazenar e processar os dados. Veja o exemplo para a linguagem PHP: $HTTP_Request GET /hello.php?name=manuel&title=dr HTTP/1.1 $QUERY_STRING name=manuel&title=dr $_GET["name"] Manuel $_GET["title"] Dr 19 / 30

Utilização de URI's Suponha que o usuário acesse o seguinte endereço HTTP: http://www.amazon.com/exec/obidos/asin/1588750019/ O número 1588750019 representa o International Standard Book Number ISBN que identica unicamente o livro; O servidor da Amazon altera a URL para adicionar o identicador da sessão: http://www.amazon.com/exec/obidos/asin/1588750019/ 103-9609966-7089404 Ao continuar acessando diferentes livros, é possível perceber que todos possuirão o mesmo identicador de sessão. 20 / 30

Cookies Ao invés de brincar com hyperlinks, utilizados armazenamento no browser; Uma das formas de armazenar dados é utilizar informações conhecidas como cookies 2 ; Exemplo: ao enviar a primeira requisição, o servidor escreve: 1 Set-Cookie: cart_contents=1588750019; path=/ 2 Enquanto o navegador estiver aberto, a seguinte informação é adicionada no header: Cookie: cart_contents=1588750019 Quais os problemas dessa abordagem? 2 Persistent Client State HTTP Cookies Especicação preliminar http://wp.netscape.com/newsref/std/cookie_spec.html 21 / 30

Armazenamento no servidor Qual a melhor maneira de armazenar a informação? Planilhas eletrônicas? Arquivos de texto? Problema da concorrência; Utilização de bancos de dados. 22 / 30

RDBMS Vantagens do banco de dados relacional: Resolve o problema da concorrência; Utiliza linguagem declartiva SQL; Isola partes importantes de erros do programador: Chaves primárias; Não permite alterações não estruturadas; Três operações: INSERT, UPDATE, SELECT Performance. Desvantagens: Difícil manutenção; Trocar de banco pode ser um grande desao; O problema das consultas. 23 / 30

Esquema relacional Figura 2.1: No esquema relacional, não é fácil adicionar um novo atributo quando necessário 4 3 Fonte: http://www.couchbase.com/binaries/content/gallery/website/ 24 / 30

Flexibilidade Figura 2.2: No esquema não relacional a alteração do esquema é dinâmica 5 5 Fonte: http://www.couchbase.com/binaries/content/gallery/website/ common/why-nosql/figure2_flexible_schema.png 25 / 30

JOIN relacional Figura 2.3: O objeto é dividido em diferentes tabelas 6 6 Fonte: http://www.couchbase.com/binaries/content/gallery/website/ common/why-nosql/figure3_object_to_relational.png 26 / 30

Objeto íntegro Figura 2.4: Sempre o objeto inteiro é carregado 7 7 Fonte: http://www.couchbase.com/binaries/content/gallery/website/ common/why-nosql/figure5_object_to_document.png 27 / 30

Desaos do desenvolvimento Há pouco tempo, o desenvolvimento era feito por diferentes atores: Programador; Designer; DBA. Nova gura: full stack developer. Você é capaz de administrador quantos bancos de dados? Na nova Web, tudo é serviço! Importância da utilização de padrões e frameworks. 28 / 30

OBRIGADO!!! PERGUNTAS??? 29 / 30

Andersson, E. A., Greenspun, P., Grumet, A., Eve Andersson, P. G., et al. (2006). Software engineering for Internet applications. Number Sirsi) i9780262511919. Pérez-Quiñones, M. A. (2011). Internet software. Disponível em http://dopey.cs.vt.edu/courses/cs4244-s11/ Acessado em 03/08/2016. 30 / 30