• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
30
0
0

Texto

(1)

Páginas dinâmicas

Eduardo Ferreira dos Santos

Ciência da Computação

Centro Universitário de Brasília  UniCEUB Agosto, 2016

(2)

Sumário

1 Páginas dinâmicas

(3)

Páginas dinâmicas

1 Páginas dinâmicas

2 Engenharia de Software

(4)

Páginas dinâmicas

Enviando parâmetros

Para que o conteúdo seja dinâmicoos sistemas Web precisam suportar algum tipo deinteração;

Para o usuário interagir é necessário permitir oenvio de parâmetros para o servidor Web.

http://localhost/hello.php?name=Manuel&title=Dr O servidor Web envia os parâmetros para o interpretadorda linguagem, que tem o papel dearmazenar eprocessar 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

(5)

Páginas dinâmicas

Sistemas de templates

Gerando HTML:

Nenhuma da soluções utilizadas até agora permitem aseparaçãoentre

HTMLecó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 ossistemas de template (template systems).

Template: arquivo HTML que contém tags (oumarcaçõ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.

(6)

Páginas dinâmicas

Engenharia de templates

Algumas vezes, a lógica da aplicaçãoestá 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)?

(7)

Páginas dinâmicas

Template Engines

As template engines tentam resolver o problema das dependências tornando o processamento da aplicação independentedo layout.

Figura 1.1:Diagrama para template Engines1

1Fonte: https://pt.wikipedia.org/wiki/Ficheiro:TempEngGen015.svg

(8)

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 generate_pag 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 ' ] 5 }

Listing 2: Arquivo de template chamando as variáveis [Pérez-Quiñones, 2011] <html> <body> H e l l o %NAME% </ body> 5 </ html>

Listing 3: Chamada da engine [Pérez-Quiñones, 2011]

$names = a r r a y ( " N A M E "=>" J oe " , " L A S T "=>" S m i t h " ) ; generate_page ( " t e m p . h t m l " , $names ) ;

(9)

Páginas dinâmicas

Limitações

Qual o contexto em que nossa engine de template falharia? Dados estruturados;

Arrays;

Formatação condicional.

(10)

Engenharia de Software

1 Páginas dinâmicas

(11)

Engenharia de Software

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?

(12)

Engenharia de Software

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.

(13)

Engenharia de Software

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.

(14)

Engenharia de Software

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?

(15)

Engenharia de Software

Limitações do HTTP

Protocolo HTTP Não armazena estado (stateless) eanô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 oestadoentre diferentes requisições? Arquivo de log no servidor?

HTTP não sabequemestá conectando.

No mesmo endereço IP podem estar potecialmente milhares de usuários.

(16)

Engenharia de Software

Limitações do HTTP

Protocolo HTTP Não armazena estado (stateless) eanô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 oestadoentre diferentes requisições?

Arquivo de log no servidor?

HTTP não sabequemestá conectando.

No mesmo endereço IP podem estar potecialmente milhares de usuários.

(17)

Engenharia de Software

Limitações do HTTP

Protocolo HTTP Não armazena estado (stateless) eanô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 oestadoentre diferentes requisições? Arquivo de log no servidor?

HTTP não sabequemestá conectando.

No mesmo endereço IP podem estar potecialmente milhares de usuários.

(18)

Engenharia de Software

Limitações do HTTP

Protocolo HTTP Não armazena estado (stateless) eanô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 oestadoentre diferentes requisições? Arquivo de log no servidor?

HTTP não sabequemestá conectando.

No mesmo endereço IP podem estar potecialmente milhares de usuários.

(19)

Engenharia de Software

Enviando parâmetros

Para que o conteúdo seja dinâmicoos sistemas Web precisam suportar algum tipo deinteração;

Para o usuário interagir é necessário permitir oenvio de parâmetros para o servidor Web.

