Arquitetura P2P: Desenvolvendo um chat em .NET

Veja nesse artigo o que é a arquitetura P2P e veja como desenvolver um chat.

Fique por dentro
Os sistemas peer-to-peer (P2P) existem desde o começo das primeiras interconexões entre computadores. Com a Internet como meio de transferência de dados, os sistemas P2P tornaram-se cada vez mais importantes para o desenvolvimento das estruturas de interconexão e também no mercado corporativo.

Neste artigo conheceremos os principais conceitos da arquitetura P2P e dos sistemas construídos a partir dessa tecnologia. Veremos o funcionamento geral das arquiteturas de redes, sua utilização na prática e ainda colocaremos a mão na massa para desenvolver um chat simples utilizando esses conceitos.

Nossos códigos serão transparentes o suficiente para compreendermos todos os passos e operações necessárias para um estabelecimento confiável da comunicação com outro computador e do envio e recebimento de mensagens de texto.

Os sistemas peer-to-peer (P2P) existem desde a década de 60, tendo se originado com as primeiras interconexões entre computadores.

No entanto, o conceito de P2P só se tornou popular no fim dos anos 90, com o surgimento das aplicações de compartilhamento de arquivos, especialmente de músicas.

Desde então, a tecnologia tem sido amplamente usada em diversos tipos de aplicações, de comunicadores instantâneos a softwares comerciais.

Neste artigo veremos os principais conceitos dos sistemas P2P e colocaremos a mão na massa para construir uma aplicação simples utilizando esses conceitos.

Nosso aplicativo consistirá em um chat capaz de enviar e receber mensagens de outro computador da nossa rede.

Conheceremos ainda as bibliotecas e classes do .NET necessárias à nossa finalidade, o que permitirá ao leitor expandir o sistema a outras funcionalidade, se assim desejar.

Por definição, um sistema P2P é uma arquitetura distribuída de rede composta de peers (nós) interconectados capazes de se auto-organizarem para compartilhar recursos entre si, como ciclos de CPU, armazenamento de dados, banda larga e conteúdo.

A ideia central dos sistemas P2P é permitir que cada peer compartilhe recursos a partir de um determinado dispositivo ou unidade de processamento sem a necessidade de ser gerenciado por um servidor ou centralizador externo.

As aplicações P2P trabalham sobre uma rede de overlay de peers, chamada rede P2P. Essa rede agrega todos os peers de uma determinada rede e interconecta os dispositivos com as aplicações de maneira lógica.

Por exemplo, quando desejamos conversar por Skype com um amigo residente no Japão, não realizamos uma conexão direta entre nossos computadores, por meio de alguma estrutura física, mas uma conexão virtual.

Essa conexão virtual trata-se de uma ligação entre os aplicativos que estamos utilizando, que adentram em uma rede lógica, não-física, para que possamos conversar.

A Figura 1 ilustra a comparação entre a estrutura geral de uma rede de overlay e uma rede física. Enquanto na rede de overlay a conexão entre dois hosts é realizada de maneira direta, ou seja, sem o auxílio de outros dispositivos, a conexão entre esses mesmos hosts na rede física acaba por não seguir

Figura 1. Funcionamento de uma rede de overlay.

Os sistemas P2P podem ser classificados de diversas maneiras, sendo a mais comum a classificação entre duas categorias: não-estruturados e estruturados.

Enquanto os sistemas P2P não-estruturados não impõem uma arquitetura para a rede de overlay, os sistemas estruturados são organizados de acordo com uma topologia específica.

Entre as principais características dos sistemas P2P, encontramos:

· Compartilhamento de recursos: cada peer contribui para as operações globais do sistema P2P. Em geral, o compartilhamento de recursos é proporcional ao uso do sistema pelo peer;

· Descentralização: sem um controlador central, o sistema é determinado pelas ações individuais dos peers;

· Interconexão: um peer só faz parte do sistema se ele está conectado com outro(s) peer(s) do mesmo sistema; e

· Simetria: todos os peers do sistema possuem a mesma atribuição e desempenham o mesmo papel. Em algumas situações, essa característica não é levada em conta, uma vez que determinados peers podem assumir um papel diferente de outros."

[...] continue lendo...

Artigos relacionados