Odpowiedzi:
RPC jest oparty na C i jako taki ma semantykę programowania strukturalnego, z drugiej strony RMI jest technologią opartą na Javie i jest zorientowana obiektowo.
Dzięki RPC możesz po prostu wywołać zdalne funkcje wyeksportowane na serwer, w RMI możesz mieć odniesienia do zdalnych obiektów i wywoływać ich metody, a także przekazywać i zwracać więcej odwołań do zdalnych obiektów, które mogą być dystrybuowane między wieloma instancjami JVM, dzięki czemu jest znacznie bardziej wydajny .
RMI wyróżnia się, gdy pojawia się potrzeba opracowania czegoś bardziej złożonego niż czysta architektura klient-serwer. Bardzo łatwo jest rozłożyć obiekty w sieci, umożliwiając wszystkim klientom komunikację bez konieczności jawnego ustanawiania indywidualnych połączeń.
Główna różnica między RPC i RMI polega na tym, że RMI obejmuje obiekty . Zamiast zdalnie wywoływać procedury za pomocą funkcji proxy , używamy zamiast tego obiektu proxy .
RMI zapewnia większą przejrzystość, a mianowicie z powodu wykorzystywania obiektów, odniesień, dziedziczenia, polimorfizmu i wyjątków, ponieważ technologia jest zintegrowana z językiem.
RMI jest również bardziej zaawansowany niż RPC, umożliwiając dynamiczne wywoływanie , w którym interfejsy mogą się zmieniać w czasie wykonywania, oraz adaptację obiektów , co zapewnia dodatkową warstwę abstrakcji.
1. Podejście:
RMI używa paradygmatu zorientowanego obiektowo, w którym użytkownik musi znać obiekt i metodę obiektu, który musi wywołać.
RPC nie obsługuje obiektów. Raczej wywołuje określone podprogramy, które są już ustanowione.
2. Praca:
Dzięki RPC otrzymujesz wywołanie procedury, które wygląda prawie jak wywołanie lokalne. RPC radzi sobie ze złożonością związaną z przekazywaniem wywołania z komputera lokalnego do zdalnego.
RMI robi to samo, ale RMI przekazuje odniesienie do obiektu i metody, która jest wywoływana.
RMI = RPC + Object-Orientation
3. Lepszy:
RMI jest lepszym podejściem w porównaniu do RPC, zwłaszcza w przypadku większych programów, ponieważ zapewnia bardziej przejrzysty kod, który jest łatwiejszy do zidentyfikowania, jeśli coś pójdzie nie tak.
4. Przykłady systemów:
Systemy RPC: SUN RPC, DCE RPC
Systemy RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Simple Object Access Protocol)
Zdalne wywołanie procedury (RPC) to komunikacja między procesami, która umożliwia wywołanie funkcji w innym procesie znajdującym się na komputerze lokalnym lub zdalnym.
Zdalne wywołanie metody (RMI) to API, które implementuje RPC w Javie z obsługą paradygmatów obiektowych.
Możesz myśleć o wywołaniu RPC jak wywołanie procedury w C. RPC obsługuje prymitywne typy danych, w których RMI obsługuje parametry metod / typy zwracane jako obiekty Java.
W przeciwieństwie do RPC RMI jest łatwy do zaprogramowania. Możesz myśleć o swojej logice biznesowej w kategoriach obiektów, a nie sekwencji pierwotnych typów danych.
RPC jest neutralny językowo w przeciwieństwie do RMI, który jest ograniczony do języka Java
RMI jest nieco wolniejszy niż RPC
Zapoznaj się z tym artykułem dotyczącym implementacji RPC w języku C
RMI lub zdalne wywołanie metody jest bardzo podobne do wywołania RPC lub procedury zdalnej w tym, że klient zarówno wysyła obiekty proxy (lub kody pośredniczące) do serwera, jednak subtelna różnica polega na tym, że RPC po stronie klienta wywołuje FUNKCJE za pośrednictwem funkcji proxy, a RMI wywołuje METODY za pośrednictwem funkcja proxy. RMI jest uważany za nieco lepszy, ponieważ jest zorientowaną obiektowo wersją RPC.
Od tutaj .
Aby uzyskać więcej informacji i przykładów, zajrzyj tutaj .
Różnica między RMI i RPC polega na tym, że:
method
a a pan pośrednio podkreśla, ale których nie wyjaśniacie function
? W Javie nie ma funkcji ... ale w OOP, o ile pamiętam, są synonimami, tak samo jak invocation
i call
.
RPC jest starym protokołem opartym na C. Może wywołać zdalną procedurę i sprawić, że będzie wyglądać jak wywołanie lokalne. RPC radzi sobie ze złożonością przekazywania tego zdalnego wywołania do serwera i dostarczania wyniku do klienta.
Java RMI również osiąga to samo, ale nieco inaczej, używa odwołań do obiektów zdalnych , więc wysyła referencję do obiektu zdalnego wraz z nazwą metody do wywołania.To jest lepsze, ponieważ skutkuje czystszym kod w przypadku dużych programów, a także dystrybucja obiektów w sieci umożliwia wielu klientom wywoływanie metod na serwerze zamiast nawiązywania każdego połączenia z osobna.
RMI
w Javie jest coś takiego jakgRPC
w .Net ...