Zalecane, 2024

Wybór Redakcji

Różnica między RPC i RMI

RPC i RMI są mechanizmami, które umożliwiają klientowi wywołanie procedury lub metody z serwera poprzez ustanowienie komunikacji między klientem a serwerem. Powszechną różnicą między RPC i RMI jest to, że RPC obsługuje jedynie programowanie proceduralne, podczas gdy RMI obsługuje programowanie obiektowe .

Inną ważną różnicą między tymi dwoma jest to, że parametry przekazywane do wywołania procedur zdalnych składają się ze zwykłych struktur danych . Z drugiej strony parametry przekazywane do metody zdalnej składają się z obiektów .

Wykres porównania

Podstawa do porównaniaRPCRMI
ObsługujeProgramowanie proceduralne
Programowanie obiektowe
ParametryZwyczajne struktury danych są przekazywane do zdalnych procedur.Obiekty przekazywane są do metod zdalnych.
WydajnośćNiższy niż RMIWięcej niż RPC i wspierane przez nowoczesne podejście do programowania (np. 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ływanie procedur (RPC) to funkcja języka programowania opracowana dla przetwarzania rozproszonego i oparta na semantyce lokalnych wywołań procedur . Jest to najbardziej rozpowszechniona forma zdalnej obsługi i została zaprojektowana jako sposób na uproszczenie mechanizmu wywołania procedury, który ma być używany między systemami połączonymi za pośrednictwem sieci. Jest podobny do mechanizmu IPC, w którym system operacyjny pozwala procesom zarządzać udostępnionymi danymi i radzić sobie w środowisku, w którym różne procesy są wykonywane w oddzielnych systemach i koniecznie wymagają komunikacji opartej na komunikatach.

Rozumiem, w jaki sposób usługa RPC jest wdrażana za pomocą podanych kroków:

  • Proces klienta wywołuje kod pośredniczący klienta z parametrami, a jego wykonanie zostaje zawieszone do czasu zakończenia połączenia.
  • Parametry są następnie tłumaczone na formę niezależną od maszyny przez rozlokowanie za pośrednictwem kodu pośredniczącego klienta. Następnie przygotowywany jest komunikat, który zawiera reprezentację parametrów.
  • Aby znaleźć tożsamość witryny, pośrednik klienta komunikuje się z serwerem nazw, na którym istnieje zdalna procedura.
  • Korzystając z protokołu blokowania, kod pośredniczący klienta wysyła komunikat do witryny, w której istnieje zdalne wywołanie procedury. W tym kroku zatrzymaj klienta, dopóki nie otrzyma odpowiedzi.
  • Strona serwera otrzymuje wiadomość wysłaną od strony klienta i konwertuje ją na format specyficzny dla maszyny.
  • Teraz kod pośredniczący serwera wykonuje wywołanie procedury serwera wraz z parametrami, a kod pośredniczący serwera jest przerywany do czasu zakończenia procedury.
  • Procedura serwera zwraca wygenerowane wyniki do kodu pośredniczącego serwera, a wyniki zostają przekształcone na format niezależny od komputera na serwerze pośrednim i utworzyć komunikat zawierający wyniki.
  • Komunikat wynikowy jest wysyłany do kodu pośredniczącego klienta, który jest konwertowany z powrotem do formatu określonego przez maszynę odpowiedniego dla kodu pośredniczącego klienta.
  • Na końcu klienta, kod pośredniczący zwraca wyniki do procesu klienta.

Definicja RMI

Zdalne wywoływanie metod (RMI) jest podobne do RPC, ale jest specyficzne dla języka i funkcji java. Wątek może wywoływać metodę na zdalnym obiekcie. Aby zachować przezroczystość po stronie klienta i serwera, implementuje zdalny obiekt za pomocą skrótów i szkieletów. Kod pośredniczący znajduje się w kliencie, a obiekt zdalny zachowuje się jak proxy.

Kiedy klient wywołuje metodę zdalną, wywoływany jest skrót do metody zdalnej. Kod pośredniczący klienta jest odpowiedzialny za utworzenie i wysłanie paczki zawierającej nazwę metody i parametry rozesłane, a szkielet odpowiedzialny jest za otrzymanie paczki.

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

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

Java używa procesu nazwanego jako serializacja, w którym obiekty są przekazywane jako wartość. Obiekt zdalny jest lokalizowany przez podanie wartości. Może także przekazywać obiekt przez odniesienie, przekazując zdalne odniesienie do obiektu wraz z adresem URL klasy pośredniczącej. Przekaż przez referencję ogranicza skrót do obiektu zdalnego.

Kluczowe różnice między RPC i RMI

  1. Protokół RPC obsługuje paradygmaty programowania proceduralnego, zatem jest oparty na C, podczas gdy RMI obsługuje paradygmaty programowania obiektowego i bazuje na języku Java.
  2. Parametry przekazywane do zdalnych procedur w RPC są zwykłymi strukturami danych. Wręcz przeciwnie, RMI przenosi 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 wspierają programowanie proceduralne, i może korzystać tylko z metody "przekazuj według wartości". W przeciwieństwie do tego, obiekt RMI został opracowany w oparciu o nowoczesne podejście programistyczne, które może wykorzystywać przekazywanie wartości lub odniesienie. Kolejną zaletą RMI jest to, że parametry przekazywane przez odniesienie można zmienić.
  4. Protokół RPC generuje więcej narzutów niż RMI.
  5. Parametry przekazywane w RPC muszą być " in-out ", co oznacza, że ​​wartość przekazana do procedury i wartość wyjściowa muszą mieć te same typy danych. W przeciwieństwie do tego, nie ma przymusu przekazywania parametrów " in-out " w RMI.
  6. W RPC referencje 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 funkcje.

Top