Soluções        Serviços          Atendimento       Governo        Consultoria T.I      Treinamento

Software


AJAX (acrônimo em língua inglesa de Asynchronous Javascript and XML, em português "Javascript e XML Assíncronos") é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações. Foi inicialmente desenvolvida pelo estudioso Jessé James Garret e mais tarde por diversas associações.

Índice

  • 1 Descrição
  • 2 Os quatro princípios de Ajax
    • 2.1 O navegador hospeda uma aplicação, e não conteúdo
    • 2.2 O servidor fornece dados, e não conteúdo
    • 2.3 A interação do utilizador com a aplicação pode ser flexível e contínua
    • 2.4 A codificação real requer disciplina
  • 3 Algumas tecnologias que fazem uso de AJAX
  • 4 Ver também
  • 5 Ligações externas

Descrição

AJAX não é um novo modelo para desenvolvimento web. Os navegadores implementam essa tecnologia desde o ano 2000(no mínimo). Porém sua popularização nos últimos anos tem também trazido consigo muitas outras melhorias para a Web. Tem estimulado a construção de aplicações Web mais dinâmicas e criativas. AJAX não é uma tecnologia, mas um conjunto de tecnologias conhecidas trabalhando juntas, cada uma fazendo sua parte, oferecendo novas funcionalidades. AJAX incorpora em seu modelo:

  • Exposição e interação dinâmica usando o DOM;
  • Intercâmbio e manipulação de dados usando XML e XSLT;
  • Recuperação assíncrona de dados usando o objeto XMLHttpRequest e XMLHttpResponse;
  • JavaScript fazendo a junção entre os elementos.

O modelo clássico de aplicação web trabalha assim: a maioria das ações do usuário na interface dispara uma solicitação HTTP para o servidor web. O servidor processa algo, recuperando dados, realizando cálculos, conversando com vários sistemas legados, e então retorna uma página HTML para o cliente. É um modelo adaptado do uso original da Web como um agente de hipertexto, porém o que faz a web boa para hipertexto não necessariamente a faz boa para aplicações de software.

Com a popularização de sistemas que funcionam inteiramente na Web e também com o aumento da velocidade das conexões banda larga, o problema da espera pelo envio e retorno da página inteira se tornou muito mais evidente para o usuário. Obviamente, se nós estivéssemos projetando a Web a partir do zero para aplicações, não faríamos com que os usuários esperassem em vão. Uma vez que a interface está carregada, por que a interação do usuário deveria parar a cada vez que a aplicação precisasse de algo do servidor? Na realidade, por que o usuário deveria ver a aplicação ir ao servidor toda vez?

As principais vantagens das aplicações que utilizam AJAX para determinadas requisições é que os dados trafegados pela rede são reduzidos e o usuário não precisa aguardar a página ser recarregada a cada interação com o servidor.

A popularização das tecnologias que o AJAX reúne foi muito importante para a criação do conceito Web 2.0, que até hoje gera grandes divisões entre os maiores pensadores da Web.

Apesar de não possuir nada inovador em sua essência, o uso de AJAX revolucionou a Web inteira, trazendo à tona muitos conceitos importantes para o desenvolvimento web.

Os quatro princípios de Ajax

O modelo clássico de aplicação baseado em páginas está relacionado com muitas das estruturas que nós usamos, e também em nossas maneiras de pensar. Vamos fazer uma análise de alguns minutos para descobrir o que são estas suposições essenciais e como necessitamos repensar estas idéias para entendermos Ajax suficientemente.

O navegador hospeda uma aplicação, e não conteúdo

Numa aplicação web clássica baseada em páginas, o navegador é efectivamente um terminal burro. Ele não sabe nada sobre o que o utilizador está realmente realizando em suas ações conseqüentes. Todas essas informações são retidas no servidor web, tipicamente na sessão do utilizador. Sessões de utilizador no lado servidor são comuns atualmente. Se a aplicação foi escrita em PHP, Plataforma Java, .NET, Ruby on Rails ou outra linguagem utilizada no desenvolvimento de aplicações para Web, a sessão no lado servidor faz parte da API padrão, assim como o controle de solicitações, respostas, e tipos de conteúdo (MIME).

Quando o utilizador entra ou de outra maneira inicia uma sessão, vários objetos são criados no servidor, representando, por exemplo, a cesta de compras e as credenciais de cliente do utilizador. Ao mesmo tempo, a página inicial é servida ao navegador, em um fluxo de marcações HTML que mistura um anúncio de apresentação padrão e dados específicos do utilizador juntos com o conteúdo, como por exemplo, uma lista de itens exibidos recentemente.

