Jaka jest różnica między zdalnym wywołaniem procedury a usługą internetową?

80

Czy istnieje jasna definicja RPC i usług internetowych? Szybkie wyszukiwanie w Wikipedii pokazuje:

RPC: Zdalne wywołanie procedury (RPC) to technologia komunikacji międzyprocesowej, która umożliwia programowi komputerowemu wykonanie podprogramu lub procedury w innej przestrzeni adresowej (zwykle na innym komputerze w sieci współdzielonej) bez konieczności jawnego kodowania przez programistę szczegółów tej zdalnej interakcji.

Usługa sieci Web: usługi internetowe to zazwyczaj interfejsy programowania aplikacji (API) lub internetowe interfejsy API, do których dostęp uzyskuje się za pośrednictwem protokołu Hypertext Transfer Protocol i są one wykonywane w zdalnym systemie obsługującym żądane usługi. Usługi internetowe zwykle należą do jednego z dwóch obozów: Big Web Services [1] i RESTful Web Services.

Nie do końca rozumiem, jaka jest prawdziwa różnica między tymi dwiema rzeczami. Wygląda na to, że jedna rzecz może należeć do RPC i jest jednocześnie usługą sieciową.

Czy usługa internetowa jest reprezentacją RPC wyższego poziomu?

xiao 啸
źródło

Odpowiedzi:

60

Czy usługa internetowa jest reprezentacją RPC wyższego poziomu?

Tak to jest. Usługa internetowa to specyficzna implementacja RPC. Na najniższym poziomie usługa sieciowa łączy się z gniazdem za pomocą protokołu HTTP w celu negocjowania wysyłania ładunku, który jest wykonywany w przestrzeni zdalnej (przestrzeń zdalna może być tym samym komputerem). Wszystkie te abstrakcje połączeń zdalnych to w swej istocie RPC.

Wayne Hartman
źródło
1
Dalsze atrybuty usługi sieciowej oprócz tego, co napisał Wayne: pozwala na niezależny od platformy sposób RPC, jest wykrywalny i samoopisujący (porównaj to z RPC Win32).
Alex,
6
Nie, to nieprawda. RPC to styl architektoniczny usługi sieci Web. Alternatywą byłby REST. Źródła
schlamar
@schlamar Czy usługa internetowa ma coś wspólnego z RPC? Jeśli tak, czy mamy kody pośredniczące klienta i serwera w środowisku usług sieciowych?
nadmierna zmiana
9

Widzę to pytanie. Pytanie zostało zadane dawno temu, ale myślę, że odpowiedź kogokolwiek w tej społeczności, podająca więcej informacji i jasność na ten temat, będzie pomocna dla przyszłych pytających. Chciałbym więc dodać moje ulepszenie wskazujące na kluczowe różnice i mam nadzieję, że okaże się pomocne dla przyszłych czytelników.

------------------------------------------------------------------------------
| Category             |    RPC              |    Web Services
------------------------------------------------------------------------------
|Operation's Location  | On top of TCP       | on top of HTTP Protocol
------------------------------------------------------------------------------
|Data format           | Binary              | Text, XML, JSON, ect.
------------------------------------------------------------------------------
|Speed                 | Slow (Marshalling)  | Fast
------------------------------------------------------------------------------

Nie wspomniałem o opisach RPC i usług internetowych, ponieważ wyraźnie widzisz je w odpowiedziach innych.

Dosto
źródło
4

Zdalne wywołanie procedury (RPC) i WebService, ze względu na funkcjonalność, działają równolegle. Ale jest subtelna różnica w ich sposobie przywoływania. Usługa internetowa może być wywoływana przez dowolną aplikację, używając formatu XML przez protokół HTTP do postępowania i ma charakter interoperacyjny, podczas gdy w przypadku RPC funkcja może być wywoływana przez wiele aplikacji, więc podąża ścieżką serializacji do przechowywania danych obiektu. Obsługuje format binarny przez protokół TCP. W lepszym podejściu możemy przedstawić przepływ pracy RPC, tak jak wykonujemy funkcję za pomocą odpowiedniego gniazda i odpowiedniego formatu wiadomości, ale nie wiemy, jakie jest rzeczywiste istnienie określonej funkcji na serwerze klienta. Nawet podane gniazdo może nie znajdować się w ten sam serwer, na którym znajduje się funkcja. Ale za każdym razem daje wrażenie, że funkcja znajduje się w lokalnym.

fak33r
źródło
proszę poprawić angielski. Nie mogę zrozumieć
Mohit Shah
1

• Dane są sformatowane do przesyłania przy użyciu XML, ulepszając lub eliminując krosowanie, usuwanie błędów i różne inne wymagania związane z tłumaczeniem, normalnie kodowane przez programistę. • Dane są przesyłane za pomocą standardowych protokołów, takich jak HTTP lub SMTP, które mają opublikowane dobrze zdefiniowane standardy. • Podstawowa udostępniona usługa jest dobrze zdefiniowana przy użyciu znanego, akceptowanego mechanizmu WSDL. • Usługi są wyszukiwane przy użyciu dobrze zdefiniowanego standardu, UDDI i bardziej zaawansowanego ebXML.

W szczególności WSDL dostarcza wielu kluczowych informacji:

• Definicja formatu komunikatów, które są przekazywane między dwoma punktami końcowymi przy użyciu jego elementów i oraz odpowiednich definicji schematów. • Semantyka usługi: jak można ją wywołać, aby wykonać synchroniczne żądanie / odpowiedź, synchroniczną tylko odpowiedź lub komunikować się asynchronicznie. • Punkt końcowy i transport usługi za pośrednictwem elementu, czyli tego, kto świadczy usługę. • Kodowanie poprzez element, czyli sposób uzyskiwania dostępu do usługi.

sravan kumar
źródło