http://localhost/hello.php?name=Manuel&title=Dr O servidor Web envia os parâmetros para o interpretadorda linguagem, que tem o papel dearmazenar eprocessar 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

(20)

Engenharia de Software

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úmero1588750019 representa o International Standard Book Number  ISBN  que identica unicamenteo 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.

(21)

Engenharia de Software

Cookies

Ao invés de brincar com hyperlinks, utilizadosarmazenamento no browser;

Uma das formas de armazenar dados é utilizar informações conhecidas como cookies2;

Exemplo: ao enviar a primeira requisição, o servidor escreve:

1

Set-Cookie: cart_contents=1588750019; path=/

Enquanto o navegador estiver aberto, a seguinte informação é adicionada no header:

2

Cookie: cart_contents=1588750019 Quais os problemas dessa abordagem?

2Persistent Client State HTTP Cookies  Especicação preliminar

http://wp.netscape.com/newsref/std/cookie_spec.html

(22)

Engenharia de Software

Armazenamento no servidor

Qual a melhor maneira de armazenar a informação? Planilhas eletrônicas?

Arquivos de texto? Problema daconcorrência; Utilização de bancos de dados.

(23)

Engenharia de Software

RDBMS

Vantagens do banco de dados relacional: Resolve o problema daconcorrência; Utiliza linguagem declartivaSQL;

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 dasconsultas.

(24)

Engenharia de Software

Esquema relacional

Figura 2.1:No esquema relacional, não é fácil adicionar um novo atributo quando necessário4 3Fonte: http://www.couchbase.com/binaries/content/gallery/website/ common/why-nosql/figure1_explicit_schema.png 4Fonte: http://www.couchbase.com/binaries/content/gallery/website/ common/why-nosql/figure1_explicit_schema.png 24 / 30

(25)

Engenharia de Software

Flexibilidade

Figura 2.2:No esquema não relacional a alteração do esquema é dinâmica5 5Fonte: http://www.couchbase.com/binaries/content/gallery/website/

common/why-nosql/figure2_flexible_schema.png

(26)

Engenharia de Software

JOIN relacional

Figura 2.3:O objeto é dividido em diferentes tabelas6 6Fonte: http://www.couchbase.com/binaries/content/gallery/website/

(27)

Engenharia de Software

Objeto íntegro

Figura 2.4:Sempre o objeto inteiro é carregado7

7Fonte: http://www.couchbase.com/binaries/content/gallery/website/

common/why-nosql/figure5_object_to_document.png

(28)

Engenharia de Software

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!

(29)

Engenharia de Software

OBRIGADO!!! PERGUNTAS???

(30)

Engenharia de Software

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.

Referências

Documentos relacionados

O melhor caminho para começar é a leitura de artigos tipo survey e/ou livros sobre o tema ;. Algoritmo auto-construído para seleção de fontes de leitura: 1 Seleção de tópicos a

Os administradores e colaboradores da Missão Compliance poderão entregar ou oferecer Brindes com a marca da Missão Compliance, elaborados pela empresa, com intuito

O estudo mostrou que todos os participantes do Centro Universitário de Brasília UniCEUB na modalidade de treino resistido, avaliados na pesquisa, estão com

Monografia apresentada como um dos requisitos para conclusão do curso de Administração do UniCEUB – Centro Universitário de Brasília.. Agradeço a Deus essa

Entendendo as limitações do modelo atual, descrito no tópico anterior, e utilizando conceitos e componentes elétricos e eletrônicos visando à possibilidade de

Este trabalho apresenta um sistema de controle para a identificação e controle de atividades realizadas com animais de estimação em um estabelecimento Pet Shop,

Neste projeto é apresentada uma iniciativa para automação de um sistema de iluminação, mais eficiente, agregando o uso de sensor de luminosidade, microcontrolador

Este é um projeto desenvolvido para a disciplina de Estágio Supervisionado, do curso de Marketing do Centro Universitário de Brasília – UniCEUB com o propósito de