Solitamente, nell’ambito delle applicazioni informatiche, si distngue tra:
Un’architettura distribuita ha diversi vantaggi, tra cui:
ma anche lo svantaggio di una maggiore complessità, soprattutto per quanto riguarda la comunicazione tra i vari componenti.
Le architetture distribuite possono essere classificate in base al grado di distribuzione:
Client-Server (l’architettura di cui si è parlato finora)
Multi-livello: (multi-tier o multi-layer): ogni nodo funge da client nei confronti del livello inferiore e da server nei confronti del livello superiore.
Un esempio tipico è un’organizzazione a tre livelli (three-tier), che sono:
Completamente distribuita: caratterizzata da oggetti / nodi ciascuno dei quali può comportarsi sia da client che da server, anche nei confronti di uno stesso altro ogetto (cioè un oggetto $A$ può comportarsi da client di $B$ in un certo momento, e da server per $B$ in un altro). Così, il carco elaborativo può essere distribuito in modo molto flessibile.
L’esempio tipico sono le applicazioni peer-to-peer (file sharing, ecc...), così chiamate appunto perchè tutt i nodi si comportano “da pari”.
Si chiama middleware il software che rende accessibili su Internet risorse hardware o software che prima erano disponibili solo localmente, permettendo a un’applicazione di interagire con altre attraverso la rete senza che l’utente debba capire e codificare le operazioni di basso livello necessarie per tale interazione.
Di fatto, il middleware è la “colla” che tiene insieme le applicazioni distribuite, sgravando il programmatore da incombenze “banali” come ad esempio la gestione esplicita dei socket (anche se già i socket sono un’interfaccia di livello relativamente alto).
Le interazioni tra applicazioni (che il middleware realizza) possono essere d due tipi:
RMI (Remote Method Invocation) è una tecnologia, specifica del mondo Java (a differenza, ad esempio, dei socket), che permette a processi Java distribuiti di comunicare attraverso una rete.