RIA - Rich Internet Application

Aplicações de Internet Rica (da sigla em inglês RIA - Rich Internet Application) são Aplicações Web que tem características e funcionalidades de softwares tradicionais do tipo aplicativo.

Por | @oficinadanet Programação
Aplicações de Internet Rica (da sigla em inglês RIA - Rich Internet Application) são Aplicações Web que tem características e funcionalidades de softwares tradicionais do tipo aplicativo. RIA típicos transferem todo o processamento da interface para o navegador da internet, porém mantém a maior parte dos dados (como por exemplo, o estado do programa, dados do banco) no servidor de aplicação.

RIAs normalmente:
  • Rodam em um navegador, ou não necessitam de Instalação
  • Rodam localmente em um ambiente seguro chamado sandbox

Histórico

O termo Aplicação de Internet Rica foi introduzido pela Macromedia em março de 2002, embora o seu conceito já tenha tido outras denominações anteriores, tais como:
  • Remote Scripting, pela Microsoft, em 1998
  • X Internet, pela Forrester Research em October 2000
  • Cliente (Web) Rico
  • Aplicação Web Rica

Aplicações web tradicionais centralizam todo seu código em torno de uma arquitetura de Cliente-servidor e um cliente magro. Todo o processamento é realizado no servidor, e o cliente apenas utiliza uma tela estática (neste caso em HTML). A grande desvantagem deste sistema é que a interação com a aplicação deve ser feita através do servidor, onde os dados são enviados para o servidor, são respondidos e a página é recarregada no cliente como resposta. Utilizando uma tecnologia uma aplicação-cliente que possa executar instruções no computador do usuário, RIAs podem reduzir significativamente o número de sincronizações e aumentar a interatividade com o cliente. Esta diferença pode ser verificada fazendo uma analogia entre terminal e mainframe e servidor de aplicação/Cliente Gordo.

Os Padrões na Internet foram evoluindo lenta e continuamente ao longo do tempo para acomodar estas técnicas, por isso é difícil traçar uma linha entre aquilo que constitui um RIA e o que não não faz parte de um RIA. Porém, todos os RIAs compartilham uma características: eles introduzem uma camada intermediária de código, chamada normamente de client engine, entre o usuário e o servidor. Este client engine é normalmente carregado no início da aplicação, e pode ser acrescido de outras atualizações do código que são baixadas enquanto a aplicação ainda está rodando. O client engine atua como uma extensão do navegador, e é responsável pela renderização da interface de aplicação do usuário e fazer a comunição com o servidor.

O que pode ser feito em um RIA é limitado pela robustez do sistema utilizado no cliente. Mas, em geral, o client engine está programado para executar funções que a seu desenvolvidor acredita que irão reforçar alguns aspectos da interface do usuário, ou melhorar a sua resposta ao manusear certas interações com o usuário, em comparação com a execução da aplicação em um navegador da Web padrão.[PG1]

Benefícios:

Porque os RIAs empregam um client engine para interagir com o usuário? Entre os motivos estão:
  • Riqueza. É possível oferecer à interface do usuário características que não podem ser obtidos utilizando apenas o HTML disponível no navegador para aplicações Web padrão. Esta capacidade de poder incluir qualquer coisa no lado do cliente, incluindo o arraste e solte, utilizar uma barra para alterar dados, cálculos efetuados apenas pelo cliente e que não precisam ser enviados volta para o servidor, como por exemplo, uma calculadora básica de quatro operações.
  • Melhor resposta. A interface é mais reativa a ações do usuário do que em aplicações Web padrão que necessitam de uma constante interação com um servidor remoto. Com isto os RIAs levam o usuário a ter a sensação de estarem utilizando uma aplicação desktop.
  • Equilibrio entre Cliente/Servidor. A carga de processamento entre o Cliente e Servidor torna-se mais equilibrada, visto que o servidor web não necessita realizar todo o processamento e enviar para o cliente, permitindo que o mesmo servidor possa lidar com mais sessões de clientes concomitantemente.
  • Comunicação assíncrona. O client engine pode interagir com o servidor de forma assíncrona -- desta forma, uma ação na interface realizada pelo usuário como o clique em um botão ou link não necessite esperar por uma resposta do servidor, fazendo com que o usuário espere pelo processamento. Talvez o mais comum é que estas aplicações, a partir de uma solicitação, antecipe uma futura necessidade de alguns dados, e estes são carregados no cliente antes de o usuário solicite-os, de modo a acelerar uma posterior resposta. O site Google Maps utiliza esta técnica para, quando o usuário move o mapa, os segmentos adjacentes são carregados no cliente antes mesmo que o usuário mova a tela para estas áreas.
  • Otimização da rede. O fluxo de dados na rede também pode ser significativamente reduzida, porque um client engine pode ter uma inteligência imbutida maior do que um navegador da Web padrão quando decidir quais os dados que precisam ser trocados com os servidores. Isto pode acelerar a solicitações individuais ou reduzir as respostas, porque muitos dos dados só são transferidos quando é realmente necessário, e a carga global da rede é reduzida. Entretanto, o uso de destas técnicas podem neutralizar, ou mesmo reverter o potencial desse benefício. Isto porque o código não pode prever exatamente o que cada usuário irá fazer em seguida, e é comum que tais técnicas baixar dados extras, para muitos ou todos os clientes, cause um tráfego desnecessário.
