quinta-feira, 31 de janeiro de 2008

Peer-to-Peer Web Services

Em sistemas ad-hoc sem qualquer infraestrutura, o paradigma Peer-to-Peer (P2P) é atrativo. Assim, uma arquitetura de Web Services utilizando o paradigma P2P [1] apresenta-se como uma solução interessante de infraestrutura para esse tipo de sistema, sendo mais um passo em direção à computação ubíqua ou pervasiva.

A figura abaixo ilustra uma arquitetura típica de Web Services (SOA). Nessa arquitetura existem 3 principais atores.
  • Provedor de Serviços (P) ;
  • Requisitor de Serviços (R);
  • Broker de Serviços (B): repositório com informações sobre serviços (UDDI); contém informações sobre o provedor de serviços (white pages), categorias que caracterizam os serviços (yellow pages) e a interface dos serviços (green pages).

A figura abaixo ilustra um cenário de SOA onde diversos fornecedores de serviços (P) publicam seus serviços no respositório (B), os quais são encontrados pelos requisitores (R) através de consultas a B e, finalmente, acessam os serviços de P.

Em uma arquitetura de serviços P2P, cada nodo deve ser capaz de publicar e consumir serviços, como ilustra a figura abaixo (cenário 1 - infraestrutura fixa: DHCP, DNS e servidor UDDI). Embora pareça simples, em um cenário móvel real, composto por rede ad-hoc, existem algumas dificuldades [1]:
  • Como e onde o serviço deve ser publicado e descoberto (centralizado ou descentralizado)?
  • Os nodos devem ser endereçáveis, mas na maioria das redes móveis atuais como GSM/GPRS o endereço IP fica escondido através de um NAT (Network Address Translation).
  • O limitado poder de processamento e a pouca memória dos dispositivos móveis atuais causam dificuldados no fornecimento de funcionalidades de servidor.
  • A comunicação móvel não é confiável não oferece QoS contínuo.

A figura abaixo ilustra um segundo cenário P2P SOA, que é uma rede ad-hoc pura, sem nenhuma infraestrutura, com nodos entrando e saindo da rede constantemente. Neste cenário não existe um único B centralizado. Maiores explicações podem ser encontradas em [1].

Para suportar essa arquitetura, foi criado um framework de aplicação P2P que possibilita Web Services em nodos P2P. Diversos componentes fazem parte desse framework, sendo que o principal deles é o Servidor SOAP [2], ilustrado na figura abaixo. O framework foi implementado em J2ME.

De forma simplificada, o funcionamento do servidor é o seguinte:
  • O Servidor SOAP torna os serviços disponíveis através de uma interface HTTP.
  • Quando um cliente conecta ao servidor enviando uma requisição HTTP POST/GET, o socket do servidor aceita a conexão cliente e retorna um socket contendo os o stream dos dados de entrada.
  • O Request Handler usa kSOAP e kXML para processar a mensagem, desserializando o XML em objetos Java.
  • ...
Maiores informações sobre o Servidor SOAP podem ser obtidas diretamente em [2] ou [1].

[1] G. Gehlen e L. Pham, "Mobile Web Services for Peer-to-Peer Applications", In Proceedings of the Consumer Communications and Networking Conference 2005, p. 7, Las Vegas, USA.
[2] L. Pham e G. Gehlen, "Realization and Performance Analysis of a SOAP Server for Mobile Devices", In Proceedings of the 11th European Wireless Conference 2005, Vol. 2, p.p. 791-797, Nicosia, Cyprus,VDE Verlag

Nenhum comentário: