Kann jemand erklären, was REST und was SOAP in einfachem Englisch ist? Und wie funktionieren Web Services?
Kann jemand erklären, was REST und was SOAP in einfachem Englisch ist? Und wie funktionieren Web Services?
Antworten:
SOAP - "Simple Object Access Protocol"
SOAP ist eine Methode zum Übertragen von Nachrichten oder kleinen Informationsmengen über das Internet. SOAP-Nachrichten sind in XML formatiert und werden normalerweise über HTTP (Hypertext Transfer Protocol) gesendet.
Rest - Repräsentative Zustandsübertragung
Rest ist eine einfache Methode zum Senden und Empfangen von Daten zwischen Client und Server, und es sind nicht sehr viele Standards definiert. Sie können Daten als JSON, XML oder sogar als Klartext senden und empfangen. Es ist leicht im Vergleich zu SOAP.
Beide Methoden werden von vielen großen Spielern verwendet. Es ist eine Frage der Präferenz. Ich bevorzuge REST, weil es einfacher zu bedienen und zu verstehen ist.
SOAP (Simple Object Access Protocol):
Repräsentativer Staatstransfer (REST):
Es gibt endlose Debatten über REST vs SOAP bei Google .
Mein Favorit ist dieser . Update 27. November 2013: Die Website von Paul Prescod scheint offline gegangen zu sein, und dieser Artikel ist nicht mehr verfügbar. Kopien finden Sie jedoch auf der Wayback-Maschine oder als PDF bei CiteSeerX .
SICH AUSRUHEN
Ich verstehe, dass die Hauptidee von REST extrem einfach ist. Wir verwenden seit Jahren Webbrowser und haben gesehen, wie einfach, flexibel, leistungsfähig usw. Websites sind. HTML-Sites verwenden Hyperlinks und Formulare als primäres Mittel zur Benutzerinteraktion. Ihr Hauptziel ist es, uns Kunden zu ermöglichen, nur die Links zu kennen, die wir im aktuellen Zustand verwenden können . Und REST sagt einfach: "Warum nicht dieselben Prinzipien verwenden, um Computer und nicht menschliche Kunden über unsere Anwendung zu steuern?" Wenn Sie dies mit der Leistung der WWW-Infrastruktur kombinieren, erhalten Sie ein Killer-Tool zum Erstellen großartiger verteilter Anwendungen.
Eine andere mögliche Erklärung ist für mathematisch denkende Menschen. Jede Anwendung ist im Grunde eine Zustandsmaschine, wobei Geschäftslogikaktionen Zustandsübergänge sind. Die Idee von REST besteht darin, jeden Übergang einer Anforderung einer Ressource zuzuordnen und Clients Links bereitzustellen, die Übergänge darstellen, die im aktuellen Status verfügbar sind. Somit modelliert es die Zustandsmaschine über Darstellungen und Verknüpfungen. Aus diesem Grund wird es als REpresentational State Transfer bezeichnet.
Es ist ziemlich überraschend, dass sich alle Antworten entweder auf das Nachrichtenformat oder auf die Verwendung von HTTP-Verben konzentrieren. Tatsächlich spielt das Nachrichtenformat überhaupt keine Rolle. REST kann jedes verwenden, sofern der Serviceentwickler es dokumentiert. HTTP-Verben machen einen Dienst nur zu einem CRUD-Dienst, aber noch nicht zu RESTful. Was einen Service wirklich in einen REST-Service verwandelt, sind Hyperlinks (auch als Hypermedia-Steuerelemente bezeichnet), die zusammen mit Daten in Serverantworten eingebettet sind. Ihre Menge muss ausreichen, damit jeder Client die nächste Aktion aus diesen Links auswählen kann.
Leider ist es ziemlich schwierig, korrekte Informationen zu REST im Web zu finden, mit Ausnahme der These von Roy Fielding . (Er ist derjenige, der REST abgeleitet hat). Ich würde das Buch 'REST in Practice' empfehlen , da es eine umfassende Schritt-für-Schritt-Anleitung zur Entwicklung von SOAP zu REST enthält.
SEIFE
Dies ist eine der möglichen Formen des RPC-Architekturstils (Remote Procedure Call). Im Wesentlichen handelt es sich nur um eine Technologie, mit der Clients Servermethoden über Dienstgrenzen (Netzwerk, Prozesse usw.) aufrufen können, als würden sie lokale Methoden aufrufen. Natürlich unterscheidet es sich vom Aufrufen lokaler Methoden in Bezug auf Geschwindigkeit, Zuverlässigkeit usw., aber die Idee ist so einfach.
Verglichen
Die Details wie Transportprotokolle, Nachrichtenformate, xsd, wsdl usw. spielen beim Vergleich von RPCs mit REST keine Rolle. Der Hauptunterschied besteht darin, dass ein RPC-Dienst das Fahrrad neu erfindet, indem er sein eigenes Anwendungsprotokoll in der RPC-API mit der Semantik entwirft, die nur er kennt. Daher müssen alle Clients dieses Protokoll verstehen, bevor sie den Dienst verwenden können, und aufgrund der proprietären Semantik aller Anforderungen kann keine generische Infrastruktur wie Caches erstellt werden. Darüber hinaus schlagen RPC-APIs nicht vor, welche Aktionen im aktuellen Status zulässig sind. Dies muss aus der zusätzlichen Dokumentation abgeleitet werden. REST impliziert andererseits die Verwendung einheitlicher Schnittstellen, um verschiedenen Clients ein gewisses Verständnis der API-Semantik zu ermöglichen, und Hypermedia-Steuerelemente (Links), um verfügbare Optionen in jedem Status hervorzuheben. Somit,
In gewisser Weise ist SOAP (wie jeder andere RPC) ein Versuch, durch eine Dienstgrenze zu tunneln, wobei das Verbindungsmedium als Black Box behandelt wird, die nur Nachrichten übertragen kann. REST ist eine Entscheidung, anzuerkennen, dass das Web ein riesiges verteiltes Informationssystem ist, die Welt so zu akzeptieren, wie sie ist, und zu lernen, sie zu beherrschen, anstatt dagegen zu kämpfen.
SOAP scheint ideal für interne Netzwerk-APIs zu sein, wenn Sie sowohl den Server als auch die Clients steuern und die Interaktionen nicht zu komplex sind. Für Entwickler ist es natürlicher, es zu verwenden. Für eine öffentliche API, die von vielen unabhängigen Parteien verwendet wird, komplex und umfangreich ist, sollte REST jedoch besser passen. Aber dieser letzte Vergleich ist sehr unscharf.
Aktualisieren
Meine Erfahrung hat unerwartet gezeigt, dass die REST-Entwicklung schwieriger ist als SOAP. Zumindest für .NET. Obwohl es großartige Frameworks wie die ASP.NET-Web-API gibt, gibt es kein Tool, das automatisch clientseitigen Proxy generiert. Nichts wie "Webdienstreferenz hinzufügen" oder "WCF-Dienstreferenz hinzufügen". Der gesamte Serialisierungs- und Service-Abfragecode muss von Hand geschrieben werden. Und Mann, das ist viel Boilerplate-Code. Ich denke, die REST-Entwicklung benötigt für jede Entwicklungsplattform etwas Ähnliches wie die WSDL- und Tooling-Implementierung. Tatsächlich scheint es einen guten Grund zu geben: WADL oder WSDL 2.0 , aber keiner der Standards scheint gut unterstützt zu werden.
Update (Januar 2016)
Es stellt sich heraus, dass es jetzt eine Vielzahl von Tools für die REST-API-Definition gibt. Meine persönliche Präferenz ist derzeit RAML .
Funktionsweise von Web Services
Nun, dies ist eine zu weit gefasste Frage, da sie von der Architektur und Technologie abhängt, die in dem spezifischen Webdienst verwendet werden. Im Allgemeinen ist ein Webdienst jedoch einfach eine Anwendung im Web, die Anforderungen von Clients annehmen und Antworten zurückgeben kann. Es ist dem Web ausgesetzt, also ein Webdienst , und es ist normalerweise rund um die Uhr verfügbar. Deshalb ist es ein Dienst . Natürlich löst es ein Problem (andernfalls, warum sollte jemand jemals einen Webdienst nutzen) für seine Kunden.
Dies ist die einfachste Erklärung, die Sie jemals finden werden.
Dieser Artikel führt eine Erzählung von Ehemann zu Ehefrau, in der der Ehemann seiner Frau REST in reinen Laienbegriffen erklärt. Muss lesen!
Wie ich meiner Frau die Ruhe erklärte (ursprünglicher Link)
Wie ich meiner Frau die Ruhe erklärte (19.07.2013 Arbeitslink)
SOAP - Simple Object Access Protocol ist ein Protokoll !
REST - REpresentational State Transfer ist ein architektonischer Stil !
SOAP
ist ein XML-Protokoll, das zum Übertragen von Nachrichten verwendet wird, normalerweise über HTTP
REST
und schließen SOAP
sich wohl nicht gegenseitig aus. Eine REST - Architektur verwenden könnte , HTTP
oder SOAP
oder ein anderes Kommunikationsprotokoll. REST
ist für das Web optimiert und somit HTTP
eine perfekte Wahl. HTTP
ist auch das einzige Protokoll, das in Roy Fieldings Artikel diskutiert wird.
Obwohl REST und SOAP eindeutig sehr unterschiedlich sind, beleuchtet die Frage die Tatsache, dass REST
und HTTP
oft zusammen verwendet werden. Dies liegt hauptsächlich an der Einfachheit von HTTP und seiner sehr natürlichen Zuordnung zu RESTful-Prinzipien.
Client-Server-Kommunikation
Client-Server-Architekturen weisen eine sehr unterschiedliche Trennung von Bedenken auf. Alle Anwendungen, die im RESTful-Stil erstellt wurden, müssen im Prinzip auch Client-Server sein.
Staatenlos
Für jede Clientanforderung an den Server muss der Status vollständig dargestellt werden. Der Server muss in der Lage sein, die Clientanforderung vollständig zu verstehen, ohne einen Serverkontext oder einen Serversitzungsstatus zu verwenden. Daraus folgt, dass der gesamte Status auf dem Client beibehalten werden muss. Wir werden später auf die staatenlose Darstellung näher eingehen.
Cacheable
Cache-Einschränkungen können verwendet werden, sodass Antwortdaten als zwischenspeicherbar oder nicht zwischenspeicherbar markiert werden können. Alle als zwischenspeicherbar gekennzeichneten Daten können als Antwort auf dieselbe nachfolgende Anforderung wiederverwendet werden.
Einheitliche Schnittstelle
Alle Komponenten müssen über eine einzige einheitliche Schnittstelle interagieren. Da die gesamte Komponenteninteraktion über diese Schnittstelle erfolgt, ist die Interaktion mit verschiedenen Diensten sehr einfach. Die Schnittstelle ist die gleiche! Dies bedeutet auch, dass Implementierungsänderungen isoliert vorgenommen werden können. Solche Änderungen wirken sich nicht auf die grundlegende Komponenteninteraktion aus, da die einheitliche Schnittstelle immer unverändert bleibt. Ein Nachteil ist, dass Sie mit der Schnittstelle stecken bleiben. Wenn durch Ändern der Benutzeroberfläche eine Optimierung für einen bestimmten Dienst bereitgestellt werden könnte, haben Sie kein Glück, da REST dies verbietet. Positiv zu vermerken ist jedoch, dass REST für das Web optimiert ist, weshalb REST über HTTP unglaublich beliebt ist!
Die obigen Konzepte stellen definierende Merkmale von REST dar und unterscheiden die REST-Architektur von anderen Architekturen wie Webdiensten. Es ist nützlich zu beachten, dass ein REST-Service ein Web-Service ist, ein Web-Service jedoch nicht unbedingt ein REST-Service.
Sehen Sie dieses Blog Post auf REST Design - Principals für weitere Details über REST und die oben genannten Kugeln.
Ich mag die Antwort von Brian R. Bondy. Ich wollte nur hinzufügen, dass Wikipedia eine klare Beschreibung von bietet REST . Der Artikel unterscheidet es von SOAP.
REST ist ein Austausch von Zustandsinformationen, der so einfach wie möglich erfolgt.
SOAP ist ein Nachrichtenprotokoll, das XML verwendet.
Einer der Hauptgründe, warum viele Menschen von SOAP zu REST gewechselt sind, ist, dass die WS- * -Standards (WS Splat genannt), die mit SOAP-basierten Webdiensten verbunden sind, EXTREM kompliziert sind. Eine Liste der Spezifikationen finden Sie in Wikipedia . Jede dieser Spezifikationen ist sehr kompliziert.
BEARBEITEN: Aus irgendeinem Grund werden die Links nicht richtig angezeigt. REST = http://en.wikipedia.org/wiki/REST
WS- * = http://en.wikipedia.org/wiki/WS- *
Sowohl SOAP-Webservices als auch REST-Webservices können das HTTP-Protokoll und andere Protokolle verwenden (nur um zu erwähnen, dass SOAP das zugrunde liegende Protokoll von REST sein kann). Ich werde nur über SOAP und REST im Zusammenhang mit dem HTTP-Protokoll sprechen, da dies die häufigste Verwendung ist.
SOAP ("einfaches" Objektzugriffsprotokoll) ist ein Protokoll (und ein W3C-Standard ). Es definiert, wie SOAP-Nachrichten erstellt, gesendet und verarbeitet werden.
SOAP-Nachrichten sind XML-Dokumente mit einer bestimmten Struktur: Sie enthalten einen Umschlag, der den Header und den Body-Abschnitt enthält. Der Body enthält die eigentlichen Daten, die wir senden möchten, in einem XML-Format. Es gibt zwei Codierungsstile , aber wir wählen normalerweise Literal , was bedeutet, dass unsere Anwendung oder ihr SOAP-Treiber die XML-Serialisierung und unserialisiert die Daten ausführt.
SOAP-Nachrichten werden als HTTP-Nachrichten mit dem Subtyp SOAP + XML MIME übertragen. Diese HTTP-Nachrichten können mehrteilig sein, sodass wir optional Dateien an SOAP-Nachrichten anhängen können.
Offensichtlich verwenden wir eine Client-Server-Architektur, sodass die SOAP-Clients Anforderungen an die SOAP-Webserices senden und die Dienste Antworten an die Clients zurücksenden. Die meisten Webservices verwenden eine WSDL-Datei, um den Service zu beschreiben. Die WSDL-Datei enthält das XML-Schema (im Folgenden XSD) der zu sendenden Daten und die WSDL-Bindung, die definiert, wie der Webservice an das HTTP-Protokoll gebunden ist. Es gibt zwei Bindungsstile: RPC und Dokument. Durch die Bindung im RPC-Stil enthält der SOAP-Body die Darstellung eines Operationsaufrufs mit den Parametern (HTTP-Anforderungen) oder den Rückgabewerten (HTTP-Antwort). Die Parameter und Rückgabewerte werden gegen die XSD validiert. Durch die Bindung des Dokumentstils enthält der SOAP-Body ein XML-Dokument, das anhand der XSD validiert wird. Ich denke, der Dokumentbindungsstil ist besser für ereignisbasierte Systeme geeignet, aber ich habe diesen Bindungsstil nie verwendet. Der RPC-Bindungsstil ist weit verbreitet, daher verwenden die meisten Benutzer SOAP für XML / RPC-Zwecke durch verteilte Anwendungen. Die Webservices finden sich normalerweise, indem sie einen UDDI- Server fragen . UDDI-Server sind Register, in denen der Speicherort der Webservices gespeichert ist.
Der meiner Meinung nach am weitesten verbreitete SOAP-Webservice verwendet also den RPC-Bindungsstil und den Literalcodierungsstil und hat die folgenden Eigenschaften:
REST (Representational State Transfer) ist ein Architekturstil, der in der Dissertation von Roy Fielding beschrieben wird. Es geht nicht um Protokolle wie SOAP. Es beginnt mit einem Null-Architekturstil ohne Einschränkungen und definiert die Einschränkungen der REST-Architektur nacheinander. Menschen verwenden den Begriff RESTful für Webservices, die alle REST-Einschränkungen erfüllen, aber laut Roy Fielding gibt es keine REST-Levels .Wenn ein Webservice nicht jede einzelne REST-Einschränkung erfüllt, handelt es sich nicht um einen REST-Webservice.
Einheitliche Schnittstelle
https://example.com/api/v1/users?offset=50&count=25
. URLs haben einige SpezifikationenBeispielsweise sind URLs mit denselben Pfaden, aber unterschiedlichen Abfragen nicht identisch, oder der Pfadteil sollte die hierarchischen Daten der URL enthalten, und der Abfrageteil sollte die nicht hierarchischen Daten enthalten. Dies sind die Grundlagen zum Erstellen von URLs per REST. Übrigens. Die URL-Struktur ist nur für die Service-Entwickler von Bedeutung, ein echter REST-Client kümmert sich nicht darum. Eine weitere häufig gestellte Frage ist die API-Versionierung, die einfach ist, da laut Fielding die einzige Konstante nach Ressourcen die Semantik ist. Wenn sich die Semantik ändert, können Sie eine neue Versionsnummer hinzufügen. Sie können die klassische 3-Nummern-Versionierung verwenden und den URLs nur die Hauptnummer hinzufügen (https://example.com/api/v1/
). Durch abwärtskompatible Änderungen geschieht also nichts. Durch nicht abwärtskompatible Änderungen erhalten Sie eine nicht abwärtskompatible Semantik mit einem neuen API-Stammverzeichnis https://example.com/api/v2/
. Die alten Clients werden also nicht kaputt gehen, da sie die https://example.com/api/v1/
mit der alten Semantik verwenden können.PATCH https://example.com/api/v1/users/1 {name: "Mrs Smith"}
Anforderung senden, bei der {name: "Mrs Smith"}
es sich um eine JSON-Darstellung des beabsichtigten Ressourcenstatus handelt, dh um den neuen Namen. Dies geschieht umgekehrt. Der Dienst sendet Darstellungen von Ressourcen an die Clients, um deren Status zu ändern. Wenn wir beispielsweise den neuen Namen lesen möchten, können wir eine GET https://example.com/api/v1/users/1?fields="name"
Abrufanforderung senden , die zu einem führt200 ok, {name: "Mrs Smith"}
Antwort. So können wir diese Darstellung verwenden, um den Kundenstatus zu ändern. Beispielsweise können wir ein "Willkommen auf unserer Seite, Frau Smith!" Anzeigen. Botschaft. Eine Ressource kann abhängig von der Ressourcen-ID (URL) oder dem accept
Header, den wir mit der Anforderung gesendet haben, viele Darstellungen haben . Zum Beispiel können wir ein Bild von Frau Smith (wahrscheinlich nicht nackt) senden, wenn dies image/jpeg
angefordert wird.Hypermedia als Motor des Anwendungsstatus (HATEOAS im Folgenden) - Hypermedia ist ein Medientyp, der Hyperlinks enthalten kann. Im Internet folgen wir Links - beschrieben durch ein Hypermedia-Format (normalerweise HTML) -, um ein Ziel zu erreichen, anstatt die URLs in die Adressleiste einzugeben. REST folgt demselben Konzept. Die vom Dienst gesendeten Darstellungen können Hyperlinks enthalten. Wir verwenden diese Hyperlinks, um Anfragen an den Dienst zu senden. Mit der Antwort erhalten wir Daten (und wahrscheinlich mehr Links), mit denen wir den neuen Client-Status erstellen können, und so weiter. Deshalb ist Hypermedia die Engine des Anwendungsstatus (Client-Status). Sie fragen sich wahrscheinlich, wie Kunden die Hyperlinks erkennen und ihnen folgen können? Für Menschen ist es ziemlich einfach, wir lesen den Titel des Links, füllen möglicherweise Eingabefelder und danach nur einen einzigen Klick.JSON-LD mit Hydra ) oder mit hypermedienspezifischen Lösungen (z. B. IANA-Link-Relationen und herstellerspezifische MIME-Typen von HAL + JSON ). Es gibt viele maschinenlesbare XML- und JSON-Hypermedia-Formate , nur eine kurze Liste davon:
Manchmal ist es schwer zu wählen ...
Ein REST-Webservice unterscheidet sich also stark von einem SOAP-Webservice (mit RPC-Bindungsstil und Literalcodierungsstil).
und so weiter...
Ein SOAP RPC-Webservice erfüllt nicht alle REST-Einschränkungen:
Nun, ich beginne mit der zweiten Frage: Was sind Webdienste? , aus offensichtlichen Gründen.
WebServices sind im Wesentlichen logische Elemente (die Sie vage als Methode bezeichnen können), die bestimmte Funktionen oder Daten verfügbar machen. Der Client, der implementiert (technisch gesehen, konsumierend ist das Wort), muss nur wissen, welche Parameter die Methode akzeptieren wird und welche Art von Daten sie zurückgeben wird (wenn überhaupt).
Der folgende Link sagt alles über REST & SOAP auf äußerst übersichtliche Weise.
Wenn Sie auch wissen möchten, wann Sie was auswählen sollen (REST oder SOAP), umso mehr Grund, es durchzugehen!
SOAP und REST beziehen sich beide auf Möglichkeiten, wie verschiedene Systeme miteinander kommunizieren können.
REST verwendet dazu Techniken, die der Kommunikation Ihres Browsers mit Webservern ähneln: Verwenden von GET zum Anfordern einer Webseite, POSTing in Formularfeldern usw.
SOAP bietet etwas Ähnliches, erledigt jedoch alles, indem XML-Blöcke hin und her gesendet werden. Eine weitere Schlüsselkomponente von SOAP ist WSDL, ein XML-Dokument, das beschreibt, welche Funktionen und Datenelemente unterstützt werden. WSDLs können verwendet werden, um programmgesteuert zu "entdecken", welche Funktionen unterstützt werden, und um Programmcode-Stubs zu generieren.
Ich denke, das ist so einfach, wie ich es erklären kann. Bitte, jeder kann mich korrigieren oder ergänzen.
SOAP ist ein Nachrichtenformat, das von getrennten Systemen (wie im Internet) zum Austausch von Informationen / Daten verwendet wird. Dies geschieht mit hin und her gehenden XML-Nachrichten.
Webdienste senden oder empfangen SOAP-Nachrichten. Sie arbeiten unterschiedlich, je nachdem in welcher Sprache sie geschrieben sind.
Das Problem mit SOAP ist, dass es im Widerspruch zu den Idealen hinter dem HTTP-Stack steht. Jede Middleware sollte in der Lage sein, mit HTTP-Anforderungen zu arbeiten, ohne den Inhalt der Anforderung oder Antwort zu verstehen. Ein normaler HTTP-Caching-Server funktioniert jedoch nicht mit SOAP-Anforderungen, ohne nur zu wissen, welche Teile des SOAP-Inhalts für das Caching von Bedeutung sind. SOAP verwendet HTTP lediglich als Wrapper für sein eigenes Kommunikationsprotokoll, z. B. als Proxy.
SOAP - "Simple Object Access Protocol"
SOAP ist ein kleines Problem beim Übertragen von Nachrichten oder kleinen Informationsmengen über das Internet. SOAP- Nachrichten sind in XML formatiert und werden normalerweise über HTTP gesendet .
REST - "Repräsentativer Staatstransfer"
REST ist ein rudimentärer Vorgang der Eventualität und des Empfangs von Informationen zwischen Lüfter und Server, und es sind nicht eindeutig viele Standards definiert. Sie können Informationen als JSON , XML oder sogar als Klartext senden und akzeptieren . Es ist leicht im Vergleich zu SOAP .
SOAP-basierte Web-Services Kurz gesagt, das SOAP-basierte Services-Modell betrachtet die Welt als ein Ökosystem gleichberechtigter Kollegen, die sich nicht gegenseitig kontrollieren können, sondern zusammenarbeiten müssen, indem sie veröffentlichte Verträge einhalten. Es ist ein gültiges Modell der chaotischen realen Welt, und die metadatenbasierten Verträge bilden die SOAP-Serviceschnittstelle.
Wir können SOAP weiterhin mit XML-basierten Remote Procedure Calls verknüpfen, aber die SOAP-basierte Web Services-Technologie hat sich zu einem flexiblen und leistungsstarken Messaging-Modell entwickelt.
SOAP geht davon aus, dass alle Systeme unabhängig sind und kein System die Interna einer anderen und internen Funktionalität kennt. Das Beste, was solche Systeme tun können, ist, sich gegenseitig Nachrichten zu senden und zu hoffen, dass auf sie reagiert wird. Systeme veröffentlichen Verträge, zu deren Einhaltung sie sich verpflichten, und andere Systeme verlassen sich auf diese Verträge, um Nachrichten mit ihnen auszutauschen.
Verträge zwischen Systemen werden zusammen als Metadaten bezeichnet und umfassen Dienstbeschreibungen, die unterstützten Nachrichtenaustauschmuster und die Richtlinien für Dienstqualitäten (ein Dienst muss möglicherweise verschlüsselt, zuverlässig bereitgestellt usw. werden). Eine Dienstbeschreibung ist wiederum detailliert Angabe der Daten (Nachrichtendokumente), die vom System gesendet und empfangen werden. Die Dokumente werden mit einer XML-Beschreibungssprache wie XML Schema Definition beschrieben. Solange alle Systeme ihre veröffentlichten Verträge einhalten, können sie zusammenarbeiten, und Änderungen an den Interna von Systemen wirken sich niemals auf andere aus. Jedes System ist dafür verantwortlich, seine eigenen internen Implementierungen in und aus seinen Verträgen zu übersetzen
REST - Repräsentativer Staatstransfer. Das physische Protokoll ist HTTP. Grundsätzlich bedeutet REST, dass alle unterschiedlichen Ressourcen im Web durch eine URL eindeutig identifizierbar sind. Alle Operationen, die mit diesen Ressourcen ausgeführt werden können, können durch eine begrenzte Anzahl von Verben (die „CRUD“ -Verben) beschrieben werden, die wiederum HTTP-Verben zugeordnet sind.
RESTs sind viel weniger „schwergewichtig“ als SOAP.