Toda vez que o utilizador interage com o sítio, um outro documento é enviado para o navegador, contendo a mesma mistura de cabeçalhos e dados. O navegador retira o documento anterior e exibe o novo, porque ele não sabe que o outro documento produz um resultado muito semelhante.

Quando o utilizador efetua a saída ou fecha o navegador, a aplicação sai e a sessão é destruída. Qualquer informação que o utilizador necessite ver na próxima vez que ele entrar terá que ser passada para a camada de persistência de dados em cada visita. Já em uma aplicação AJAX, parte da lógica da aplicação é movida para o navegador.

Neste novo cenário, quando o utilizador entra, um documento mais complexo é entregue ao navegador, uma grande proporção do qual é código JavaScript. Este documento permanecerá com o utilizador por toda a sessão, ainda que ele resolva provavelmente alterar sua aparência consideravelmente, enquanto o utilizador está interagindo com ele. Ele sabe como responder às informações inseridas pelo utilizador e é capaz de decidir se manipula a entrada do utilizador ele mesmo ou se passa uma solicitação para o servidor web (o qual tem acesso ao banco de dados do sistema e outros recursos), ou ainda, se faz uma combinação de ambos.

Ele também pode armazenar o estado, porque o documento continua persistindo sobre toda a sessão do usuário. Por exemplo, o conteúdo de uma cesta de compras pode ser armazenado no navegador, em vez de ser armazenado na sessão do servidor.

O servidor fornece dados, e não conteúdo

Como observamos, uma aplicação web clássica oferece a mesma mistura de alegorias, conteúdos e dados em todos os passos. Quando nosso usuário adiciona um item na cesta de compras, tudo que precisamos realmente é responder com o valor atualizado da cesta ou informar se alguma coisa deu errado.

Um carrinho de compra baseado em Ajax pode comportar-se de forma mais inteligente, por meio de remessas de solicitações assíncronas ao servidor. O cabeçalho, o histórico de navegação, e outras características do layout da página estão todas carregadas, portanto o servidor necessita enviar de volta somente os dados relevantes.

Uma aplicação AJAX poderia fazer isto de vários modos, como por exemplo, devolver um fragmento de JavaScript, um fluxo de texto simples, ou um pequeno documento XML. Nós mostraremos em detalhes as vantagens e desvantagens de cada um, mais a frente. É suficiente dizer por agora que qualquer um destes formatos será muito menor que a mistura de informações devolvida pela aplicação web clássica.

Em uma aplicação Ajax, o tráfego tem sua maior intensidade no início, com um largo e complexo cliente sendo entregue em uma única explosão, quando o usuário entra. As comunicações subseqüentes com o servidor são muito mais eficientes, de qualquer forma. Para uma aplicação breve, o tráfego cumulativo pode ser menor em uma aplicação de página web convencional. Mas conforme o tamanho médio do tempo de interação aumentar, o custo de largura de banda da aplicação Ajax torna-se menor do que sua aplicação clássica equivalente.

A interação do utilizador com a aplicação pode ser flexível e contínua

Um navegador web oferece duas maneiras de enviar entradas de dados para um outro computador: com os enlaces e formulários HTML.

Os hyperlinks podem ser carregados com parâmetros CGI (Common Gateway Interface – Interface de Comunicação Comum) apontando para páginas dinâmicas ou servlets. Eles podem estar vinculados com imagens e folhas de estilo (CSS) para oferecer uma pequena melhoria na interface, como por exemplo, definir efeitos quando o mouse estiver sobre eles.

Os controles de formulário oferecem um subconjunto básico de componentes padrões de interface com o usuário: caixas de texto, caixas de checagem e botões de rádio, além de listas de seleção. Entretanto estes controles não são suficientes. Não existem controles de seleção em árvores, grades para edição, ou caixas de combinação. Os formulários, assim como os hyperlinks, apontam para URLs residentes no servidor.

Alternativamente, os hyperlinks e os controles de formulário podem apontar para funções JavaScript. Isto é uma técnica comum em páginas web para prover uma validação de formulário rudimentar em JavaScript, verificando por campos vazios, valores fora de intervalo, e assim por diante, antes de submeter os dados para o servidor. Estas funções JavaScript existem somente enquanto a própria página existe e é substituída quando a página efetuar o seu envio.

Enquanto a página está sendo enviada, o usuário aguarda a sua resposta. A página anterior pode ainda estar visível por algum tempo, e o navegador pode até permitir que o usuário clique em qualquer um dos links visíveis, mas se assim for feito, produzirá resultados imprevisíveis e até entornar em uma confusão com a sessão no servidor. O usuário está normalmente aguardando a página ser atualizada que, frequentemente, possuem quase que as mesmas informações que lhes foram apanhadas instantes atrás. Adicionando um par de calças à cesta de compras não é razoável modificar as categorias em um nível acima por “roupas masculinas”, “roupas femininas”, “infantis” e “acessórios”.

Voltemos ao exemplo do carrinho de compras novamente. Devido ao facto de que nosso carrinho de compras em Ajax pode enviar dados assíncronamente, os utilizadores podem soltar os objectos dentro dele tão rápido quanto eles podem clicar. Se o código de nosso carrinho no lado cliente for robusto, ele tratará esta tarefa facilmente, e os usuários podem continuar com o que eles estão fazendo.

É claro que não existe nenhum carrinho para colocarmos as coisas, somente um objeto em sessão no servidor. Mas os usuários não querem saber sobre objetos de sessão enquanto estão fazendo compras, e a metáfora do carrinho provê uma descrição do mundo real mais confortável do que está acontecendo. Troca de contextos entre a metáfora e o acesso direto ao computador é uma distração para usuários. Aguardar uma página ser atualizada levará o usuário à realidade de estar sentado em um computador por um curto tempo, e nossa implementação em Ajax evita que isto ocorra. Fazer compras é uma atividade transitória, mas se considerarmos um domínio de negócios diferente, por exemplo, um cenário de assistência e atendimento intensivo ou uma tarefa de planejamento complexa, então o custo de interrupção da seqüência de trabalho em alguns poucos segundos, com uma atualização de página, é algo inviável.

A segunda vantagem de Ajax é que podemos associar eventos a um maior número de ações do usuário. Os conceitos mais sofisticados de interface com o usuário, assim como "arrastar e soltar", se tornam praticáveis, trazendo as experiências dessas interfaces em pé de igualdade com os controles de aplicações desktop. Da perspectiva de usabilidade, esta liberdade é importante não somente porque ela permite exercer nossa imaginação, mas porque nos permite combinar a interação do usuário e as solicitações ao servidor de maneira mais completa.

Para comunicar com o servidor em uma aplicação web clássica, necessitamos clicar em um hyperlink ou submeter um formulário, e então aguardar. No entanto, este método interrompe a interação com o usuário. Em contraste, a possibilidade de se comunicar com o servidor em resposta a um movimento ou arraste do mouse, ou até quando digitamos, habilita o servidor a trabalhar juntamente com o usuário. O Google Suggest é um exemplo muito simples e efetivo disto: responder às teclas pressionadas enquanto ele digita dentro da caixa de pesquisa, e então, comunicar com o servidor para recuperar e exibir uma lista de possíveis finalizações para as expressões, baseada nas pesquisas feitas por outros usuários do mecanismo de busca em todo o mundo.

A codificação real requer disciplina

Neste momento, as clássicas aplicações web fazem uso de JavaScript em certas ocasiões, para adicionar características avançadas de um programa, agregando-as nas páginas. O modelo baseado em páginas impede qualquer uma destas melhorias que provoque em um atraso longo demais, limitando sua utilidade. Isto fez com que JavaScript recebesse injustamente, uma reputação de algo banal – por má sorte da linguagem – e não sendo bem vista pelos desenvolvedores sérios.

Codificar uma aplicação Ajax é algo completamente diferente. O código que você fornece quando os usuários iniciam a aplicação deve executar até que eles encerrem-na, sem interrupção, sem diminuição de velocidade, e sem produção de escapes de memória. Se estivermos mirando no mercado de aplicações poderosas, então temos em vista muitas horas de intenso uso. Para atingirmos este objetivo, devemos escrever códigos de alto desempenho, e manuteníveis, usando a mesma disciplina e entendimento que é aplicado com sucesso às camadas do servidor.

A base de código será tipicamente mais ampla que qualquer código escrito para uma aplicação web clássica. Boas práticas na construção da base de código se tornam muito importantes. O código deve tornar-se, de preferência, responsabilidade de uma equipe do que apenas um indivíduo, criando edições de manutenibilidade, separações de interesses, e estilos e padrões de codificação comum. Uma aplicação Ajax, portanto, é uma porção de código funcionalmente complexa que comunica eficientemente com o servidor enquanto o usuário continua com seu trabalho. Ela é claramente uma descendência da aplicação clássica baseada em páginas.

Algumas tecnologias que fazem uso de AJAX

  • Google earth
  • Google maps
  • AWB

