31.05.2013 Views

progettazione e realizzazione in java di una rete peer to peer ...

progettazione e realizzazione in java di una rete peer to peer ...

progettazione e realizzazione in java di una rete peer to peer ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1. LE CARATTERISTICHE PECULIARI<br />

Un altro pun<strong>to</strong> <strong>di</strong> forza della <strong>rete</strong> è la fruibilità dei servizi anche dall’esterno.<br />

Infatti, i client che partecipano alla <strong>rete</strong> possono utilizzare le risorse con<strong>di</strong>vise da-<br />

gli altri no<strong>di</strong>; elemen<strong>to</strong> <strong>di</strong> novità è che la <strong>rete</strong> potrà essere sfruttata da computer<br />

non facenti parte <strong>di</strong> PariPari. Ad esempio, se all’<strong>in</strong>terno della <strong>rete</strong>, Alice si pro-<br />

pone come webserver e Bob le fornisce <strong>una</strong> sua pag<strong>in</strong>a, la pag<strong>in</strong>a sarà consultabile<br />

da qualsiasi computer connesso a <strong>in</strong>ternet con un normale browser.<br />

Vista la natura aperta al pubblico e agli sviluppa<strong>to</strong>ri della <strong>rete</strong> si è deciso che<br />

il proget<strong>to</strong> sarà open source e rilascia<strong>to</strong> sot<strong>to</strong> licenza GPL 1 .<br />

1.1 Architettura a plug-<strong>in</strong><br />

La <strong>rete</strong>, come det<strong>to</strong>, è concepita per permetterle <strong>di</strong> fornire praticamente qualsiasi<br />

serivizio. Ogni nodo, <strong>in</strong>fatti, concorrerà alla creazione <strong>di</strong> un’entità <strong>in</strong> grado,<br />

al momen<strong>to</strong>, <strong>di</strong> agire come un server web o un server per la posta elettronica,<br />

<strong>di</strong> trasferire file, e, <strong>in</strong> un futuro prossimo, <strong>di</strong> con<strong>di</strong>videre i cicli macch<strong>in</strong>a, <strong>di</strong><br />

permettere il VOIP e <strong>di</strong> offrire le funzionalità <strong>di</strong> un DBMS <strong>di</strong>stribui<strong>to</strong>. Per<br />

raggiungere ques<strong>to</strong> obiettivo, ogni client della <strong>rete</strong> è costitui<strong>to</strong> da un nocciolo<br />

centrale, det<strong>to</strong> core, che si occupa <strong>di</strong> fare da collante tra i vari plug-<strong>in</strong> e <strong>di</strong> gestire<br />

le comunicazioni tra questi. I plug-<strong>in</strong>, realizzati secondo <strong>una</strong> specifica <strong>in</strong>terfaccia,<br />

gestiscono le varie funzionalità della <strong>rete</strong> e sfruttano le risorse della macch<strong>in</strong>a su<br />

cui gira il client, <strong>in</strong>teragendo con gli altri plug-<strong>in</strong> tramite il core. Sempre con la<br />

struttura <strong>di</strong> semplici plug-<strong>in</strong>, si possono <strong>in</strong><strong>di</strong>viduare alcune classi che svolgono un<br />

ruolo basilare per il client: i ges<strong>to</strong>ri <strong>di</strong> risorse. Questi, scritti esattamente come<br />

dei normali plug-<strong>in</strong>, sovra<strong>in</strong>tendono all’utilizzazione delle risorse del computer<br />

locale da parte dei plug-<strong>in</strong>. Ques<strong>to</strong> approccio garantisce la modularità, non solo<br />

per quan<strong>to</strong> riguarda i servizi offerti alla <strong>rete</strong>, ma anche per quan<strong>to</strong> riguarda la<br />

gestione <strong>in</strong>terna dei plug-<strong>in</strong>. Con un esempio si chiarirà meglio questa scelta.<br />

Il plug-<strong>in</strong>, che funge da server ftp sul nodo PariPari <strong>di</strong> Alice, viene contat-<br />

ta<strong>to</strong> da un normale utente del web, Bob. Bob fa upload <strong>di</strong> un file e il server ftp<br />

lo salva. L’ftp però non ha accesso <strong>di</strong>ret<strong>to</strong> al <strong>di</strong>sco <strong>di</strong> Alice, ma <strong>in</strong>oltra la sua<br />

richiesta <strong>di</strong> salvataggio del file al ges<strong>to</strong>re dello spazio su <strong>di</strong>sco, il quale si occupa<br />

<strong>di</strong> salvare realmente il file. Ques<strong>to</strong> layer <strong>in</strong>terpos<strong>to</strong> tra il <strong>di</strong>sco e il server permette<br />

<strong>di</strong> aggiungere nuove potenzialità <strong>in</strong> maniera estremamente semplice, non mo<strong>di</strong>fi-<br />

cando cioè <strong>in</strong> alcun modo i plug-<strong>in</strong> già <strong>di</strong>sponibili e cambiando solamente qualche<br />

riga nei ges<strong>to</strong>ri <strong>di</strong> risorse. Si immag<strong>in</strong>i, <strong>in</strong>fatti, <strong>di</strong> voler aggiungere la possibilità<br />

<strong>di</strong> salvare il file non sul <strong>di</strong>sco fisso locale, ma <strong>di</strong> <strong>di</strong>stribuendolo tra <strong>di</strong>versi no<strong>di</strong><br />

1 Cfr. http://www.gnu.org/copyleft/gpl.html<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!