Udostępnij za pośrednictwem


Jak działa RPC

Narzędzia RPC sprawiają, że są wyświetlane użytkownikom tak, jakby klient bezpośrednio wywołuje procedurę znajdującą się w programie serwera zdalnego. Klient i serwer mają własne przestrzenie adresowe; oznacza to, że każdy z nich ma własny zasób pamięci przydzielony do danych używanych przez procedurę. Na poniższej ilustracji przedstawiono architekturę RPC.

architektura rpc

Jak pokazano na ilustracji, aplikacja kliencka wywołuje lokalną zastępczą procedurę zamiast rzeczywistego kodu procedury. Stuby są kompilowane i połączone z aplikacją kliencką. Zamiast zawierać rzeczywisty kod implementujący procedurę zdalną, kod wycinkowy klienta:

  • Pobiera wymagane parametry z przestrzeni adresowej klienta.
  • Tłumaczy parametry zgodnie z potrzebami na standardowy format NDR na potrzeby transmisji przez sieć.
  • Wywołuje funkcje w bibliotece czasu wykonywania klienta RPC w celu wysłania żądania i jego parametrów do serwera.

Serwer wykonuje następujące kroki, aby wywołać procedurę zdalną.

  1. Funkcje biblioteki czasu wykonywania RPC serwera akceptują żądanie i wywołają procedurę wycinków serwera.
  2. Zastępca serwera pobiera parametry z bufferu sieciowego i konwertuje je z formatu transmisji sieciowej na format, którego potrzebuje serwer.
  3. Obiekt zastępczy serwera wywołuje rzeczywistą procedurę na serwerze.

Następnie procedura zdalna jest uruchamiana, prawdopodobnie generując parametry wyjściowe i wartość zwracaną. Po zakończeniu procedury zdalnej podobna sekwencja kroków zwraca dane do klienta.

  1. Procedura zdalna zwraca dane do wycinku serwera.
  2. Element końcowy serwera konwertuje parametry wyjściowe na format wymagany do transmisji przez sieć i zwraca je do funkcji biblioteki czasu wykonywania RPC.
  3. Funkcje biblioteki czasu wykonywania RPC serwera przesyłają dane przez sieć do komputera klienckiego.

Klient ukończy proces, akceptując dane za pośrednictwem sieci i zwracając je do funkcji wywołującej.

  1. Biblioteka wykonawcza RPC klienta odbiera wartości zwracane przez procedurę zdalną i zwraca je do klientowego stubu.
  2. Stub klienta konwertuje dane z jego NDR na format używany przez komputer klienta. Procedura stub zapisuje dane w pamięci klienta i zwraca wynik do programu wywołującego klienta.
  3. Procedura wywoływania kontynuuje się tak, jakby procedura została wywołana na tym samym komputerze.

Biblioteki czasu wykonywania są udostępniane w dwóch częściach: biblioteka importu, która jest łączona z aplikacją, i biblioteka czasu wykonywania RPC, która jest implementowana jako biblioteka DLL łącza dynamicznego.

Aplikacja serwera zawiera wywołania funkcji biblioteki czasu wykonywania serwera, które rejestrują interfejs serwera i umożliwiają serwerowi akceptowanie zdalnych wywołań procedur. Aplikacja serwera zawiera również procedury zdalne specyficzne dla aplikacji, które są wywoływane przez aplikacje klienckie.