SlideShare uma empresa Scribd logo
Iniciativa Globalcode Introdução a AJAX Open-source Education
Palestrantes Jorge Diz [email_address] Melissa Villela [email_address]
Agenda  Histórico O que é AJAX ? Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
Histórico Web “1.0” (até 2004) Páginas dinâmicas CGI (no servidor) em Perl, C, Korn shell Client-side scripting: JavaScript, VBScript Server pages: ASP, JSP, PHP Aplicações web baseadas em páginas  Frameworks: Struts, JSF, Spring Sites como “silos” de informação.
Histórico Web 2.0 (2005 em diante ) A web como plataforma O software como serviço Desenvolvimento participativo Atualização permanente Empresas de sucesso são mais facilitadoras que controladoras Software--> infoware (foco nos dados) Composição de serviços  Interfaces ricas (AJAX !)
Agenda  Princípios Histórico O Que é AJAX Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
O que é AJAX? Segundo Jesse James Garrett (inventor do termo) : “ AJAX não é uma tecnologia. São, na verdade, várias tecnologias, [...] juntando-se de maneiras novas e poderosas. AJAX incorpora:” apresentação baseada em padrões utilizando XHTML e CSS; display e interação dinâmicos utilizando o DOM; intercâmbio e manipulação de dados usando XML e XSLT recuperação assíncrona de dados usando XHR; e JavaScript amarrando tudo isso junto”
O que é AJAX? Traduzindo ... AJAX (fev/2005): “Advanced JavaScript, Asynchronous XMLHttpRequest”  AJAX (hoje): “Asynchronous JavaScript and XML” XML: eXtensible Markup Language XHTML: HTML expresso como dialeto de XML  CSS: Cascading Style Sheets - padrão para formatação de documentos (X)HTML DOM: Document Object Model – modelo para manipulação de documentos HTML.
O que é AJAX? ... traduzindo ... Assíncrono: modo de operação de um protocolo em que o solicitante não fica esperando pela resposta. Em vez disso, registra uma função de callback que vai tratar a resposta quando ela chegar. XSLT: eXtensible Stylesheets Language Transformations: padrão para transformação de documentos XML. XHR: XMLHttpRequest: método JavaScript para solicitações HTTP, em formato XML ou texto, podendo operar em modo assíncrono JavaScript: implementação do padrão ECMAScript que contem um DOM HTML.
O que é AJAX? Em outras palavras ... AJAX é um modelo de programação ... …  para aplicações web ricas, baseado em JavaScript executado no browser e em padrões da do W3C ... onde o modelo da página é manipulado via programa ... onde a página é atualizada a qualquer momento com dados vindos do servidor. ... onde alguns eventos de usuário são reportados ao servidor imediatamente.
O que é AJAX ? Princípios O browser hospeda uma aplicação, não apenas “conteúdo” “ Single-Page Application” O servidor entrega dados, não apenas “conteúdo” Data-centric Parte do modelo no browser É viável que a interação do usuário seja fluída e contínua Atualizações assíncronas  UI baseadas em eventos Isto é código de verdade e requer disciplina ! JavaScript Design Patterns Metodologia de desenvolvimento
O que  não  é AJAX? Apenas o uso de HTML dinâmico (DHTML) Apenas o uso de JavaScript Apenas o uso de CSS Apenas o uso de tecnologias baseadas em XML AJAX pressupõe  interação assíncrona entre browser e servidor web
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Como funciona? Modelo clássico de sistemas web
Como funciona? Utilizando Ajax
Como funciona? Requisições de HTTP assíncronas Mecanismo para ActiveX no IE if (window.ActiveXObject)  request = new ActiveXObject(“Microsoft.XMLHTTP”); } Implementações alternativas nos principais browsers if (window.XMLHttpRequest ) { request = new XMLHttpRequest(); } Podemos utilizar bibliotecas JavaScript que isolam a dependência de browsers (ex: Sarissa)
Como funciona? Requisições de HTTP assíncronas (cont.) Também são utilizadas no ambiente do servidor (para acesso assíncrono a Web Services). As requisições são tratadas por servlets ou equivalentes (para outras tecnologias) O content type utilizado pode ser XML, JSON(*), ou outro formato baseado em texto  (*) JSON =  JavaScript Object Notation – sintaxe para atribuição de conteúdo /   serialização de objetos JavaScript, mais legível e concisa que XML.
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Vantagens Aplicações com menor tempo de resposta em relação a arquiteturas clássicas Não é necessário trazer uma página inteira a cada interação Aplicações mais próximas de um ambiente de desktop Interatividade maior, modelo de tratadores de eventos Deployment simplificado em relação ao ambiente desktop Vantagem própria de qualquer aplicação Web Roda em qualquer navegador moderno IE, Mozilla, Firefox, Safari, Konqueror, Opera
Vantagens Viabiliza interação com o servidor Dados carregados sob demanda, sem onerar o carregamento inicial da página Regras de negócio são tratadas onde for mais apropriado. Utilização mais eficiente de largura de banda,  (quando bem implementado)
Vantagens Modelo clássico de sistemas web
Vantagens Utilizando Ajax
Vantagens
Desvantagens Um grande número de decisões sobre a definição de arquitetura:  Componentes centrados na plataforma do servidor ou do cliente ? Qual a granularidade das interações entre cliente e servidor ? Quando passar dados e quando conteúdo ? Como dividir o modelo da aplicação entre a camada cliente e a camada de apresentação do lado do servidor ? XML ou JSON ? É necessário conhecer mais tecnologias e conceitos:  JavaScript,  interface-usuário, programação baseada em eventos usabilidade,  componentes,  protocolos,  modelos de objetos, transformações XML  padrões da W3C, ECMA.
Desvantagens Quebra do modelo de navegação da Web Favoritos, Voltar, Cache, Logs: outro modelo de usabilidade Metodologias de desenvolvimento precisam evoluir Como testar?  Como monitorar desempenho?  Quais os patterns/ boas práticas?  Não basta seguir um framework ! Bibliotecas com paradigmas diferentes para partes da solução Diferentes implementações entre browsers Alguém já viu esse filme ?
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Implementação Demo
Implementação 1  var  request; 2  3  function  sendRequest(url) { 4  5  //Inicializa o objeto XMLHttpRequest para o Mozilla 6  if  ( window.XMLHttpRequest ) { 7  request =  new  XMLHttpRequest(); 8  } 9  //Inicializa o objeto XMLHttpRequest para o Internet Explorer 10  else   if  (window.ActiveXObject) { 11  request =  new  ActiveXObject(“Microsoft.XMLHTTP”); 12  } 13  //determina a função para processamento da requisição 14  request.onreadystatechange = processRequest; 15  16  //configura a requisição 17  request.open(“GET”,url, true ); 18  19  //envia a requisição 20  request.send( null ); 21  } 22  23  function  processRequest() { 24  25  //Verifica se a resposta já foi recebida por completo 26  if (request.readyState ==  4 ) { 27  //Verifica se o status é OK 28  if (request.status ==  200 ) { 29  preencheComboCidade(); 30  } 31  } 32  } Incompatiblidade de browsers Função para tratar a resposta assíncrona Código a ser desenvolvido
Implementação 41  function  preencheComboCidade() { 46  //Faz a leitura do documento XML recebido 47  var  response = request.responseXML; 48  var  raiz = response.getElementsByTagName( &quot;cidades&quot; ).item( 0 ); 50  var  cidades = raiz.getElementsByTagName( &quot;cidade&quot; ); 51  52  //Seleciona a caixa de selecao de cidades 53  var  selectNode = document.getElementById( &quot;cidade&quot; ); 54  //Apaga as opções atuais da caixa de seleção 56  selectNode.options.length =  0 ; 57  58  //preenche a caixa de opções com os valores recebidos 59  for ( var  i =  0 ; i < cidades.length; i++) { 60  var  txtCidade = cidades.item(i).firstChild.data; 61  var  option =  new  Option(txtCidade); 62  selectNode.add(option, null ); 63  } 66  } Recupera os dados vindos do servidor Id do elemento HTML (combo cidade) Adiciona os dados ao DOM
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Ferramentas Lado cliente: JavaScript Bibliotecas de uso geral Bibliotecas de componentes centrados no browser Bibliotecas para remoting de objetos no servidor Lado servidor: Java Geração de código JavaScript a partir de Java Componentes do lado servidor Tratamento de XML Tratamento de JSON Ferramentas de apoio Teste unitário Testes de integração
Casos de sucesso Start.com ( http://www.start.com/3/) Google   Mail Google   Groups Google   Suggest A9.com Basecamp Meebo
Agenda  O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
Casos de sucesso http://www.marcogomes.com/wallpapr/  (Brasileiro) Kiko( http://www.kiko.com ) Planzo( http://www.planzo.com ) Timetracker( http://www.timetracker.com ) Tudu( http://tudu.sourceforge.net ) Voo2doo( http://www.voo2do.com )
Demo

Mais conteúdo relacionado

PPT
CóPia De Minicurso Smsi
PPT
Minicurso Smsi
ODP
Tw Dwr 2007 Ap01
PDF
Knockout JS - Uma framework para aplicações web
PPT
PHP e Ajax com XAJAX
PPTX
KnockoutJS com ASP.NET MVC3: Utilização na vida real
PDF
Redu walled garden
CóPia De Minicurso Smsi
Minicurso Smsi
Tw Dwr 2007 Ap01
Knockout JS - Uma framework para aplicações web
PHP e Ajax com XAJAX
KnockoutJS com ASP.NET MVC3: Utilização na vida real
Redu walled garden

Mais procurados (12)

PPTX
jQuery e ASP.Net MVC a dupla dinâmica
PDF
Implementando MVC com AJAX
PPT
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
PDF
Java Server Pages
PDF
Backbone.js + Rails - Front-end e back-end conectados
PDF
Conexão Java 2006: Introdução ao Ajax
ODP
Ajaxificando
PPT
Treinamento ajax 02
PPTX
jQuery e ASP.Net mvc2
PDF
JavaScript Model-View no Frontend
PDF
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
jQuery e ASP.Net MVC a dupla dinâmica
Implementando MVC com AJAX
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Java Server Pages
Backbone.js + Rails - Front-end e back-end conectados
Conexão Java 2006: Introdução ao Ajax
Ajaxificando
Treinamento ajax 02
jQuery e ASP.Net mvc2
JavaScript Model-View no Frontend
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
Anúncio

Destaque (14)

PPS
Conceitos de Ajax
PDF
8159540 Tutorial De Ajax
PDF
Revista programar 2
PDF
Software livre para leigos - VII SIECOMP
PDF
Digital first: gli appuntamenti sulla PA digitale a FORUM PA 2016
 
ODP
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
PPTX
Visual Basic 2010 - Criando uma aplicação de Controle de Notas
PDF
Apostila completa (php my sql e ajax)
DOCX
Pcmso modelo.doc
DOCX
PROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARES
PDF
Programação c# - banco de dados
PDF
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
PDF
Apostila desenvolvimento aplicações comerciais com C#
PDF
Ajax Training Sessions
Conceitos de Ajax
8159540 Tutorial De Ajax
Revista programar 2
Software livre para leigos - VII SIECOMP
Digital first: gli appuntamenti sulla PA digitale a FORUM PA 2016
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Visual Basic 2010 - Criando uma aplicação de Controle de Notas
Apostila completa (php my sql e ajax)
Pcmso modelo.doc
PROPOSTA DE UM SISTEMA PARA AUTOMATIZAR ROTINAS ADMINISTRATIVAS ESCOLARES
Programação c# - banco de dados
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Apostila desenvolvimento aplicações comerciais com C#
Ajax Training Sessions
Anúncio

Semelhante a introdução a ajax (20)

PPT
Frameworks Ajax
PPT
PHP e AJAX: do Request ao Framework
PPT
PHP e AJAX: do Request ao Framework
ODP
Servlets e JSP
PPT
Ajax (Asynchronous Javascript And Xml)
PDF
Tutorial de ajax
PPT
ASP.NET AJAX
PPTX
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
PDF
AJAX?? Não!! Asynchronous Javascript and... JSON!!
PDF
PDF
Fundamentos de arquitetura Web
PDF
Ajax O Objeto Xml Http Request Parte 1
PPTX
Ajax
PDF
Minicurso de PHP Com Ajax
PPTX
Introdução sobre desenvolvimento web
PPTX
Java Script
PDF
Desenvolvimento Front end (AngularJS e Bootstrap)
PDF
Web Scraping: aplicações nos negócios e na ciência
PDF
Apostilava Java EE 5 - 2007
PPTX
Palestra Sobre REST
Frameworks Ajax
PHP e AJAX: do Request ao Framework
PHP e AJAX: do Request ao Framework
Servlets e JSP
Ajax (Asynchronous Javascript And Xml)
Tutorial de ajax
ASP.NET AJAX
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
AJAX?? Não!! Asynchronous Javascript and... JSON!!
Fundamentos de arquitetura Web
Ajax O Objeto Xml Http Request Parte 1
Ajax
Minicurso de PHP Com Ajax
Introdução sobre desenvolvimento web
Java Script
Desenvolvimento Front end (AngularJS e Bootstrap)
Web Scraping: aplicações nos negócios e na ciência
Apostilava Java EE 5 - 2007
Palestra Sobre REST

Mais de elliando dias (20)

PDF
Clojurescript slides
PDF
Why you should be excited about ClojureScript
PDF
Functional Programming with Immutable Data Structures
PPT
Nomenclatura e peças de container
PDF
Geometria Projetiva
PDF
Polyglot and Poly-paradigm Programming for Better Agility
PDF
Javascript Libraries
PDF
How to Make an Eight Bit Computer and Save the World!
PDF
Ragel talk
PDF
A Practical Guide to Connecting Hardware to the Web
PDF
Introdução ao Arduino
PDF
Minicurso arduino
PDF
Incanter Data Sorcery
PDF
PDF
Fab.in.a.box - Fab Academy: Machine Design
PDF
The Digital Revolution: Machines that makes
PDF
Hadoop + Clojure
PDF
Hadoop - Simple. Scalable.
PDF
Hadoop and Hive Development at Facebook
PDF
Multi-core Parallelization in Clojure - a Case Study
Clojurescript slides
Why you should be excited about ClojureScript
Functional Programming with Immutable Data Structures
Nomenclatura e peças de container
Geometria Projetiva
Polyglot and Poly-paradigm Programming for Better Agility
Javascript Libraries
How to Make an Eight Bit Computer and Save the World!
Ragel talk
A Practical Guide to Connecting Hardware to the Web
Introdução ao Arduino
Minicurso arduino
Incanter Data Sorcery
Fab.in.a.box - Fab Academy: Machine Design
The Digital Revolution: Machines that makes
Hadoop + Clojure
Hadoop - Simple. Scalable.
Hadoop and Hive Development at Facebook
Multi-core Parallelization in Clojure - a Case Study

Último (20)

PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Aula sobre banco de dados com firebase db
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
COBITxITIL-Entenda as diferença em uso governança TI
Aula 18 - Manipulacao De Arquivos python
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Émile Durkheim slide elaborado muito bom
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Processos na gestão de transportes, TM100 Col18
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Aula sobre desenvolvimento de aplicativos
Aula sobre banco de dados com firebase db

introdução a ajax

  • 1. Iniciativa Globalcode Introdução a AJAX Open-source Education
  • 2. Palestrantes Jorge Diz [email_address] Melissa Villela [email_address]
  • 3. Agenda Histórico O que é AJAX ? Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
  • 4. Histórico Web “1.0” (até 2004) Páginas dinâmicas CGI (no servidor) em Perl, C, Korn shell Client-side scripting: JavaScript, VBScript Server pages: ASP, JSP, PHP Aplicações web baseadas em páginas Frameworks: Struts, JSF, Spring Sites como “silos” de informação.
  • 5. Histórico Web 2.0 (2005 em diante ) A web como plataforma O software como serviço Desenvolvimento participativo Atualização permanente Empresas de sucesso são mais facilitadoras que controladoras Software--> infoware (foco nos dados) Composição de serviços Interfaces ricas (AJAX !)
  • 6. Agenda Princípios Histórico O Que é AJAX Princípios Como funciona? Vantagens e Desvantagens Casos de sucesso Ferramentas Demo
  • 7. O que é AJAX? Segundo Jesse James Garrett (inventor do termo) : “ AJAX não é uma tecnologia. São, na verdade, várias tecnologias, [...] juntando-se de maneiras novas e poderosas. AJAX incorpora:” apresentação baseada em padrões utilizando XHTML e CSS; display e interação dinâmicos utilizando o DOM; intercâmbio e manipulação de dados usando XML e XSLT recuperação assíncrona de dados usando XHR; e JavaScript amarrando tudo isso junto”
  • 8. O que é AJAX? Traduzindo ... AJAX (fev/2005): “Advanced JavaScript, Asynchronous XMLHttpRequest” AJAX (hoje): “Asynchronous JavaScript and XML” XML: eXtensible Markup Language XHTML: HTML expresso como dialeto de XML CSS: Cascading Style Sheets - padrão para formatação de documentos (X)HTML DOM: Document Object Model – modelo para manipulação de documentos HTML.
  • 9. O que é AJAX? ... traduzindo ... Assíncrono: modo de operação de um protocolo em que o solicitante não fica esperando pela resposta. Em vez disso, registra uma função de callback que vai tratar a resposta quando ela chegar. XSLT: eXtensible Stylesheets Language Transformations: padrão para transformação de documentos XML. XHR: XMLHttpRequest: método JavaScript para solicitações HTTP, em formato XML ou texto, podendo operar em modo assíncrono JavaScript: implementação do padrão ECMAScript que contem um DOM HTML.
  • 10. O que é AJAX? Em outras palavras ... AJAX é um modelo de programação ... … para aplicações web ricas, baseado em JavaScript executado no browser e em padrões da do W3C ... onde o modelo da página é manipulado via programa ... onde a página é atualizada a qualquer momento com dados vindos do servidor. ... onde alguns eventos de usuário são reportados ao servidor imediatamente.
  • 11. O que é AJAX ? Princípios O browser hospeda uma aplicação, não apenas “conteúdo” “ Single-Page Application” O servidor entrega dados, não apenas “conteúdo” Data-centric Parte do modelo no browser É viável que a interação do usuário seja fluída e contínua Atualizações assíncronas UI baseadas em eventos Isto é código de verdade e requer disciplina ! JavaScript Design Patterns Metodologia de desenvolvimento
  • 12. O que não é AJAX? Apenas o uso de HTML dinâmico (DHTML) Apenas o uso de JavaScript Apenas o uso de CSS Apenas o uso de tecnologias baseadas em XML AJAX pressupõe interação assíncrona entre browser e servidor web
  • 13. Agenda O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 14. Como funciona? Modelo clássico de sistemas web
  • 16. Como funciona? Requisições de HTTP assíncronas Mecanismo para ActiveX no IE if (window.ActiveXObject) request = new ActiveXObject(“Microsoft.XMLHTTP”); } Implementações alternativas nos principais browsers if (window.XMLHttpRequest ) { request = new XMLHttpRequest(); } Podemos utilizar bibliotecas JavaScript que isolam a dependência de browsers (ex: Sarissa)
  • 17. Como funciona? Requisições de HTTP assíncronas (cont.) Também são utilizadas no ambiente do servidor (para acesso assíncrono a Web Services). As requisições são tratadas por servlets ou equivalentes (para outras tecnologias) O content type utilizado pode ser XML, JSON(*), ou outro formato baseado em texto (*) JSON = JavaScript Object Notation – sintaxe para atribuição de conteúdo / serialização de objetos JavaScript, mais legível e concisa que XML.
  • 18. Agenda O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 19. Vantagens Aplicações com menor tempo de resposta em relação a arquiteturas clássicas Não é necessário trazer uma página inteira a cada interação Aplicações mais próximas de um ambiente de desktop Interatividade maior, modelo de tratadores de eventos Deployment simplificado em relação ao ambiente desktop Vantagem própria de qualquer aplicação Web Roda em qualquer navegador moderno IE, Mozilla, Firefox, Safari, Konqueror, Opera
  • 20. Vantagens Viabiliza interação com o servidor Dados carregados sob demanda, sem onerar o carregamento inicial da página Regras de negócio são tratadas onde for mais apropriado. Utilização mais eficiente de largura de banda, (quando bem implementado)
  • 21. Vantagens Modelo clássico de sistemas web
  • 24. Desvantagens Um grande número de decisões sobre a definição de arquitetura: Componentes centrados na plataforma do servidor ou do cliente ? Qual a granularidade das interações entre cliente e servidor ? Quando passar dados e quando conteúdo ? Como dividir o modelo da aplicação entre a camada cliente e a camada de apresentação do lado do servidor ? XML ou JSON ? É necessário conhecer mais tecnologias e conceitos: JavaScript, interface-usuário, programação baseada em eventos usabilidade, componentes, protocolos, modelos de objetos, transformações XML padrões da W3C, ECMA.
  • 25. Desvantagens Quebra do modelo de navegação da Web Favoritos, Voltar, Cache, Logs: outro modelo de usabilidade Metodologias de desenvolvimento precisam evoluir Como testar? Como monitorar desempenho? Quais os patterns/ boas práticas? Não basta seguir um framework ! Bibliotecas com paradigmas diferentes para partes da solução Diferentes implementações entre browsers Alguém já viu esse filme ?
  • 26. Agenda O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Implementação Demo
  • 27. Implementação 1 var request; 2 3 function sendRequest(url) { 4 5 //Inicializa o objeto XMLHttpRequest para o Mozilla 6 if ( window.XMLHttpRequest ) { 7 request = new XMLHttpRequest(); 8 } 9 //Inicializa o objeto XMLHttpRequest para o Internet Explorer 10 else if (window.ActiveXObject) { 11 request = new ActiveXObject(“Microsoft.XMLHTTP”); 12 } 13 //determina a função para processamento da requisição 14 request.onreadystatechange = processRequest; 15 16 //configura a requisição 17 request.open(“GET”,url, true ); 18 19 //envia a requisição 20 request.send( null ); 21 } 22 23 function processRequest() { 24 25 //Verifica se a resposta já foi recebida por completo 26 if (request.readyState == 4 ) { 27 //Verifica se o status é OK 28 if (request.status == 200 ) { 29 preencheComboCidade(); 30 } 31 } 32 } Incompatiblidade de browsers Função para tratar a resposta assíncrona Código a ser desenvolvido
  • 28. Implementação 41 function preencheComboCidade() { 46 //Faz a leitura do documento XML recebido 47 var response = request.responseXML; 48 var raiz = response.getElementsByTagName( &quot;cidades&quot; ).item( 0 ); 50 var cidades = raiz.getElementsByTagName( &quot;cidade&quot; ); 51 52 //Seleciona a caixa de selecao de cidades 53 var selectNode = document.getElementById( &quot;cidade&quot; ); 54 //Apaga as opções atuais da caixa de seleção 56 selectNode.options.length = 0 ; 57 58 //preenche a caixa de opções com os valores recebidos 59 for ( var i = 0 ; i < cidades.length; i++) { 60 var txtCidade = cidades.item(i).firstChild.data; 61 var option = new Option(txtCidade); 62 selectNode.add(option, null ); 63 } 66 } Recupera os dados vindos do servidor Id do elemento HTML (combo cidade) Adiciona os dados ao DOM
  • 29. Agenda O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 30. Ferramentas Lado cliente: JavaScript Bibliotecas de uso geral Bibliotecas de componentes centrados no browser Bibliotecas para remoting de objetos no servidor Lado servidor: Java Geração de código JavaScript a partir de Java Componentes do lado servidor Tratamento de XML Tratamento de JSON Ferramentas de apoio Teste unitário Testes de integração
  • 31. Casos de sucesso Start.com ( http://www.start.com/3/) Google Mail Google Groups Google Suggest A9.com Basecamp Meebo
  • 32. Agenda O que é AJAX? Casos de sucesso Como funciona? Vantagens e Desvantagens Ferramentas Demo
  • 33. Casos de sucesso http://www.marcogomes.com/wallpapr/ (Brasileiro) Kiko( http://www.kiko.com ) Planzo( http://www.planzo.com ) Timetracker( http://www.timetracker.com ) Tudu( http://tudu.sourceforge.net ) Voo2doo( http://www.voo2do.com )
  • 34. Demo