Asynchrone RPC
Asynchrone Remote Procedure Call (RPC) is een Microsoft-extensie die verschillende beperkingen van het traditionele RPC-model aanpakt zoals gedefinieerd door de Open Software Foundation–Distributed Computing Environment (OSF-DCE). Asynchrone RPC scheidt een externe procedureaanroep van de retourwaarde, waarmee de volgende beperkingen van traditionele, synchrone RPC worden opgelost:
- Meerdere openstaande aanroepen van een client met één thread. In het traditionele RPC-model wordt een client geblokkeerd in een externe procedure-aanroep totdat de aanroep wordt geretourneerd. Dit voorkomt dat een client meerdere openstaande aanroepen heeft, terwijl de thread nog steeds beschikbaar is voor ander werk.
- Trage of vertraagde clients. Een client die traag gegevens produceert, kan een externe procedureaanroep met initiële gegevens maken en vervolgens aanvullende gegevens opgeven terwijl deze wordt geproduceerd. Dit is niet mogelijk met conventionele (synchrone) RPC.
- Trage of vertraagde servers. Een externe procedure-aanroep die lang duurt om te voltooien, koppelt de verzendingsthread voor de duur van de taak. Met asynchrone RPC kan de server een afzonderlijke (asynchrone) bewerking starten om de aanvraag te verwerken en het antwoord terug te sturen wanneer deze beschikbaar is. De server kan het antwoord ook incrementeel verzenden naarmate de resultaten beschikbaar komen zonder dat er een verzendingsthread hoeft te worden gekoppeld voor de duur van de externe oproep. Door de clienttoepassing asynchroon te maken, kunt u voorkomen dat een trage server onnodig een clienttoepassing koppelt.
- Overdracht van grote hoeveelheden gegevens. Het overdragen van grote hoeveelheden gegevens tussen de client en de server, met name via trage koppelingen, verbindt zowel de clientthread als de serverbeheerthread voor de duur van de overdracht. Met asynchrone RPC en pijpen kan gegevensoverdracht incrementeel plaatsvinden en zonder dat de client of server andere taken kan uitvoeren.
U profiteert van asynchrone RPC-mechanismen door functies te declareren met het kenmerk [asynchrone] . Omdat u deze declaratie in een kenmerkconfiguratiebestand (ACF) aanbrengt, hoeft u geen wijzigingen aan te brengen in het IDL-bestand (Interface Definition Language). asynchrone RPC heeft geen effect op het wire-protocol (hoe de gegevens worden verzonden tussen de client en de server). Dit betekent dat zowel synchrone als asynchrone clients kunnen communiceren met een asynchrone servertoepassing.
In deze sectie wordt een overzicht weergegeven van het ontwikkelen van gedistribueerde toepassingen met behulp van asynchrone RPC. Het overzicht wordt weergegeven in de volgende secties:
- Asynchrone functies declareren
- Asynchrone RPC aan de clientzijde
- Asynchrone RPC aan de serverzijde
- causale volgorde van Asynchrone aanroepen
- foutafhandeling
- Asynchrone RPC via het benoemde pipeprotocol
- Asynchrone RPC gebruiken met DCE Pipes
- Asynchrone DCOM-