2010-06-12 6 views
60

Gibt es eine klare Definition von RPC und Webdienst? Eine schnelle wikipedia Suche zeigt:Was ist der Unterschied zwischen Remoteprozeduraufruf und Webdienst

RPC: Remote Procedure Call (RPC) ist eine Inter-Prozess-Kommunikationstechnik dass ein Computerprogramm, um Ursache eines Unterprogramm oder eine Prozedur zum auszuführen in einem anderen Adreßraum ermöglicht (häufig auf einem anderen Computer auf einem gemeinsamen Netzwerk ), ohne dass der Programmierer explizit die Details für diese Remote-Interaktion codiert.

Web Service: Web Service sind typischerweise Anwendungsprogrammierung -Schnittstellen (API) oder Web-APIs, die über Hypertext Transfer zugegriffen werden Protokolle und ausgeführt auf einem entfernten System den gewünschten Hosting-Service. Web-Dienste neigen dazu, in eine der zwei Lager zu fallen: Big Web Services [1] und RESTful Web Services.

Ich bin nicht ganz klar, was der wirkliche Unterschied zwischen den beiden Dingen ist. Es scheint, dass eine Sache zu RPC gehört und gleichzeitig eine Art Web-Service ist.

Ist der Webdienst eine höhere Darstellung von RPC?

Antwort

45

Ist Web Service eine höhere Ebene Darstellung von RPC?

Ja, ist es. Ein Webdienst ist eine spezifische Implementierung von RPC. Auf der untersten Ebene ist der gesamte Webdienst eine Verbindung zu einem Socket und verwendet das HTTP-Protokoll zum Aushandeln einer Payload, die in einem Remote-Space ausgeführt wird (möglicherweise sogar auf demselben Computer). All diese Abstraktionen sind im Kern RPC.

+1

Weitere Attribute eines Web Service zusätzlich zu dem, was Wayne schrieb: Erlaubt eine plattformunabhängige Art und Weise eines RPC, ist erkennbar und selbstbeschreibend (vergleiche das mit einem Win32 RPC). – Alex

+4

Nein, das ist nicht korrekt. RPC ist ein Architekturstil eines Web-Service. Eine Alternative wäre REST. Referenz: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339611 – schlamar

+0

@schlamar Hat der Webservice irgendetwas mit RPC zu tun? Wenn ja, haben wir Client- und Server-Stubs in der Web-Service-Umgebung? – overexchange

1

• Die Daten werden für die Übertragung mit XML formatiert, wodurch das Marshalling, das Unmarshalling und verschiedene andere Übersetzungsaufgaben, die normalerweise von einem Entwickler codiert werden, verbessert oder eliminiert werden. • Daten werden mit standardisierten Protokollen wie HTTP oder SMTP übertragen, die wohldefinierte Standards veröffentlicht haben. • Der zugrundeliegende exponierte Service ist unter Verwendung eines bekannten akzeptierten Mechanismus, WSDL, gut definiert. • Dienste werden mit einem wohldefinierten Standard, UDDI und der fortgeschritteneren ebXML gefunden.

Insbesondere stellt WSDL eine Anzahl von Schlüsselinformationen:

• eine Definition des Formats der Nachrichten, die zwischen zwei Endpunkten und unter Verwendung seiner Elemente und entsprechende Schemadefinitionen übergeben werden. • Die Semantik des Dienstes: wie er aufgerufen werden könnte, um eine synchrone Anfrage/Antwort, synchrone Nur-Antwort oder asynchrone Kommunikation zu machen. • Der Endpunkt und der Transport des Dienstes über das Element: dh wer stellt den Dienst zur Verfügung. • Eine Kodierung über das Element, auf die der Dienst zugreift.

4

Remote Procedure Call (RPC) und WebService, im Interesse der Funktionalität gehen beide parallel. Aber es gibt einen feinen Unterschied in ihrer Art, sich anzumelden. Ein Web-Service kann von jeder Anwendung aufgerufen werden, wobei das XML-Format über das HTTP-Protokoll für Prozeduren verwendet wird und von Natur aus interoperabel ist. Im Fall von RPC kann die Funktion von mehreren Anwendungen aufgerufen werden, sodass sie dem Serialisierungsweg folgt, um die Objektdaten zu speichern . Es unterstützt das Binärformat über TCP-Protokoll. In einem besseren Ansatz können wir RPC-Workflow kurz machen, wie wir eine Funktion durch richtige Socket und richtige Format der Nachricht ausführen, aber nicht wissen, die tatsächliche Existenz der bestimmten Funktion in Client-Server.Auch der angegebene Socket möglicherweise nicht derselbe Server, auf dem sich die Funktion befindet. Aber jedes Mal gibt es ein Gefühl wie die Funktion in der lokalen befindet. Im Remote-Dienst befindet sich die Funktion auf dem Remote-Computer und kann durch das richtige Format und Protokoll aufgerufen werden und erlaubt Skalierbarkeit.

Verwandte Themen