Was ist der Unterschied zwischen Remoteprozeduraufruf und Webdienst?


80

Gibt es eine klare Definition von RPC und Web Service? Eine schnelle Wikipedia-Suche zeigt:

RPC: Remote Procedure Call (RPC) ist eine prozessübergreifende Kommunikationstechnologie, mit der ein Computerprogramm veranlassen kann, dass eine Unterroutine oder Prozedur in einem anderen Adressraum (normalerweise auf einem anderen Computer in einem gemeinsam genutzten Netzwerk) ausgeführt wird, ohne dass der Programmierer die Details explizit codiert diese entfernte Interaktion.

Webdienst: Webdienste sind normalerweise APIs (Application Programming Interfaces) oder Web-APIs, auf die über das Hypertext Transfer Protocol zugegriffen und auf einem Remote-System ausgeführt wird, auf dem die angeforderten Dienste gehostet werden. Webdienste fallen in der Regel in eines von zwei Lagern: Big Web Services [1] und RESTful Web Services.

Mir ist nicht ganz klar, was der wirkliche Unterschied zwischen den beiden Dingen ist. Es scheint, dass eine Sache zu RPC gehören könnte und gleichzeitig eine Art Webdienst ist.

Ist Web Service eine übergeordnete Darstellung von RPC?

Antworten:


60

Ist Web Service eine übergeordnete Darstellung von RPC?

Ja ist es. Ein Webdienst ist eine spezifische Implementierung von RPC. Auf der untersten Ebene stellt der Webdienst mithilfe des HTTP-Protokolls eine Verbindung zum Socket her, um das Senden einer Nutzlast auszuhandeln, die in einem Remotespeicher ausgeführt wird (Remotespeicher kann derselbe Computer sein). Alle diese Abstraktionen von Fernaufrufen sind im Kern RPCs.


1
Weitere Attribute eines Webdienstes zusätzlich zu dem, was Wayne geschrieben hat: Ermöglicht einen plattformunabhängigen Weg eines RPC, ist erkennbar und selbstbeschreibend (vergleiche das mit einem Win32-RPC).
Alex

6
Nein das ist nicht richtig. RPC ist ein Architekturstil eines Webdienstes. Eine Alternative wäre REST. Referenz: ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339611
schlamar

@schlamar Hat der Webdienst etwas mit RPC zu tun? Wenn ja, haben wir Client- und Server-Stubs in der Webdienstumgebung?
Überaustausch

8

Ich sehe diese Frage. Die Frage wurde vor langer Zeit gestellt, aber ich denke, dass jede Antwort in dieser Community, die mehr Informationen und Klarheit zu diesem Thema bietet, für die zukünftigen Fragesteller hilfreich sein wird. Daher möchte ich meine Verbesserung hinzufügen, die auf wichtige Unterschiede hinweist, und ich hoffe, dass sie für zukünftige Leser hilfreich sein wird.

------------------------------------------------------------------------------
| 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
------------------------------------------------------------------------------

Ich habe keine Beschreibungen von RPC und Web Services erwähnt, da Sie diese in der Antwort anderer deutlich sehen.


5

Remote Procedure Call (RPC) und WebService laufen aus Gründen der Funktionalität beide parallel. Aber es gibt einen subtilen Unterschied in ihrer Art zu beschwören. Ein Webdienst kann von jeder Anwendung unter Verwendung des XML-Formats über das HTTP-Protokoll für Verfahren und seiner Interoperabilität aufgerufen werden, während im Fall von RPC die Funktion von mehreren Anwendungen aufgerufen werden kann, sodass sie dem Pfad der Serialisierung folgt, um die Objektdaten zu speichern. Es unterstützt das Binärformat über das TCP-Protokoll. In einem besseren Ansatz können wir den RPC-Workflow kurz erläutern, wie wir eine Funktion über den richtigen Socket und das richtige Nachrichtenformat ausführen, aber nicht wissen, ob die jeweilige Funktion auf dem Client-Server tatsächlich vorhanden ist. Selbst der bereitgestellte Socket befindet sich möglicherweise nicht im derselbe Server, auf dem sich die Funktion befindet. Aber jedes Mal, wenn es das Gefühl gibt, dass sich die Funktion in der Region befindet.


1

• Daten werden für die Übertragung mithilfe von XML formatiert, wodurch Marshalling, Unmarshalling und verschiedene andere übersetzungsbezogene Anforderungen, die normalerweise von einem Entwickler codiert werden, verbessert oder beseitigt werden. • Daten werden unter Verwendung standardisierter Protokolle wie HTTP oder SMTP weitergegeben, die genau definierte Standards veröffentlicht haben. • Der zugrunde liegende exponierte Dienst wird mithilfe eines bekannten akzeptierten Mechanismus, WSDL, genau definiert. • Services werden mithilfe eines genau definierten Standards, UDDI, und des erweiterten ebXML gefunden.

Insbesondere bietet WSDL eine Reihe wichtiger Informationen:

• Eine Definition des Formats der Nachrichten, die zwischen zwei Endpunkten mithilfe ihrer und -Elemente und der entsprechenden Schemadefinitionen übergeben werden. • Die Semantik des Dienstes: Wie kann er aufgerufen werden, um eine synchrone Anforderung / Antwort, eine synchrone Antwort oder eine asynchrone Kommunikation durchzuführen? • Der Endpunkt und der Transport des Dienstes über das Element: das heißt, wer den Dienst bereitstellt. • Eine Codierung über das Element, mit der auf den Dienst zugegriffen wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.