ajax

47
AJAX Paradigma e Técnicas para Programação de Interfaces WEB Miguel Galves UNESP - 2006

Upload: miguel-galves

Post on 19-Jun-2015

149 views

Category:

Software


0 download

DESCRIPTION

Palestra sobre AJAX apresentada na Semana da Computação, UNESP Rio Claro 2006

TRANSCRIPT

Page 1: AJAX

AJAX

Paradigma e Técnicaspara Programação de

Interfaces WEB

Miguel GalvesUNESP - 2006

Page 2: AJAX

Agenda

● Pequeno histórico da Web● Modelo de funcionamento de um site● Evolução da arquitetura de sites● AJAX: Definição● Motivo do sucesso● Modelo de funcionamento● Vantagens● Problemas● Ferramentas e libs de suporte

Page 3: AJAX

Recapitulando...

● 1969: Criação da ARPANET

● 1981: Criação da rede BITNET– Rede de comunicação universitária

● 1983: Primeira rede TCP/IP operacional nos EUA.

● Killer App dos primórdios da rede mundial de computadores: e-mail

Page 4: AJAX

WWW

● 1991: Tim Berners Lee, do CERN, propõe um protocolo para acesso e visualização de arquivos baseado em Hipertexto.

● HTML

● HTTP

● Killer app: NCSA MosaicNCSA Mosaic

Page 5: AJAX

Anatomia simplificada de um sistema HTTP/HTML

● Arquivos de texto formatados por meio de tags (HTML).

● Sistema de localização de recursos padronizado (URL).

● Links que permitem ir de um arquivo para o outro (HTTP).– “Navegação”

Page 6: AJAX

Anatomia simplificada de um sistema HTTP/HTML

Fonte: “Ajax: A New Approach to Web Applications”

Page 7: AJAX

Panorama inicial

● HTML ● Apache● CGI● C e Perl

HTTP 1.0

Page 8: AJAX

Evoluções do panorama

● DHTML● CSS● JavaScript● VBScript● XHTML● XML● Applets● Flash● Shockwave

● Linguagens– Python– Ruby– Java

● Servidores de aplicação– Zope– Tomcat– Jboss

● CMS

HTTP 1.1

Page 9: AJAX

Mas a interação...

...continua a mesma !!!

Page 10: AJAX

AJAX

● Asynchrounous JavaScript XML● Paradigma de desenvolvimento de interfaces

Web● Conjunto de tecnologias bem conhecidas

– Javascript + DOM– XML– CSS + HTML

● O elemento responsável pela mágica:– XMLHTTPRequest

Page 11: AJAX

Quebrando alguns mitos

● AJAX não é uma tecnologia !● AJAX não necessita de lib !● AJAX não é dependente de tecnologia no

servidor !● AJAX não modifica o protocolo de

comunicação entre cliente e servidor !● Todas as tecnologias necessárias para

desenvolvimento AJAX estão embutidas nos navegadores.

Page 12: AJAX

Mas peraí...

● HTML foi criado em 1991● CSS foi proposto em 1994● Javascript foi criado em 1995● XML foi proposto em 1997● XMLHTTPRequest foi adicionado ao IE 5.0

em 1999● AJAX foi “criado” em 2005...

Page 13: AJAX

Mas peraí...

Qual o motivo do Qual o motivo do sucesso repentinosucesso repentino

??

Page 14: AJAX

Motivo número 1

● Marketing é a alma do negócio!!!

● Nome AJAX criado em 18 de fevereiro de 2005– Jesse James Garret– “Ajax: A New Approach to Web Applications”

● Artigo propõe um novo paradigma de interação entre usuário e sites web.

Page 15: AJAX

Motivo número 2

● Web 2.0– Termo proposto pro Tim O'Reilly

● Web como plataforma de serviços e não apenas como plataforma de conteúdo.– Sistemas que agreguem valor ao usuário

● Maior interação do usuário com os sites.– Usuário deixa de ser mero espectador.

Page 16: AJAX

Motivo número 2

● Britannica Online → Wikipedia

● CMS → Wikis