[PG2]

Deficiências e restrições

As deficiências e restrições associadas aos RIAs são:
  • Sandbox. Os RIAs são executado dentro de um Sandbox, que restringe o acesso a recursos do sistema. Se as configurações de acesso aos recursos estão incorretas, os RIAs pode falhar ou não funcionar corretamente.
  • Scripts desabilitados. JavaScripts ou outros scripts são muitas vezes utilizados. Se o usuário desativar a execução de scripts em seu navegador, o RIA poderá não funcionar corretamente, na maior parte das vezes.
  • Velocidade de processamento no cliente. Para que as aplicações do lado do cliente tenha independência de plataforma, o lado do cliente muitas vezes são escritos em linguagens interpretadas, como JavaScript, que provocam uma sensível redução de desempenho. Isto não é problema para linguagens como Java, que tem seu desempenho comparado a linguagens compiltadas tradicionais, ou com o Flash, em que a maior parte das operações são executas pelo código nativo do próprio Flash.
  • Tempo de carregamento da aplicação. Embora as aplicações não necessitem de serem instaladas, toda a inteligência do lado cliente (ou client engine) deve ser baixada do servidor para o cliente. Se estiver utilizando um web cache, esta carga deve ser realizada pelo menos uma vez. Dependendo do tamanho ou do tipo de solicitação, o carregamento do script pode ser demasiado longo. Desenvolvedores RIA podem reduzir este impacto através de uma compactação dos scripts, e fazer um carregamento progressivo das páginas, conforme ela forem sendo necessárias.
  • Perda de Integridade. Se a aplicação-base é X/HTML, surgem conflitos entre o objetivo de uma aplicação (que naturalmente deseja estar no controle de toda a aplicação) e os objetivos do X/HTML (que naturalmente não mantém o estado da aplicação). A interface DOM torna possível a criação de RIAs, mas ao fazê-lo torna impossível garantir o seu funcionamento de forma correta. Isto porque um cliente RIA pode modificar a estrutura básica, sobrescrevendo-a, o que leva a uma modificação do comportamento da aplicação, causando uma falha irrecuperável ou crash no lado do cliente. Eventualmente, este problema pode ser resolvido através de mecanismos que garantam uma aplicação do lado cliente com restrições e limitar o acesso do usuário para somente os recursos que façam parte do escopo da aplicação. (Programas que executam de forma nativa não tem este problema, porque, por definição, automaticamente possui todos os direitos de todos os recursos alocados).
  • Perda de visibilidade por Sites de Busca. Sites de busca podem não serem capazes de indexar os textos de um RIA.
  • Dependência de uma conexão com a Internet. Enquanto numa aplicação desktop ideal permite que os seus usuários fiquem ocasionalmente conectados, passando de uma rede para outra, hoje (em 2007), um típico RIA requer que a aplicação fique permanentemente conectada à rede.


Fonte: Wikipédia

Mais sobre: programação desenvolvimento internet
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo