Zdalne wywołanie procedury (RPC) to potężna technika konstruowania rozproszone aplikacje oparte na kliencie-serwerze . Opiera się na rozszerzeniu konwencjonalnego lokalnego wywoływania procedur tak, aby wywoływana procedura nie musi znajdować się w tej samej przestrzeni adresowej co procedura wywołująca . Te dwa procesy mogą znajdować się w tym samym systemie lub mogą znajdować się w różnych systemach połączonych siecią.
Podczas wykonywania zdalnego wywołania procedury:

1. Środowisko wywołujące zostaje zawieszone, parametry procedury przesyłane są siecią do środowiska, w którym procedura ma zostać wykonana, i tam procedura jest wykonywana.
but wiosenny
2. Kiedy procedura zakończy się i wygeneruje wyniki, jej wyniki są przesyłane z powrotem do środowiska wywołującego, gdzie wykonywanie jest wznawiane tak, jak w przypadku powrotu ze zwykłego wywołania procedury.
UWAGA: RPC szczególnie dobrze nadaje się do pracy klient-serwer (np. zapytanie-odpowiedź) interakcja, w której przepływ kontroli na zmianę dzwoniący i odbierany . Koncepcyjnie klient i serwer nie są wykonywane jednocześnie. Zamiast tego wątek wykonania przeskakuje od wywołującego do wywoływanego, a następnie z powrotem.
Działanie RPC

Podczas RPC wykonywane są następujące kroki:
- Klient wywołuje a procedura kodu pośredniczącego klienta , przekazując parametry w zwykły sposób. Sekcja klienta znajduje się we własnej przestrzeni adresowej klienta.
- Odcinek klienta Marshalle (opakowanie) parametry w wiadomości. Marshalling obejmuje konwersję reprezentacji parametrów na standardowy format i kopiowanie każdego parametru do komunikatu.
- Odcinek klienta przekazuje wiadomość do warstwy transportowej, która wysyła ją do zdalnego serwera.
- Na serwerze warstwa transportowa przekazuje wiadomość do odcinka pośredniczącego serwera, który demarshalls (rozpakuj) parametry i wywołuje żądaną procedurę serwera przy użyciu zwykłego mechanizmu wywoływania procedur.
- Po zakończeniu procedury serwera następuje powrót do kodu pośredniczącego serwera (np. poprzez powrót do normalnego wywołania procedury) , który łączy zwracane wartości w komunikat. Następnie odcinek serwera przekazuje wiadomość do warstwy transportowej.
- Warstwa transportowa wysyła komunikat wynikowy z powrotem do warstwy transportowej klienta, która przekazuje komunikat z powrotem do odcinka klienta.
- Odcinek klienta rozdziela parametry zwrotne i zwraca wykonanie do obiektu wywołującego.
Kluczowe kwestie do rozważenia przy projektowaniu i wdrażaniu systemów RPC to:
- Bezpieczeństwo: Ponieważ RPC obejmuje komunikację przez sieć, bezpieczeństwo jest głównym problemem. Należy wdrożyć środki takie jak uwierzytelnianie, szyfrowanie i autoryzacja, aby zapobiec nieautoryzowanemu dostępowi i chronić wrażliwe dane. Skalowalność: wraz ze wzrostem liczby klientów i serwerów wydajność systemu RPC nie może się pogorszyć. Techniki równoważenia obciążenia i efektywne wykorzystanie zasobów są ważne dla skalowalności. Tolerancja błędów: system RPC powinien być odporny na awarie sieci, awarie serwerów i inne nieoczekiwane zdarzenia. Środki takie jak nadmiarowość, przełączanie awaryjne i płynna degradacja mogą pomóc w zapewnieniu odporności na awarie. Standaryzacja: dostępnych jest kilka frameworków i protokołów RPC i ważne jest, aby wybrać standardowy i powszechnie akceptowany, aby zapewnić interoperacyjność i kompatybilność na różnych platformach i językach programowania. Dostrajanie wydajności: Dostrajanie systemu RPC w celu uzyskania optymalnej wydajności jest ważne. Może to obejmować optymalizację protokołu sieciowego, minimalizację danych przesyłanych przez sieć oraz zmniejszenie opóźnień i narzutu związanego z wywołaniami RPC.
PROBLEMY RPC :
Kwestie, które należy rozwiązać:
25 c do k
1. Środowisko wykonawcze RPC:
System wykonawczy RPC to biblioteka procedur i zestaw usług obsługujących komunikację sieciową leżącą u podstaw mechanizmu RPC. W trakcie wywołania RPC obsługa kodu systemów wykonawczych po stronie klienta i serwera wiążące, nawiązują komunikację za pośrednictwem odpowiedniego protokołu, przekazują dane połączeń między klientem a serwerem i obsługują błędy komunikacyjne.
2. Odcinek:
Funkcja odgałęzienia polega na zapewniają przejrzystość kodu aplikacji napisanego przez programistę .
- Po stronie klienta kod pośredniczący obsługuje interfejs pomiędzy lokalnym wywołaniem procedury klienta a systemem wykonawczym, organizując i unmarshalując dane, wywołując protokół wykonawczy RPC i, jeśli jest to wymagane, wykonując niektóre wiążące kroki. Po stronie serwera kod pośredniczący zapewnia podobny interfejs pomiędzy systemem wykonawczym a procedurami lokalnego menedżera wykonywanymi przez serwer.
3. Wiązanie: Skąd klient wie, do kogo zadzwonić i gdzie znajduje się usługa?
Najbardziej elastycznym rozwiązaniem jest użycie wiązania dynamicznego i znalezienie serwera w czasie wykonywania, gdy po raz pierwszy wykonywane jest RPC. Przy pierwszym wywołaniu kodu pośredniczącego klienta kontaktuje się on z serwerem nazw w celu ustalenia adresu transportowego, pod którym znajduje się serwer.
Wiązanie składa się z dwóch części:
- My:
- Lokowanie:
- Serwer posiadający usługę do zaoferowania eksportuje dla niej interfejs. Eksport interfejsu powoduje jego zarejestrowanie w systemie, dzięki czemu klienci mogą z niego korzystać. Klient musi zaimportować (wyeksportować) interfejs, zanim będzie mogła rozpocząć się komunikacja.
4. Semantyka wywołań związana z RPC:
Jest on podzielony głównie na następujące opcje:
- Komunikat z prośbą o ponowną próbę –
Określa, czy ponowić próbę wysłania wiadomości z żądaniem, gdy serwer ulegnie awarii lub odbiorca nie otrzyma wiadomości. Filtrowanie duplikatów –
Usuń zduplikowane żądania serwera. Retransmisja wyników –
Aby ponownie wysłać utracone wiadomości bez ponownego wykonywania operacji po stronie serwera.
ZALETY :
co to jest przesyłanie katalogu
- RPC zapewnia ABSTRAKCJA tj. charakter komunikacji sieciowej polegający na przekazywaniu komunikatów jest ukryty przed użytkownikiem.
- RPC często pomija wiele warstw protokołu, aby poprawić wydajność. Nawet niewielka poprawa wydajności jest ważna, ponieważ program może często wywoływać wywołania RPC.
- RPC umożliwia korzystanie z aplikacji w środowisku rozproszonym, a nie tylko lokalnym.
- Dzięki RPC wysiłek związany z ponownym pisaniem/ponownym opracowywaniem kodu jest zminimalizowany.
- Modele zorientowane na proces i wątki obsługiwane przez RPC.
Bibliografia:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Sieci komputerowe: podejście odgórne firmy FOROUZAN