● mp3.com → Napster

● Sites pessoais → Blogs

● Diretórios (taxonomia) → Etiquetas (tags)

● Akamai → BitTorrent

Page 17: AJAX

Motivo número 3

● Popularização da banda larga

● Maior poder de processamento dos computadores

Page 18: AJAX

Last but not least, motivo 4

● Killer app !!!

● Gmail

Page 19: AJAX

Resumindo

● Infraestrutura disponível.

● Nome criado.

● Momento de reflexão sobre web = ambiente favorável.

● Aplicativo de sucesso mostrando as possibilidades existentes.

Page 20: AJAX

Modelo de comunicaçãocliente/servidor

Fonte: “Ajax: A New Approach to Web Applications”

Page 21: AJAX

Elementos chave

● Utiliza HTTP para comunicação cliente/servidor.

● Resposta enviada em diversos formatos:– XML – JSON – HTML– Texto

Page 22: AJAX

Elementos chave

● Permite atualizar apenas uma parte da página, via Javascript.

● Executa conexões assíncronas (background)– Interface continua funcional entre envio de

requisição e recepção da resposta.

● Aumento do número de conexões, com transferência de quantidade menor de dados por conexão.

Page 23: AJAX

Elementos chave

● Requer uma camada extra para processamento:Engine AJAX.

● Engine “tradicionalmente” escrito em Javascript.

● Engine executa boa parte do processamento antes delegados ao servidor e ao navegador.

Page 24: AJAX

Engine AJAX

Fonte: “Ajax: A New Approach to Web Applications”

Page 25: AJAX

Engine AJAX: Atribuições

● Pré-processamento de dados.● Registro de handler de recepção.● Envio da requisição.● Pooling para verificar se processamento foi

efetuado.● Recepção e processamento dos dados

recebidos, caso necessário.● Rendering do resultado no navegador.

Page 26: AJAX

Engine AJAX:Pré-Processamento

● Fase tradicionalmente de responsabilidade do navegador.

● Coleta os dados a serem enviados ao servidor:– Dados de formulário– Informações processadas pelo script.

Page 27: AJAX

Engine AJAX:Pré-Processamento

● Converte os dados para o formato apropriado para requisição.– Substitui espaços por símbolo +– Substitui acentos e símbolos especiais como

&,%,=,+ e outros pelo código UTF-8

● Monta String de requisição– Formato de URL– Par (chave, valor)– Exemplo: nome=Miguel&sobrenome=Galves

Page 28: AJAX

Engine AJAX:Registro de handler e envio de requisição

● Define uma função handler, que irá tratar a resposta assim que esta estiver disponível.

● Define o objeto que será utilizado para envio da requisição:– IE: ActiveXObject(“Microsoft.XMLHTTP”)– Firefox: XMLHTTPRequest()

● Define o método de envio (POST ou GET).● Define cabeçalhos opcionais.● Executa o envio.

Page 29: AJAX

Engine AJAX: Pooling

● Servidor não envia sinais ao navegador.● Cliente tem que ficar em pooling, verificando

se resposta já foi enviada.● Processo de pooling ocorre em background

– Thread separada, gerenciada pelo navegador.● A cada ciclo de verificação, a função handler

é chamada.– Handler deve verificar se a notificação

corresponde ao final do processamento, ou a eventuais erros de envio/recepção

Page 30: AJAX

Engine AJAX: Recepção e processamento dos dados

● Resposta pode vir em diversos formatos:XML, HTML, JSON, ...

● XML e JSON: necessário extrair os dados da árvore para uso pelo script.

● Decodificação de strings.● Eventuais processamentos não efetuados

pelo servidor podem ser executados nesta fase, com javascript.

Page 31: AJAX

Engine AJAX: Rendering

● Modifica a página exibida no navegador.

● Utiliza a interface de Javascript com CSS para mexer em estilos.

● Utiliza a interface de Javascript com DOM HTML para remover e inserir novos elementos na página.

Page 32: AJAX

Vantagens de AJAX

● Transição entre estados mais leve e eficiente.

