Implementação Chat AMADIS 1.x

Da AMADIS

Talvez o chat seja uma das ferramentas mais comuns contidas em qualquer ambiente interativo. Porém, para a construção de ferramentas de conversação entre os usuários, existem muitos caminhos a seguir, os quais podem necessitar de estudos mais aprofundados, e, consequentemente, de uma apropriação de idéias mais complexas por parte do programador. No decorrer do seu desenvolvimento, o AMFinder e AMChat do AMADIS podem ter sido as ferramentas que apresentaram maior problema de estabilidade, devido à variedade de tecnologias empregadas, com níveis de incompatibilidade altos. Por meio da descrição a seguir, pretende-se exibir o processo de desenvolvimento dessas ferramentas, desde o seu planejamento até a sua execução, evidenciando os problemas e as opções de implementação e de interface escolhidas.


Índice

Construção de um chat

O chat trata-se de uma aplicação de convesação em tempo real que possibilita uma conexão entre diversos usuários de um ambiente, através de salas de bate-papo na Internet. As técnicas utilizadas para construção de ferramentas de interação em tempo real são muitas, dentre elas que se destacam são: Sockets(Server-push / Client-pull), Refresh Rate e AJAX(Assincronous JavaScript and XML).

  • Sockets (Server-push / Client-pull): os termos Server-push / Client-pull podem ser traduzidos como Servidor-empurra / Cliente-puxa, este é o modelo de desenvolvimento que apresenta um funcionamento baseado em conexões persistentes. Isso significa que o cliente da aplicação de chat, solicita novas mensagens ao servidor constantemente, ou seja, sem intervalo de tempo (assim que o cliente solicita, o servidor envia a resposta, a partir de então, o cliente recebe e interpreta e solicita nova resposta). Esse modelo, dependendo do tipo de implementação, pode consumir muito processamento do servidor, o que gera uma sobrecarga.
  • Refresh Rate(taxa de recarga): o Refresh Rate' é uma técnica comumente utilizada para aplicações de chat. O seu modo de funcionamento é baseado em recarga da tela da aplicação, em intervalos de tempo pré-determinados. Esse modelo apresenta uma grande economia de processamento ao servidor, considerando que as solicitações não ocorrem constantemente, mas sim dentro de intervalos de tempo definidos. O ponto fraco deste modelo é que, durante a solicitação das últimas mensagens do Socket, a aplicação baseada em Refresh Rate deve solicitar a recarga de todos os dados, deixando a performance da aplicação a mercê do tráfego pela rede.
  • Ajax(Assincronous JavaScript and XML): esta que é a grande novidade do mundo Web. Ela é uma técnica de uso de javascript e XML que possibilita dar uma maior interatividade entre o browser e o usuário de aplicações Web. Ele realiza solicitações assíncronas através do objeto XmlHttpRequest dos browsers Mozilla e ActiveObject do MS Internet Explorer. AJAX não é somente um novo modelo, como também uma iniciativa de construção de aplicações web mais dinâmicas e criativas. Também não pode ser considerado apenas como uma tecnologia, visto que consiste numa combinação de várias tecnologias, que juntas oferecem novas funcionalidades e possibilidades. As tecnologias incorporadas no modelo são:
  • Apresentação baseada em padrões, usando XHTML e CSS;
  • 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 JavaScript unindo todas elas.

As possibilidades são muitas. O mais difícil é saber qual a melhor opção. A criação das ferramentas AMChat e AMFinder passaram por essas três técnicas de desenvolvimento. Cada uma se fez útil dentro de um determinado momento do desenvolvimento do AMADIS. No futuro, pode ser que mais novidades possam surgir e venham a contribuir na evolução do AMADIS.

O primeiro chat do AMADIS apresentava uma boa estabilidade, mas era consideravelmente simples. A maior parte da sua programação estava concentrada no RDChat, pacote de do RDDEvel (o antigo framework do AMADIS, utilizado para no desenvolvimento da sua primeira versão). Nele, era utilizado a técnica de "Server-push / Client_pull" e o seu funcionamento se dava por meio de um script php que rodava continuamente. No PHP4 isso sempre funcionou, sendo até hoje utilizado. Porém devido às grandes mudanças da versão do PHP4 para PHP5, foi necessário reimplementação parte da ferramenta.

O AMFinder, na primeira versão estável do AMADIS, apresentava uma janela que funcionava como uma lista de contatos, na qual eram exibidos contatos online ou offline. Essa lista de contatos trabalhava utilizando o Refresh Rate, já que não seria de grande utilidade ter um socket para este fim. As conversas eram abertas em janelas com uma implementação do chat mais simplificada, pois o objetivo da ferramenta é prover conversas entre dois usuários apenas.

O uso de sockets para construção desta ferramenta no AMADIS 1.0 fez com que, quando o AMADIS fosse utilizado em ampla escala, com um número elevado de conexões de chat e mensagens instantâneas, o administrador fosse obrigado a desabilitar a ferramenta de mensagens instantâneas, que gerava mais demanda em relação ao chat.



Escolha da Tecnologia

Com as crescentes mudanças nas tecnologias para desenvolvimento Web, o AMADIS acabou sofrendo muitos efeitos colaterais. A partir das alterações propostas pelos desenvolvedores, o ambiente teve de ser constantemente modificado a fim de que apresentasse uma maior estabilidade. No caso das ferramentas de comunicação em tempo real isso, isso se deu especificamente no método de comunicação a ser utilizado. Depois de muito tempo de projeto, a solução que mostrou-se mais viável foi o AJAX. Essa solução foi aderida não somente para adequar as ferramentas de comunicação, como também para mudar radicalmente a forma de construção da plataforma AMADIS. O único problema existente é a compatibilidade entre os diversos modelos de navegadores disponíveis.

A primeira experiência com essa nova solução foi realizada com o JPSpan FrameWork. Este, desenvolvido na linguagem PHP4 e javascript, apesar de trazer ótimas contribuições para a plataforma num primeiro momento, mostrou-se inadequado ao longo do tempo. Por meio dos testes realizados, constatou-se não ser possível fazer múltiplas conexões de chat com o servidor, além de apresentar problemas com outras funcionalidades da plataforma que se beneficiavam desse recurso. Por conseguinte, os dados acabavam sendo perdidos e as operações, não realizadas corretamente. Isso ocorria devido às colisões no túnel de comunicação criadas por ele. Outro ponto fraco era a incompatibilidade apresentada com os navegadores MS Internet Explorer.

Posteriormente, foi incorporado ao AMADIS o XOAD Framework. Ele se mostrou mais estável implementado em PHP5, que possui uma boa documentação. Com o uso deste framework o AMADIS ganhou um alto nível de interatividade, já que se conseguiu reduzir, dessa forma, uma parcela grande de dados durante as operações. Tanto pequenas operações do ambiente que utilizavam esse recurso, como as execuções das ferramnetas de bate-papo, obtiveram vantagens durante o tráfego de informações.

Com a utilização do AJAX no AMChat e AMFinder, as aplicação ficaram leves como no caso do Refresh Rate, o funcionamento assemelha-se ao Socket. As requisições são feitas em intervalos de tempo determinados, mas sem a necessidade de recarga da página.


Integração do AMFinder com a interface do ambiente

Para manter a coerência com os novos conceitos de navegação empregados na interface da versão atual do AMADIS, optou-se por ampliar as possibilidades de conexão entre os usuários. Percebeu-se, através de pesquisas, que a necessidade dos usuários de adicionar outros como contatos, gerava alguns incômodos, principalmente se o objetivo era somente fazer um contato breve, e que, em geral, não se repetia. Por isso, na versão atual, eliminou-se a lista de contatos.

Por outro lado, constatou-se ser importante ampliar as possibilidades de contato com todos os usuários do ambiente a qualquer momento da navegação. Para tanto, utilizou-se os ToolTips, linkando-os aos nomes dos usuários. Desse modo, o usuário poderia contatar uma pessoa para iniciar uma conversa no finder em todos os lugares do ambiente em que constar um registro daquela pessoa.

Após a resolução de tais problemas, um re-estudo da interface foi feito. Como resultado, foram geradas duas versões para a janela de conversa do finder: na primeira, utilizava-se uma nova janela para cada conversa aberta; já na segunda, optou-se por usar uma única janela, porém, com abas diferentes para cada nova conversa. A equipe de desenvolvimento optou pela segunda versão por facilitar a navegação e diminuir o número de janelas abertas.

Todos esses recursos de visualização e tráfego de dados foi implementado utilizando o AJAX, seguindo a estrutura mostrada no diagrama a seguir:

Ficheiro:Amfinder diagram.png
Diagrama de classe do AMFinder

Artigos Relacionados

Ferramentas pessoais
Parceiros
















SourceForge.net Logo

Supported by Cenqua