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ównania | RPC | RMI |
---|---|---|
Obsługuje | Programowanie proceduralne | Programowanie obiektowe |
Parametry | Zwyczajne struktury danych są przekazywane do zdalnych procedur. | Obiekty przekazywane są do metod zdalnych. |
Wydajność | Niższy niż RMI | Więcej niż RPC i wspierane przez nowoczesne podejście do programowania (np. Paradygmaty obiektowe) |
Koszty ogólne | Więcej | Mniej porównywalnie |
Parametry wejściowe są obowiązkowe. | tak | Niekoniecznie |
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.
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
- 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.
- Parametry przekazywane do zdalnych procedur w RPC są zwykłymi strukturami danych. Wręcz przeciwnie, RMI przenosi obiekty jako parametr do metody zdalnej.
- 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ć.
- Protokół RPC generuje więcej narzutów niż RMI.
- 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.
- 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.