Ver também

  • ExtJS, framework de código aberto em Javascript com objetos para implementação de aplicações em Ajax
  • Mootools, framework de código aberto em Javascript para implementação de aplicações em Ajax
  • Rico, framework de código aberto para implementação de aplicações em Ajax
  • Prototype, framework de código aberto em Javascript com objetos para implementação de aplicações em Ajax
  • Jquery, framework de código aberto em Javascript
  • ScriptCase, framework para desenvolvimento de aplicações em PHP com Ajax
  • EasyAjaxTool, Framework de Código Aberto Ferramenta leve para usar ajax com qualquer linguagem de servidor.

Ligações externas

  • AJAX - Visão Conceitual
  • Cloning Google Suggest with AjaxAC
  • Ajax Tutorial Get, post, text, XML.
  • AJAX DWR tutorial
  • Wiki de padrões ajax (inglês)
  • AJAX Tool Framework de Código Aberto leve para usar ajax com qualquer linguagem de servidor.

Obtida de "http://pt.wikipedia.org/w/index.php?title=AJAX_(programa%C3%A7%C3%A3o)&oldid=27741809"

MAIS INFORMAÇÕES DO SETOR DE SOFTWARE

Matriz de interações

article thumbnail

A Matriz de Interações (ou Matriz CRUD) é utilizada, no processo de desenvolvimento de sistemas [ ... ]


Processo de desenvolvimento de software

Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, c [ ... ]


Programação extrema

Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ág [ ... ]


Sistemas complexos

Um sistema é dito ser um sistema complexo quando suas propriedades não são uma consequência natu [ ... ]


Software proprietário

Software proprietário ou não livre é aquele cuja cópia, redistribuição ou modificação sã [ ... ]


Melhoria de Processos do Software Brasileiro

O MPS.BR ou Melhoria de Processos do Software Brasileiro é simultaneamente um movimento para a melh [ ... ]


Web design

article thumbnail

Exemplo de um layout simples. O web design pode ser visto como uma extensão da prática  [ ... ]


E-learning


O e-learning, ou ensino eletrónico, corresponde a um modelo de ensino não presencial suportado  [ ... ]


Gerenciamento de serviços de TI

O gerenciamento de serviços de TI tem por objetivo prover um serviço de TI com qualidade e alinh [ ... ]


Sistema de informação de gestão

