Condividi tramite


Implementazione di un sistema distribuito

Un modo per implementare il software in un sistema distribuito consiste nell'usare il supporto di rete non elaborato. Questo approccio include socket, named pipe o HTTP POST, GET e così via. Tutti questi modelli forzano lo sviluppatore a usare primitive di programmazione di basso livello, in un modo o nell'altro, che forzano lo sviluppatore a gestire la rappresentazione dei dati di rete (NDR), la creazione di pacchetti di dati, la gestione del traffico di rete e le condizioni di errore, la protezione dell'integrità dei dati e la crittografia e così via.

RPC offre un modello di programmazione in cui lo sviluppatore mantiene un controllo granulare dell'interazione di rete tra il client e il server tramite un'API avanzata, risparmiando al contempo agli sviluppatori i dettagli e gli oneri che un sistema distribuito tende a introdurre.

Si consideri, ad esempio, l'onere associato a vari approcci per proteggere l'integrità e la privacy degli scambi di messaggi in un sistema distribuito. Quando si considera la sicurezza di rete per gli scambi di pacchetti, alcune protezioni sono più deboli, alcune più forti. Non esiste una vera sicurezza di rete, ma solo vari meccanismi di sicurezza basati su pacchetti; sicurezza che identifica il chiamante (che tende a essere debole anche, poiché il contenuto dei pacchetti può spesso essere modificato in transito), la sicurezza protegge l'integrità del pacchetto senza proteggere la privacy (varie firme e hash) e la sicurezza proteggendo la privacy dello scambio di messaggi (vari meccanismi di crittografia).

Un altro carico di implementazione di un sistema distribuito sicuro è costituito dagli algoritmi necessari per implementare primitive di sicurezza, ad esempio crittografia, firma, autenticazione e così via. Uno sviluppatore può implementare questi algoritmi, ma in questo modo è difficile, soggetto a errori e persino rischioso, poiché gli algoritmi risultanti spesso presentano piccoli difetti di sicurezza. In alternativa, uno sviluppatore può usare un provider di sicurezza disponibile per implementare la protezione per le interazioni di rete all'interno di un sistema distribuito.

Usando RPC, entrambi questi oneri vengono risolti molto facilmente. Uno sviluppatore deve semplicemente indicare a RPC quale pacchetto di sicurezza usare e quale protezione di sicurezza deve essere applicata allo scambio di messaggi (in termini di autenticazione, crittografia, autenticazione reciproca, rilevamento delle identità chiamante e così via). RPC si occupa di tutti i dettagli dietro le quinte in modo efficiente, ma offre allo sviluppatore il controllo completo sulla modalità di protezione dei dati.