Modello di programmazione

Nei primi giorni della programmazione informatica, ogni programma è stato scritto come un grande blocco monolitico, pieno di istruzioni goto . Ogni programma doveva gestire il proprio input e output in dispositivi hardware diversi. Con la maturità della disciplina di programmazione, questo codice monolitico è stato organizzato in procedure, con le procedure più comunemente usate nelle librerie per la condivisione e il riutilizzo.

monolithic goto statements versus procedures packed into shared libraries

Il linguaggio di programmazione C supporta la programmazione orientata alle procedure. In C, la procedura principale si riferisce a tutte le altre procedure come caselle nere. Ad esempio, la procedura principale non è in grado di scoprire in che modo le procedure A, B e X svolgono il proprio lavoro. La procedura principale chiama solo un'altra procedura; non contiene informazioni sulla modalità di implementazione di tale procedura.

isolation of activities performed in outside procedures

I linguaggi di programmazione orientati alle procedure 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 routine.

Microsoft RPC si basa su tale modello di programmazione consentendo alle procedure, raggruppate in 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 routine 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 il meccanismo di scambio di dati e di passaggio dei parametri tra il chiamante e la routine chiamata.
  • 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.