Dela via


Så här fungerar RPC

RPC-verktygen gör att det ser ut som om en klient direkt anropar en procedur som finns i ett fjärrserverprogram. Klienten och servern har var och en sina egna adressutrymmen. Var och en har en egen minnesresurs allokerad till data som används av proceduren. Följande bild illustrerar RPC-arkitekturen.

rpc-arkitektur

Som bilden visar anropar klientprogrammet en lokal stub-procedur i stället för den faktiska koden som implementerar proceduren. Stubs kompileras och länkas med klientprogrammet. I stället för att innehålla den faktiska kod som implementerar fjärrproceduren, stub-koden för klienten:

  • Hämtar de obligatoriska parametrarna från klientadressutrymmet.
  • Översätter parametrarna efter behov till ett standardformat för NDR för överföring över nätverket.
  • Anropar funktioner i RPC-klientens körningsbibliotek för att skicka begäran och dess parametrar till servern.

Servern utför följande steg för att anropa fjärrproceduren.

  1. Server-RPC-körningsbiblioteksfunktionerna godkänner begäran och anropar proceduren för server stub.
  2. Serverns stub hämtar parametrarna från nätverksbufferten och konverterar dem från nätverkets överföringsformat till det format som servern behöver.
  3. Serverns stub anropar den faktiska proceduren på servern.

Fjärrproceduren körs sedan, vilket kan generera utdataparametrar och ett returvärde. När fjärrproceduren är klar returnerar en liknande sekvens med steg data till klienten.

  1. Fjärrproceduren returnerar sina data till serverns stub.
  2. Serverns stub konverterar utdataparametrar till det format som krävs för överföring över nätverket och returnerar dem till RPC-körningsbiblioteksfunktionerna.
  3. Server-RPC-körningsbiblioteksfunktionerna överför data i nätverket till klientdatorn.

Klienten slutför processen genom att acceptera data via nätverket och returnera dem till anropsfunktionen.

  1. Klient-RPC-körningsbiblioteket tar emot fjärrprocedurens returvärden och returnerar dem till klientens stub.
  2. Klientens stub konverterar data från dess NDR till det format som används av klientdatorn. Stub skriver data till klientminnet och returnerar resultatet till det anropande programmet på klienten.
  3. Samtalsproceduren fortsätter som om proceduren hade anropats på samma dator.

Körningsbiblioteken tillhandahålls i två delar: ett importbibliotek som är länkat till programmet och RPC-körningsbiblioteket, som implementeras som ett DLL-bibliotek (dynamic-link library).

Serverprogrammet innehåller anrop till serverns körtidsbiblioteksfunktioner som registrerar serverns gränssnitt och tillåter att servern accepterar fjärrproceduranrop. Serverprogrammet innehåller också de programspecifika fjärrprocedurer som anropas av klientprogrammen.