Różnica między RPC a RMI

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 8 Móc 2024
Anonim
Różnica między RPC a RMI - Technologia
Różnica między RPC a RMI - Technologia

Zawartość


RPC i RMI to mechanizmy, które umożliwiają klientowi wywołanie procedury lub metody z serwera poprzez nawiązanie komunikacji między klientem a serwerem. Wspólna różnica między RPC i RMI polega na tym, że RPC obsługuje tylko programowanie proceduralne podczas gdy RMI obsługuje programowanie obiektowe.

Inną ważną różnicą między nimi jest to, że składają się parametry przekazywane do zdalnego wywoływania procedur zwykłe struktury danych. Z drugiej strony parametry przekazywane do metody zdalnej składają się z przedmioty.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaRPCRMI
ObsługujeProgramowanie proceduralne
Programowanie obiektowe
ParametryZwykłe struktury danych są przekazywane do zdalnych procedur.Obiekty są przekazywane do metod zdalnych.
WydajnośćNiższy niż RMIWięcej niż RPC i wspierane przez nowoczesne podejście programistyczne (tj. Paradygmaty obiektowe)
Koszty ogólneWięcej
Mniej porównywalnie
Parametry wejściowe są obowiązkowe.takNiekoniecznie
Zapewnienie łatwości programowania
Wysoki
Niska


Definicja RPC

Zdalne wywołanie procedury (RPC) to funkcja języka programowania opracowana dla obliczeń rozproszonych i oparta na semantyce języka procedura lokalna połączenia. Jest to najczęstsza forma zdalnej obsługi i została zaprojektowana jako sposób na wyodrębnienie mechanizmu wywoływania procedur w celu użycia między systemami połączonymi przez sieć. Jest podobny do mechanizmu IPC, w którym system operacyjny pozwala procesom zarządzać współużytkowanymi danymi i radzić sobie ze środowiskiem, w którym różne procesy są wykonywane w oddzielnych systemach i koniecznie wymagają komunikacji opartej na danych.

Przyjrzyjmy się, w jaki sposób RPC jest implementowane poprzez podane kroki:

  • Proces klienta wywołuje kod pośredniczący klienta z parametrami, a jego wykonywanie jest zawieszane do czasu zakończenia połączenia.
  • Parametry są następnie tłumaczone na postać niezależną od maszyny poprzez zestawienie poprzez kod klienta. Następnie są przygotowywane, które zawierają reprezentację parametrów.
  • Aby znaleźć tożsamość witryny, skrót klienta komunikuje się z serwerem nazw, na którym istnieje zdalna procedura.
  • Za pomocą protokołu blokującego klient przesyła się do witryny, w której istnieje zdalne wywołanie procedury. Ten krok powoduje zatrzymanie kodu pośredniczącego klienta, dopóki nie otrzyma odpowiedzi.


  • Witryna serwera odbiera wysłane ze strony klienta i konwertuje je do formatu specyficznego dla maszyny.
  • Teraz odcinek serwera wykonuje wywołanie procedury serwera wraz z parametrami, a odcinek serwera jest przerywany do momentu zakończenia procedury.
  • Procedura serwera zwraca wygenerowane wyniki do kodu pośredniczącego serwera, a wyniki są konwertowane na format niezależny od maszyny w kodzie pośredniczącym serwera i tworzą wyniki zawierające.
  • Wynik jest wysyłany do kodu pośredniczącego klienta, który jest ponownie konwertowany do formatu specyficznego dla maszyny, odpowiedniego dla kodu pośredniczącego klienta.
  • W końcu klient, stub zwraca wyniki do procesu klienta.

Definicja RMI

Zdalne wywołanie metody (RMI) jest podobny do RPC, ale jest specyficzny dla języka i cecha java. Wątek może wywoływać metodę na zdalnym obiekcie. Aby zachować przejrzystość po stronie klienta i serwera, implementuje zdalny obiekt za pomocą kodów pośredniczących i szkieletów. Kod pośredniczący znajduje się w kliencie, a dla obiektu zdalnego zachowuje się jak serwer proxy.

Gdy klient wywołuje metodę zdalną, wywoływany jest kod pośredni dla metody zdalnej. Kod pośredniczący klienta jest odpowiedzialny za utworzenie i przesłanie paczki zawierającej nazwę metody i zestawione parametry, a szkielet jest odpowiedzialny za przyjęcie paczki.

Szkielet unmarshals parametry i wywołuje żądaną metodę na serwerze. Szkielet przekazuje podaną wartość (lub wyjątki) paczką i przekazuje ją do kodu pośredniczącego klienta. Kod pośredniczący ponownie składa paczkę zwrotną i przesyła ją do klienta.

W Javie parametry są przekazywane do metod i zwracane w formie referencji. Może to być kłopotliwe dla usługi RMI, ponieważ nie wszystkie obiekty są prawdopodobnie metodami zdalnymi. Musi więc ustalić, które z nich można przekazać jako odniesienie, a które nie.

Java korzysta z procesu o nazwie as serializacja gdzie obiekty są przekazywane jako wartość. Obiekt zdalny jest lokalizowany według wartości. Może również przekazać obiekt przez referencję poprzez przekazanie zdalnego odwołania do obiektu wraz z adresem URL klasy kodu pośredniczącego. Przekaż przez odniesienie ogranicza kod pośredniczący dla obiektu zdalnego.

  1. RPC obsługuje paradygmaty programowania proceduralnego, dlatego jest oparte na języku C, podczas gdy RMI obsługuje obiektowe paradygmaty programowania i jest oparte na języku Java.
  2. Parametry przekazywane do procedur zdalnych w RPC są zwykłymi strukturami danych. Przeciwnie, RMI przekazuje obiekty jako parametr do metody zdalnej.
  3. RPC można uznać za starszą wersję RMI i jest on używany w językach programowania, które obsługują programowanie proceduralne, i może używać tylko metody przekazywania według wartości. W przeciwieństwie do tego, narzędzie RMI zostało opracowane w oparciu o nowoczesne podejście programistyczne, w którym można wykorzystać wartość lub referencję. Kolejną zaletą RMI jest to, że parametry przekazywane przez referencję można zmieniać.
  4. Protokół RPC generuje więcej kosztów ogólnych niż RMI.
  5. Parametry przekazane w RPC muszą być „wejście-wyjście”, Co oznacza, że ​​wartość przekazywana do procedury i wartość wyjściowa muszą mieć te same typy danych. Natomiast nie ma przymusu zaliczenia „wejście-wyjście”Parametry w RMI.
  6. W RPC odniesienia nie mogą być prawdopodobne, ponieważ dwa procesy mają odrębną przestrzeń adresową, ale jest to możliwe w przypadku RMI.

Wniosek

Zarówno RPC, jak i RMI służą temu samemu celowi, ale są używane w językach obsługujących różne paradygmaty programowania, dlatego mają różne cechy.