Sistema de informação de gestão ou sistema de informações gerenciais (SIG; do inglês, manageme [ ... ]


Parque Tecnologico Capital Digital (Cidade Digital)

Toda a informação será disponibilizada através do site da secretaria de Ciência e Tecnologia do [ ... ]


Web 2.0

article thumbnail

Web 2.0 é um termo criado em 2004 pela empresa americana O'Reilly Media[1] para designar uma segu [ ... ]


Symfony

article thumbnail

Symfony

Projeto padrão do Symfony Desenvolvedor Sensio Labs Versão está [ ... ]


Tecnologia móvel

Tecnologia móvel Toda tecnologia que permite seu uso durante a movimentação do usuário é uma t [ ... ]


JBuilder

JBuilder, é uma IDE para desenvolvimento de aplicações na tecnologia Java criada pela Borland e [ ... ]


Microsoft Forefront

Microsoft Forefront Desenvolvedor Microsoft Plataforma Microsoft Windows La [ ... ]


Orientação a objetos

A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de softwar [ ... ]


Sistemas dinâmicos

article thumbnail

O atrator de Lorenz é um exemplo de sistema dinâmico não-linear. O estudo deste sistema incen [ ... ]


Teste de software

article thumbnail

O teste do software é a investigação do software a fim de fornecer informações sobre sua qual [ ... ]


ISO da segurança da informação

ISO 27001 Origem: Wikipédia, a enciclopédia livre. ISO/IEC 27001 é um padrão para sistema de g [ ... ]


Sistema de gerenciamento de conteúdo

Sistema de Gestão de Conteúdo (SGC) - do inglês Content Management Systems (CMS) mas igualmente d [ ... ]


Novas tecnologias de informação e comunicação

Comunicação Novas tecnologias de informação e comunicação Tipos Social • M [ ... ]


Gestão do conhecimento

article thumbnail

A definição clássica de conhecimento. A Gestão do Conhecimento, do inglês KM - Knowled [ ... ]


EAD - Educação a distância

Tele-educação, Educação a Distância ou Ensino a Distância (EaD) [nota 1] é a modalidade de en [ ... ]


Google

article thumbnail


Google Google Inc. Logotipo do Google Slogan “Don't be evil” [ [ ... ]


Qualidade de software

A qualidade de software é uma área de conhecimento da engenharia de software que objetiva garant [ ... ]


Microsoft SharePoint Workspace

article thumbnail

Título a ser usado para criar uma ligação interna é Microsoft SharePoint Workspace. Micr [ ... ]


Eclipse

article thumbnail


Eclipse é um IDE desenvolvido em Java, seguindo o modelo open source de desenvolvimento de softw [ ... ]


Banco de dados

article thumbnail

Bancos de dados, ou bases de dados (em Portugal), são coleções de informações que se relacion [ ... ]


Modelo em espiral

O Modelo em espiral é um processo de desenvolvimento de software que combina elementos de projeto [ ... ]


IBM

article thumbnail

International Business Machines (IBM) Slogan Uma Divina Mais Inteligente Ti [ ... ]


Aplicação Web

Aplicação Web é o termo utilizado para designar, de forma geral, sistemas de informática proje [ ... ]


dotProject

Software Livre - dotProject
dotProject Desenvolvedor Adam Donnison, Karen Chisholm, Gregor Er [ ... ]


Software educativo

article thumbnail

Software educativo é um software cujo principal propósito é o ensino ou o auto-aprendizado.[1]  [ ... ]


Otimização em engenharia de software

A Otimização em engenharia de software é uma recente área de pesquisa que trata da aplicação [ ... ]


Computação em nuvem

article thumbnail

A nuvem (cloud) é o símbolo da Internet. O conceito de computação em nuvem (em inglê [ ... ]


Trac

Trac é uma simples ferramenta, open source e de interface web para controle de mudanças em pro [ ... ]


Tecnologia da informação

article thumbnail

Mapa com os gastos em TI em todo o planeta Tecnologia da Informação (TI) É a área de  [ ... ]


Sistema Integrado de Aprendizagem de Produtos e Serviços

Sistema Integrado de Aprendizagem de Produtos e Serviços - Sinapse (acrônimo) é o nome de uma met [ ... ]


Matriz de Interações (ou Matriz CRUD)

article thumbnail

A Matriz de Interações (ou Matriz CRUD) é utilizada, no processo de desenvolvimento de sistemas [ ... ]


Gestão de projetos

Gerência de projetos, gestão de projetos, gerenciamento de projetos ou ainda administração de pr [ ... ]


CodeIgniter

CodeIgniter Desenvolvedor EllisLab, Inc. Lançado em 28 de Fevereiro de 2006  [ ... ]


Firewall

article thumbnail

Firewall separando redes LAN e WAN A Wikipédia possui o portal:
Portal das tecno [ ... ]


Marketing de relacionamento

Marketing Composto Marketing | Marketing mix | Produto | Preço | Promoção | Comun [ ... ]


ERP

Sistemas Integrados de Gestão Empresarial (SIGE ou SIG), em inglês Enterprise Resource Planning (E [ ... ]


Análise de pontos de função

Análise de Pontos de Função (APF) é uma técnica para a medição de projetos de desenvolvimen [ ... ]


C♯

article thumbnail


C♯ Paradigma Orientação a objetos
estruturado
imperativo Surgido em 2001  [ ... ]


Outsourcing

 Outsourcing (em inglês, "Out" significa "fora" e "source" ou "sourcing" significa fonte)  [ ... ]


Administração de dados

Administração de dados é a função responsável por desenvolver e administrar de modo central [ ... ]


Desenvolvimento web

article thumbnail

Desenvolvimento web é o termo utilizado para descrever o desenvolvimento de sítios, na Internet  [ ... ]


Artigos Relacionados

Pluriverso - Inteligência em Tecnologia

Pluriverso - Inteligência em Tecnologia


Ed.Centro Sul, 2°Andar, SCIA, Qd. 14, Conj. 07, Lt 1, S. Ind.
CEP: 71.250-135, Brasília-DF.  
Como Chegar
| Atendimento  


+55 (61) 4141.5555

Serviços

Desenvolvimento de Software
Oursourcing de T.I
Consultoria em Tecnologia
Licitação com o Governo

Produtos

ERP, CRM, Colaboração
Cloud Computing

Soluções
Soluções em Outsourcing de Tecnologia
Integração de Software
Avaliação de nível tecnológico
Cálculo de custos de T.I
Softwares customizados


Porque escolher a Pluriverso

Blog Corporativo
Blog do Software

Conheça a Pluriverso
quem somos
verticais de atuação
portifólio
casos de sucesso

Atendimento
contatos
sala de imprensa
como chegar
Trabalhe conosco

desenvolvimento de software