● Aprimora a interatividade entre o usuário e o site:– Google Calendar

● Permite oferecer funcionalidades próximas às funcionalidades oferecidas por aplicações desktop.– Yahoo! Mail = Outlook– Google Spreadsheets = Microsoft Excel

Page 33: AJAX

Mas nem tudo são flores...

● Desenvolvimento de sites utilizando AJAX podem ser muito trabalhosos.

● Existe uma série de condições de contorno que devem ser levadas em conta quando se desenvolve um site em AJAX.

Page 34: AJAX

Condições de Contorno

● Compatibilidade de browser● Concorrência● Modelo de interação usuário/site

– Amnésia– Feedback

● Ferramentas de desenvolvimento

Page 35: AJAX

Compatibilidade de browser

● Navegadores apresentam incompatibilidades em vários aspectos:– Registro e tratamento de eventos– Manipulação de DOM– Manipulação do objeto de requisição– CSS

● Desenvolvimento de sites compatíveis com qualquer browser requerem uma boa quantidade de testes e códigos específicos.

Page 36: AJAX

Concorrência

● XMLHTTPRequest permite a criação de chamadas assíncronas concorrentes.

● Script deve ser capaz de tratar problemas de concorrência:– Por exemplo: um link clicado duas vezes por

enganos disparando duas requisições para um mesmo evento.

Page 37: AJAX

Modelo de interação usuário/site

● Modelo mental é muito importante na interação de uma pessoa com um software, site ou objeto.

● Modelo mental relacionado à navegação na internet bem conhecido:– Links, progressão darequisição, espera da

resposta, histórico.● AJAX pode modificar alguns desses

modelos.

Page 38: AJAX

Modelo de Interação:Amnésia

● Modelo de navegação web: páginas com links, levando de uma para outra.

● Cria-se um histórico de páginas visitadas. – Página visitada = URL único.

● Botões Back e Forward permitem voltar para página anterior.

Page 39: AJAX

Modelo de Interação:Amnésia

● Com Ajax, desenvolvedores tendem a criar sites com uma página só.

● Navegador não mantém histórico de navegação. Site com amnésia.– Back e forward inúteis.– Fonte de erros de navegação.

● Desenvolvedores tem que implementar o mecanismo de histórico manualmente.

Page 40: AJAX

Modelo de Interação:Feedback

● Em site comum, o navegador exibe status quando se carrega uma página.

Page 41: AJAX

Modelo de Interação:Feedback

● Este feedback não acontece quando a requisição é assíncrona.

● Desenvolvedor deve prover o feedback.

Page 42: AJAX

Ferramentas de desenvolvimento

● Por ser uma metodologia nova, não existem ferramentas que abrangem todo o fluxo de trabalho de forma adequada.

● Ferramentas necessárias:– Design– Programação Javascript– Debbuger

Page 43: AJAX

Debuggers: Firebug

● Plugin para Firefox● Exibe mensagens de erros de execução

Javascript.● Permite executar passo-a-passo scripts

carregados no navegador.● Permite analisar DOM, Eventos, Layout e

CSS da página.● Mostra a String de requisição enviada ao

servidor e o XML recebido.

Page 44: AJAX

Debuggers: Webdeveloper

● Plugin para Firefox● Permite analisar formulários, e modificar

modo de envio de requisição (POST/GET).● Permite análise de CSS, destaca elementos

na página, e suporta edição de CSS online.● Exibe código HTML gerado em runtime por

scripts (extremamente útil !!!).

Page 45: AJAX

Bibliotecas

● Existe uma grande quantidade de bibliotecas sendo desenvolvidos para facilitar o desenvolvimento de aplicações web.

● Bibliotecas oferecem tipos de funcionalidades diferentes:– Dojo e Rialto– OpenRico e Prototype– Google Web Toolkit– OpenLaszlo, TurboGears, Ruby On Rails

Page 46: AJAX

That's all folks !

DUVIDAS ?

Page 47: AJAX

Muito obrigado !

Log4DevMeu Blog de Tecnologia:

http://log4dev.wordpress.com