Modello di programmazione
Nei primi giorni della programmazione del computer, ogni programma è stato scritto come un grande blocco monolitico, pieno di istruzioni goto . Ogni programma doveva gestire il proprio input e output in diversi dispositivi hardware. Poiché la disciplina di programmazione è maturata, questo codice monolitico è stato organizzato in procedure, con le procedure più comunemente usate in librerie per la condivisione e il riutilizzo.
Il linguaggio di programmazione C supporta la programmazione orientata alla procedura. In C la procedura principale si riferisce a tutte le altre procedure come caselle nere. Ad esempio, la procedura principale non può scoprire come le procedure A, B e X svolgono il loro lavoro. La procedura principale chiama solo un'altra procedura; non ha informazioni sul modo in cui viene implementata tale procedura.
I linguaggi di programmazione orientati alla procedura forniscono meccanismi semplici per specificare e scrivere procedure. Ad esempio, il prototipo di funzione C standard ANSI è un costrutto usato per specificare il nome di una routine, il tipo del risultato restituito (se presente) e il numero, la sequenza e il tipo dei relativi parametri. L'uso del prototipo di funzione è un modo formale per specificare un'interfaccia tra le procedure.
Microsoft RPC si basa su tale modello di programmazione consentendo alle procedure, raggruppate insieme nelle interfacce, di risiedere in processi diversi rispetto al chiamante. Microsoft RPC aggiunge anche un approccio più formale alla definizione della procedura che consente al chiamante e alla chiamata di adottare un contratto per lo scambio remoto di dati e la chiamata di funzionalità. Nel modello di programmazione RPC Microsoft, le chiamate di funzione tradizionali vengono integrate con due elementi aggiuntivi.
- Il primo elemento è un file con estensione idl/.acf che descrive esattamente lo scambio di dati e il meccanismo di passaggio dei parametri tra il chiamante e la routine denominata.
- Il secondo elemento è un set di API di runtime che forniscono agli sviluppatori il controllo granulare della chiamata alla procedura remota, inclusi gli aspetti di sicurezza, la gestione dello stato nel server, specificando quali client possono comunicare con il server e così via.