JSON, REST, SOAP, WSDL und SOA: Wie verbinden sich alle miteinander?

155

Ich mache gerade einige Prüfungen und kämpfe mich durch einige Konzepte. Diese wurden alle in meinen Notizen wirklich "erwähnt", aber ich habe nicht wirklich verstanden, wie sie alle miteinander verbunden sind. Soweit ich weiß:

SOA - eine Lösung, mit der Service-Konsumenten / -Anbieter kommunizieren können. (Soweit ich weiß, ist dies der Überbegriff für alles andere)

WSDL - Eine Sprache, die den Provider-Service beschreibt.

SOAP - Ein XML-Protokoll-Wrapper, der von den Diensten zum Senden von Nachrichten verwendet wird. Funktioniert in Verbindung mit WSDL, um Parameter bereitzustellen?

REST - Ein Entwurfsmuster, das in seiner Funktion SOAP ähnelt, aber XML vermeidet? (wirklich nicht sicher über diesen)

JSON - Eine Alternative zu XML, das Javascript verwendet? (auch nicht sicher)

Wenn man sich im Internet umschaut, scheint es keine klare Definition dafür zu geben, was all dies ist und wie sie miteinander verbunden sind.

Jay
quelle

Antworten:

252

Stellen Sie sich vor, Sie entwickeln eine Webanwendung und entschließen sich, die Funktionalität von der Präsentation der Anwendung zu entkoppeln, da dies mehr Freiheit bietet.

Sie erstellen eine API und lassen andere auch ihre eigenen Frontends darüber implementieren. Was Sie gerade hier getan haben, ist die Implementierung einer SOA- Methodik, dh die Verwendung von Webdiensten.

Webdienste machen funktionale Bausteine ​​über Standard-Internetprotokolle unabhängig von Plattformen und Programmiersprachen zugänglich.

Sie entwerfen also einen Austauschmechanismus zwischen dem Back-End (Web-Service), der die Verarbeitung und Generierung von etwas Nützlichem übernimmt, und dem Front-End (das die Daten verbraucht), das alles sein kann. (Eine Web-, Mobil- oder Desktopanwendung oder ein anderer Webdienst). Die einzige Einschränkung besteht darin, dass das Front-End und das Back-End dieselbe "Sprache" "sprechen" müssen.


Hier kommen SOAP und REST ins Spiel. Dies sind Standardmethoden für die Kommunikation mit dem Webdienst.

SEIFE:

SOAP verwendet intern XML, um Daten hin und her zu senden. SOAP-Nachrichten haben eine starre Struktur und das Antwort-XML muss dann analysiert werden. WSDL ist eine Spezifikation, welche Anforderungen gestellt werden können, mit welchen Parametern und was sie zurückgeben. Es ist eine vollständige Spezifikation Ihrer API.

SICH AUSRUHEN:

REST ist ein Designkonzept.

Das World Wide Web ist die größte Implementierung eines Systems, das dem REST-Architekturstil entspricht.

Es ist nicht so starr wie SOAP. RESTful-Webdienste verwenden Standard-URIs und -Methoden, um den Webservice aufzurufen. Wenn Sie einen URI anfordern, wird die Darstellung eines Objekts zurückgegeben, für das Sie Operationen ausführen können (z. B. GET, PUT, POST, DELETE). Sie sind nicht darauf beschränkt, XML auszuwählen, um Daten darzustellen, Sie können wirklich alles auswählen (JSON eingeschlossen).

Die REST-API von Flickr geht noch weiter und ermöglicht die Rückgabe von Bildern.


JSON und XML sind funktional gleichwertig und werden häufig verwendet. Es gibt auch RPC-basierte Frameworks wie GRPC basierend auf Protobufs und Apache Thrift, die für die Kommunikation zwischen API-Herstellern und Verbrauchern verwendet werden können. Das am häufigsten von Web-APIs verwendete Format ist JSON, da es in jeder Sprache einfach zu verwenden und zu analysieren ist.

Anirudh Ramanathan
quelle
36
Hervorragende Antwort bis zum Cop-out von JSON vs XML. Eine ausgewogenere Version wäre: XML und JSON sind Möglichkeiten zur Serialisierung von Daten. XML ist flexibler und hat viele Standards, aber einige halten es für zu komplex und ausführlich. JSON ist ein einfacheres Format, das einige grundlegende Strukturen auf übersichtliche Weise definiert und für informelle Datenstrukturen einfach zu verwenden ist. Einige Leute arbeiten darüber hinaus an Standards, um diejenigen zu replizieren, die über XML existieren.
IMSoP
30

WSDL : Steht für Web Service Description Language

Wenn Sie in SOAP (einfaches Objektzugriffsprotokoll) den Webdienst verwenden und Ihrem Projekt einen Webdienst hinzufügen, kennen Ihre Clientanwendungen die Webdienstfunktionen nicht. Heutzutage ist es irgendwie altmodisch und für jede Art von unterschiedlichem Client müssen unterschiedliche WSDLDateien implementiert werden. Beispielsweise können Sie nicht dieselbe Datei für .Netund phpClient verwenden. Die WSDLDatei enthält einige Beschreibungen der Webdienstfunktionen. Der Typ dieser Datei ist XML. SOAPist eine Alternative für REST.

REST : Steht für Representational State Transfer

Es ist eine andere Art von API-Service, der für Clients sehr einfach zu verwenden ist. Sie müssen keine spezielle Dateierweiterung wie WSDLDateien haben. Die CRUD-Operation kann auf verschiedene HTTP VerbsArten implementiert werden (GET zum Lesen, POST zum Erstellen, PUT oder PATCH zum Aktualisieren und LÖSCHEN zum Löschen des gewünschten Dokuments). Sie basieren auf dem HTTPProtokoll und meistens erfolgt die Antwort in JSONoder im XMLFormat. Andererseits muss die Client-Anwendung die zugehörigen HTTP Verbüber genaue Parameternamen und -typen genau aufrufen . Da es keine spezielle Datei für die Definition gibt WSDL, handelt es sich um einen manuellen Job, der den Endpunkt verwendet. Aber es ist keine große Sache, denn jetzt haben wir viele Plugins für verschiedene IDEs, um die clientseitige Implementierung zu generieren.

SOA : Steht für serviceorientierte Architektur

Beinhaltet die gesamte Programmierung mit Webdienstkonzepten und -architektur. Stellen Sie sich vor, Sie möchten eine umfangreiche Anwendung implementieren. Eine Praxis kann darin bestehen, verschiedene Dienste zu haben, die als Mikrodienste bezeichnet werden, und der gesamte Anwendungsmechanismus würde den erforderlichen Webdienst zum richtigen Zeitpunkt aufrufen. Sowohl RESTals auch SOAPWebdienste sind irgendwie SOA.

JSON : Steht fürjavascript Object Notation

Wenn Sie ein Objekt für Javascript serialisieren, ist der Typ des Objektformats JSON. Stellen Sie sich vor, Sie haben die menschliche Klasse:

class Human{
 string Name;
 string Family;
 int Age;
}

und Sie haben einige Instanzen aus dieser Klasse:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

Wenn Sie das h1-Objekt in JSON serialisieren, lautet das Ergebnis:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptkann dieses Format nach eval()Funktion auswerten und aus dieser JSONZeichenfolge ein assoziatives Array erstellen. Dieses Konzept unterscheidet sich von anderen Konzepten, die ich zuvor beschrieben habe.

Saman Gholami
quelle
Diese Antwort enthält einige Fehler (z. B. HTML <> HTTP)
Yassin Hajaj
1
@ YassinHajaj behoben
Saman Gholami