Das Programmiermodell
In den frühen Tagen der Computerprogrammierung wurde jedes Programm als großer monolithischer Block geschrieben, der mit Goto-Anweisungen gefüllt war. Jedes Programm musste seine eigene Eingabe und Ausgabe auf verschiedenen Hardwaregeräten verwalten. Als die Programmierdisziplin ausgereift wurde, wurde dieser monolithische Code in Prozeduren organisiert, wobei die am häufigsten verwendeten Prozeduren in Bibliotheken zum Freigeben und Wiederverwenden gepackt wurden.

Die Programmiersprache C unterstützt die prozedurorientierte Programmierung. In C bezieht sich die Hauptprozedur auf alle anderen Prozeduren als Blackboxen. Beispielsweise kann die Hauptprozedur nicht herausfinden, wie die Prozeduren A, B und X ihre Arbeit erledigen. Die Hauptprozedur ruft nur eine andere Prozedur auf. sie enthält keine Informationen darüber, wie diese Prozedur implementiert wird.

Prozedurorientierte Programmiersprachen bieten einfache Mechanismen zum Angeben und Schreiben von Prozeduren. Beispielsweise ist der ANSI-Standard-C-Funktionsprototyp ein Konstrukt, das verwendet wird, um den Namen einer Prozedur, den Typ des zurückgegebenen Ergebnisses (falls vorhanden) und die Anzahl, Sequenz und den Typ ihrer Parameter anzugeben. Die Verwendung des Funktionsprototyps ist eine formale Möglichkeit, eine Schnittstelle zwischen Prozeduren anzugeben.
Microsoft RPC baut auf diesem Programmiermodell auf, indem prozeduren, gruppiert in Schnittstellen, in anderen Prozessen als der Aufrufer gespeichert werden können. Microsoft RPC fügt auch einen formaleren Ansatz für die Prozedurdefinition hinzu, der es dem Aufrufer und der aufgerufenen Routine ermöglicht, einen Vertrag zum Remoteaustausch von Daten und zum Aufrufen von Funktionen zu übernehmen. Im Microsoft RPC-Programmiermodell werden herkömmliche Funktionsaufrufe um zwei zusätzliche Elemente ergänzt.
- Das erste Element ist eine .idl/.acf-Datei, die den Datenaustausch- und Parameterübergabemechanismus zwischen dem Aufrufer und der aufgerufenen Prozedur genau beschreibt.
- Das zweite Element ist ein Satz von Laufzeit-APIs, die Entwicklern eine präzise Steuerung des Remoteprozeduraufrufs ermöglichen, einschließlich Sicherheitsaspekten, der Verwaltung des Zustands auf dem Server, der Angabe, welche Clients mit dem Server kommunizieren können usw.