Freigeben über


Asynchroner RPC

Der asynchrone Remoteprozeduraufruf (REMOTE Procedure Call, RPC) ist eine Microsoft-Erweiterung, die mehrere Einschränkungen des herkömmlichen RPC-Modells wie durch die Open Software Foundation–Distributed Computing Environment (OSF-DCE) definiert. Asynchrones RPC trennt einen Remoteprozeduraufruf von seinem Rückgabewert, wodurch die folgenden Einschränkungen herkömmlicher synchroner RPC aufgelöst werden:

  • Mehrere ausstehende Aufrufe von einem singlethreaded-Client. Im herkömmlichen RPC-Modell wird ein Client in einem Remoteprozeduraufruf blockiert, bis der Aufruf zurückgegeben wird. Dadurch wird verhindert, dass ein Client mehrere ausstehende Aufrufe hat, während der Thread weiterhin für andere Aufgaben verfügbar ist.
  • Langsame oder verzögerte Clients. Ein Client, der nur langsam Daten erzeugt, kann einen Remoteprozeduraufruf mit anfangsdaten durchführen und dann zusätzliche Daten bereitstellen, wie sie erstellt werden. Dies ist mit herkömmlichen (synchronen) RPC nicht möglich.
  • Langsame oder verzögerte Server. Ein Remoteprozeduraufruf, der lange dauert, um den Verteilerthread für die Dauer des Vorgangs zu binden. Bei asynchronem RPC kann der Server einen separaten (asynchronen) Vorgang starten, um die Anforderung zu verarbeiten und die Antwort zurückzusenden, wenn sie verfügbar ist. Der Server kann die Antwort auch inkrementell senden, da Ergebnisse verfügbar werden, ohne einen Verteilerthread für die Dauer des Remoteaufrufs binden zu müssen. Indem Sie die Clientanwendung asynchron machen, können Sie verhindern, dass ein langsamer Server unnötig eine Clientanwendung bindet.
  • Übertragung großer Datenmengen. Das Übertragen großer Datenmengen zwischen dem Client und dem Server, insbesondere über langsame Verbindungen, verbindet sowohl den Clientthread als auch den Server-Manager-Thread für die Dauer der Übertragung. Bei asynchronen RPC und Pipes kann die Datenübertragung inkrementell erfolgen, ohne dass der Client oder Server andere Aufgaben ausführt.

Sie nutzen asynchrone RPC-Mechanismen, indem Sie Funktionen mit dem Attribut [async] deklarieren. Da Sie diese Deklaration in einer Attributkonfigurationsdatei (ACF) vornehmen, müssen Sie keine Änderungen an der IDL-Datei (Interface Definition Language) vornehmen. asynchrones RPC hat keine Auswirkungen auf das Drahtprotokoll (wie die Daten zwischen Client und Server übertragen werden). Dies bedeutet, dass synchrone und asynchrone Clients mit einer asynchronen Serveranwendung kommunizieren können.

Dieser Abschnitt enthält eine Übersicht über die Entwicklung verteilter Anwendungen mit asynchronen RPC. Die Übersicht wird in den folgenden Abschnitten vorgestellt: