Dela via


Asynkron RPC

Asynkront RPC (Remote Procedure Call) är ett Microsoft-tillägg som åtgärdar flera begränsningar i den traditionella RPC-modellen enligt definitionen i Open Software Foundation–Distributed Computing Environment (OSF-DCE). Asynkron RPC separerar ett fjärrproceduranrop från dess returvärde, vilket löser följande begränsningar i traditionell, synkron RPC:

  • Flera utestående anrop från en enda trådad klient. I den traditionella RPC-modellen blockeras en klient i ett fjärrproceduranrop tills anropet returneras. Detta hindrar en klient från att ha flera utestående anrop, samtidigt som dess tråd är tillgänglig för annat arbete.
  • Långsamma eller fördröjda klienter. En klient som är långsam med att producera data kanske vill göra ett fjärrproceduranrop med initiala data och sedan ange ytterligare data när de skapas. Detta är inte möjligt med konventionell (synkron) RPC.
  • Långsamma eller fördröjda servrar. Ett fjärrproceduranrop som tar lång tid att slutföra binder upp sändningstråden under aktivitetens varaktighet. Med asynkron RPC kan servern starta en separat (asynkron) åtgärd för att bearbeta begäran och skicka tillbaka svaret när det är tillgängligt. Servern kan också skicka svaret stegvis när resultaten blir tillgängliga utan att behöva binda upp en sändningstråd under hela fjärranropet. Genom att göra klientprogrammet asynkront kan du förhindra att en långsam server i onödan binder upp ett klientprogram.
  • Överföring av stora mängder data. Överföring av stora mängder data mellan klienten och servern, särskilt via långsamma länkar, binder både klienttråden och serverhanterarens tråd under överföringens varaktighet. Med asynkron RPC och rör kan dataöverföring ske stegvis och utan att hindra klienten eller servern från att utföra andra uppgifter.

Du kan dra nytta av asynkrona RPC-mekanismer genom att deklarera funktioner med attributet [async] . Eftersom du gör den här deklarationen i en attributkonfigurationsfil (ACF) behöver du inte göra några ändringar i IDL-filen (Interface Definition Language). asynkron RPC har ingen effekt på trådprotokollet (hur data överförs mellan klient och server). Det innebär att både synkrona och asynkrona klienter kan kommunicera med ett asynkront serverprogram.

Det här avsnittet visar en översikt över hur du utvecklar distribuerade program med asynkron RPC. Översikten visas i följande avsnitt: