Peer-to-peer framework
Este artigo não cita fontes confiáveis. (Março de 2014) |
Mesmo dispondo de plataformas de comunicação Peer-to-Peer, como o Pastry e o JXTA, os desenvolvedores ainda precisam projetar suas aplicações considerando requisitos não-funcionais, tais como validação do usuário, operações de manutenção da rede Peer-to-Peer (criar grupo, localizar grupo, ingresso em grupo, localizar peer, localizar recursos), desenvolvimento baseado em componentes (locais ou remotos), interface gráfica com o usuário, entre outros. Portanto, tais funcionalidades precisam estar disponíveis, sobre a plataforma de rede Peer-to-Peer, de maneira reutilizável e adaptável. Este modelo de desenvolvimento é conhecido como framework de aplicações.
No entanto, para sistemas Peer-to-Peer, ainda não existe um modelo de desenvolvimento elaborado e consolidado, análogo aos frameworks para sistemas Cliente/Servidor. O J2EE, baseado em Java, é um bom exemplo. Seu modelo é tão elaborado que ultrapassa os domínios da computação distribuída, abrangendo também frameworks MVC, componentes de interface gráfica com o usuário, manipulação de documentos XML, mecanismos de persistência de objetos, entre outros.
Assim, diversas pesquisas estão em curso para o desenvolvimento de um "Peer-to-Peer Application Framework" sobre alguma plataforma de comunicação Peer-to-Peer. Sua definição deve compreender uma descrição conceitual e um conjunto de mecanismos de suporte que orientam como aplicações semelhantes podem ser arquitetadas e implementadas. Usualmente, um framework deste tipo incluiria: uma proposta de arquitetura básica, padrões de projeto, entre outros recursos para desenvolvimento. Entre os benefícios advindos da disponibilização de um framework, podemos citar:
- Definição de conceitos e padrões de projeto para um mesmo domínio (de aplicação ou de tecnologia);
- Atendimento de requisitos não-funcionais, permitindo que o desenvolvedor se dedicar mais aos requisitos funcionais do modelo de negócio;
- Viabilização da interoperabilidade e do reuso de componentes desenvolvidos por fornecedores distintos;
- Agilidade no desenvolvimento.
Entre diferenças notáveis de domínio tecnológico a serem consideradas no desenvolvimento de um framework para aplicações Cliente/Servidor e um similar para aplicações Peer-to-Peer [Roussopoulos 2004], podemos destacar:
- Ausência de controle central dos computadores participantes da computação distribuída, parcial ou total, bem como dos processos e recursos localizados nos mesmos;
- Imprevisibilidade dos computadores participantes, tanto em número de participantes quanto em disponibilidade na rede;
- Alta latência, alta variância da latência (jitter) e não-confiabilidade da comunicação entre os computadores participantes;
- Heterogeneidade de plataformas e do poder computacional dos nós participantes.
Exemplos de frameworks para desenvolvimento de aplicações Peer-to-Peer são o XNap, o Oog (Duke University), o Lancaster´s P2P Framework (University of Lancaster) e o COPPEER (UFRJ), sendo os dois últimos abstrações construídas sobre a plataforma JXTA.