it-swarm.com.de

Unterschied zwischen a SOAP Nachricht und eine WSDL?

Ich bin verwirrt darüber, wie SOAP -Meldungen und WSDL zusammenpassen. Ich habe nach SOAP -Nachrichten gesucht:

    POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Sind alle SOAP - Nachrichten WSDLs? Ist SOAP ein Protokoll, das seine eigenen 'SOAP-Nachrichten' oder 'WSDLs' akzeptiert? Wenn sie unterschiedlich sind, wann sollte ich dann SOAP - Nachrichten verwenden und wann sollte ich WSDLs verwenden?

Eine gewisse Klarstellung wäre fantastisch.

101
James

Ein SOAP Dokument wird pro Anforderung gesendet. Nehmen wir an, wir waren ein Buchladen und hatten einen Remote-Server, den wir abfragten, um den aktuellen Preis eines bestimmten Buches zu erfahren. Nehmen wir an, wir müssten den Titel, die Seitenzahl und die ISBN-Nummer des Buches an den Server übergeben.

Wann immer wir den Preis wissen wollten, haben wir eine eindeutige SOAP - Nachricht gesendet. Es würde ungefähr so ​​aussehen; 

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <m:GetBookPrice xmlns:m="http://namespaces.my-example-book-info.com">
      <ISBN>978-0451524935</ISBN>
      <Title>1984</Title>
      <NumPages>328</NumPages>
    </m:GetBookPrice>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

Und wir erwarten, dass eine SOAP Antwortnachricht zurückgegeben wird.

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <m:GetBookPriceResponse xmlns:m="http://namespaces.my-example-book-info.com">
      <CurrentPrice>8.99</CurrentPrice>
      <Currency>USD</Currency>
    </m:GetBookPriceResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Die WSDL beschreibt dann, wie diese Nachricht verarbeitet/verarbeitet wird, wenn ein Server sie empfängt. In unserem Fall wird beschrieben, welche Typen der Titel, die NumPages & ISBN sein würden, ob wir von der GetBookPrice-Nachricht eine Antwort erwarten sollen und wie diese Antwort aussehen sollte. 

Die Typen würden so aussehen; 

<wsdl:types>

  <!-- all type declarations are in a chunk of xsd -->
  <xsd:schema targetNamespace="http://namespaces.my-example-book-info.com"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema">

    <xsd:element name="GetBookPrice">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="ISBN" type="string"/>
          <xsd:element name="Title" type="string"/>
          <xsd:element name="NumPages" type="integer"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

    <xsd:element name="GetBookPriceResponse">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="CurrentPrice" type="decimal" />
          <xsd:element name="Currency" type="string" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

  </xsd:schema>
</wsdl:types>

Die WSDL enthält jedoch weitere Informationen darüber, welche Funktionen miteinander verknüpft sind, um Vorgänge durchzuführen, welche Vorgänge im Dienst verfügbar sind und wie sich ein Netzwerk in einem Netzwerk befindet, auf das Sie auf den Dienst/Vorgänge zugreifen können.

Siehe auch W3-kommentierte WSDL-Beispiele

113
Jono

Eine SOAP - Nachricht ist ein XML-Dokument, das zur Übertragung Ihrer Daten verwendet wird. WSDL ist ein XML-Dokument, in dem beschrieben wird, wie Sie eine Verbindung herstellen und Anforderungen an Ihren Webdienst stellen. 

Grundsätzlich handelt es sich bei SOAP -Nachrichten um die Daten, die Sie übertragen. WSDL sagt Ihnen, was Sie tun können und wie Sie Anrufe tätigen.

Eine schnelle Suche in Google liefert viele Quellen für zusätzliches Lesen (der Link zum vorherigen Buch ist jetzt tot, um dies zu bekämpfen, werden alle neuen Empfehlungen in Kommentaren eingefügt).

Notieren Sie einfach Ihre spezifischen Fragen:

Sind alle SOAP - Nachrichten WSDLs? Nein, das ist überhaupt nicht das Gleiche.

Ist SOAP ein Protokoll, das seine eigenen 'SOAP-Nachrichten' oder 'WSDLs' akzeptiert? Nein - Lesen erforderlich, da dies weit entfernt ist.

Wenn sie unterschiedlich sind, wann sollte ich dann SOAP - Nachrichten verwenden und wann sollte ich WSDLs verwenden? Soap ist eine Struktur, die Sie auf Ihre Nachricht/Daten für die Übertragung anwenden. WSDLs werden nur verwendet, um zu bestimmen, wie der Dienst angerufen wird. Dies ist häufig eine einmalige Sache, wenn Sie zum ersten Mal Code hinzufügen, um einen bestimmten Webservice aufzurufen. 

75
Matthew

Eine WSDL (Web Service Definition Language) ist eine Metadatendatei, die den Webdienst beschreibt.

Dinge wie Name der Operation, Parameter usw.

Die Seifenmeldungen sind die eigentlichen Nutzlasten

27
scartag

Wir müssen definieren, was ein Webdienst ist, bevor wir sagen, was der Unterschied zwischen SOAP und WSDL ist, wobei die beiden (SOAP und WSDL) Komponenten eines Webdiensts sind

Die meisten Anwendungen werden für die Interaktion mit Benutzern entwickelt. Der Benutzer gibt über eine Schnittstelle Daten ein oder sucht nach Daten. Die Anwendung reagiert dann auf die Eingaben des Benutzers.

Ein Webdienst hat mehr oder weniger die gleiche Funktion, außer dass eine Webdienstanwendung nur von Maschine zu Maschine oder von Anwendung zu Anwendung kommuniziert. Es gibt oft keine direkte Benutzerinteraktion.

Ein Webdienst ist im Wesentlichen eine Sammlung offener Protokolle, die zum Datenaustausch zwischen Anwendungen verwendet werden. Durch die Verwendung offener Protokolle können Webdienste plattformunabhängig sein. Software, die in verschiedenen Programmiersprachen geschrieben ist und auf verschiedenen Plattformen ausgeführt wird, kann Web-Services verwenden, um Daten über Computernetzwerke wie das Internet auszutauschen. Mit anderen Worten, Windows-Anwendungen können mit PHP-, Java- und Perl-Anwendungen und vielen anderen Anwendungen kommunizieren, was unter normalen Umständen nicht möglich wäre.

Wie funktionieren Web Services?

Da verschiedene Anwendungen in verschiedenen Programmiersprachen geschrieben sind, können sie häufig nicht miteinander kommunizieren. Ein Webdienst ermöglicht diese Kommunikation mithilfe einer Kombination aus offenen Protokollen und Standards, hauptsächlich XML, SOAP und WSDL. Ein Webdienst verwendet XML zum Kennzeichnen von Daten, SOAP zum Übertragen einer Nachricht und schließlich WSDL, um die Verfügbarkeit von Diensten zu beschreiben. Schauen wir uns diese drei Hauptkomponenten einer Web-Service-Anwendung an.

Simple Object Access Protocol (SOAP)

Das Simple Object Access Protocol oder SOAP ist ein Protokoll zum Senden und Empfangen von Nachrichten zwischen Anwendungen ohne Interoperabilitätsprobleme (Interoperabilität bedeutet, dass die Plattform, auf der ein Webdienst ausgeführt wird, nicht relevant ist). Ein anderes Protokoll, das eine ähnliche Funktion hat, ist HTTP. Es wird verwendet, um auf Webseiten zuzugreifen oder im Internet zu surfen. HTTP stellt sicher, dass Sie sich keine Gedanken darüber machen müssen, welche Art von Webserver - ob Apache oder IIS oder ein anderer - Ihnen die von Ihnen angezeigten Seiten zur Verfügung stellt oder ob die von Ihnen angezeigten Seiten in ASP.NET oder erstellt wurden HTML.

Da SOAP sowohl zum Anfordern als auch zum Antworten verwendet wird, variiert der Inhalt je nach Zweck geringfügig.

Nachfolgend finden Sie ein Beispiel für eine SOAP - Anforderung und Antwortnachricht

SOAP Anfrage:

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?> 
<soap:Envelope 
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 
<soap:Body xmlns:m="http://www.bookshop.org/prices"> 
    <m:GetBookPrice> 
    <m:BookName>The Fleamarket</m:BookName> 
    </m:GetBookPrice> 
</soap:Body> 
</soap:Envelope>

SOAP Antwort:

POST /InStock HTTP/1.1 
Host: www.bookshop.org 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: nnn 
<?xml version="1.0"?> 
<soap:Envelope 
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 
<soap:Body xmlns:m="http://www.bookshop.org/prices"> 
    <m:GetBookPriceResponse> 
    <m: Price>10.95</m: Price> 
    </m:GetBookPriceResponse> 
</soap:Body> 
</soap:Envelope> 

Obwohl beide Nachrichten gleich aussehen, führen sie unterschiedliche Methoden aus. Wenn Sie sich beispielsweise die obigen Beispiele ansehen, können Sie sehen, dass die anfordernde Nachricht die GetBookPrice-Methode verwendet, um den Buchpreis zu erhalten. Die Antwort wird von der GetBookPriceResponse-Methode ausgeführt, die die Nachricht ist, die Sie als "Anforderer" sehen werden. Sie können auch sehen, dass die Nachrichten unter Verwendung von XML erstellt werden.

Web Services Description Language oder WSDL

WSDL ist ein Dokument, das einen Webdienst beschreibt und darüber informiert, wie auf die Methoden zugegriffen werden kann.

WSDL kümmert sich darum, wie Sie wissen, welche Methoden in einem Webdienst verfügbar sind, über den Sie im Internet stoßen.

Sehen Sie sich eine WSDL-Beispieldatei an:

<?xml version="1.0" encoding="UTF-8"?> 
<definitions  name ="DayOfWeek"  
  targetNamespace="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" 
  xmlns:tns="http://www.roguewave.com/soapworx/examples/DayOfWeek.wsdl" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns="http://schemas.xmlsoap.org/wsdl/">  
  <message name="DayOfWeekInput"> 
    <part name="date" type="xsd:date"/> 
  </message> 
  <message name="DayOfWeekResponse"> 
    <part name="dayOfWeek" type="xsd:string"/> 
  </message> 
  <portType name="DayOfWeekPortType"> 
    <operation name="GetDayOfWeek"> 
      <input message="tns:DayOfWeekInput"/> 
      <output message="tns:DayOfWeekResponse"/> 
    </operation> 
  </portType> 
  <binding name="DayOfWeekBinding" type="tns:DayOfWeekPortType"> 
    <soap:binding style="document"  
      transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="GetDayOfWeek"> 
      <soap:operation soapAction="getdayofweek"/> 
      <input> 
        <soap:body use="encoded"  
          namespace="http://www.roguewave.com/soapworx/examples"  
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
      </input> 
      <output> 
        <soap:body use="encoded"  
          namespace="http://www.roguewave.com/soapworx/examples"   
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 
      </output> 
    </operation> 
  </binding> 
  <service name="DayOfWeekService" > 
    <documentation> 
      Returns the day-of-week name for a given date 
    </documentation> 
    <port name="DayOfWeekPort" binding="tns:DayOfWeekBinding"> 
      <soap:address location="http://localhost:8090/dayofweek/DayOfWeek"/> 
    </port> 
  </service> 
</definitions> 

An eine WSDL-Datei sollten Sie sich vor allem folgende Punkte merken:

  • Eine Beschreibung eines Webdienstes

  • Die Methoden, die ein Webdienst verwendet, und die dafür verwendeten Parameter

  • Eine Möglichkeit, Webdienste zu finden

  • 20
    Jad Chahine

    Besser analog als beim Telefonat: Produkte per Post bei einem Versandhandel bestellen .. Das WSDL-Dokument ist wie die Anweisungen, die die Erstellung von Bestellformularen beschreiben, die der Dienstanbieter akzeptiert .. Die Nachricht SOAP ist wie ein Umschlag mit einem Standarddesign (Größe, Form, Konstruktion), mit dem jedes Postamt auf der ganzen Welt umgehen kann. Sie legen Ihr Bestellformular in einen solchen Umschlag. Das Netzwerk (z. B. das Internet) ist der Postdienst. Sie legen Ihren Umschlag in die Post. Die Mitarbeiter des Postdienstes schauen nicht in den Umschlag. Die Nutzlast-XML ist das Bestellformular, das Sie dem Umschlag beigelegt haben. Nachdem das Postamt den Umschlag ausgeliefert hat, öffnet der Web Service Provider den Umschlag und bearbeitet das Bestellformular. Wenn Sie das Formular korrekt erstellt und ausgefüllt haben, wird das bestellte Produkt an Sie zurückgesendet.

    6
    Israel Gale

    Einfach ausgedrückt, wenn Sie einen Webservice für Taschenrechner haben. WSDL informiert über die Funktionen, die Sie implementieren oder für den Client verfügbar machen können. Zum Beispiel: hinzufügen, löschen, subtrahieren usw. Wo mit using SOAP führen Sie tatsächlich Aktionen wie doDelete (), doSubtract (), doAdd () aus. Also SOAP und WSDL sind Äpfel und Orangen. Wir sollten sie nicht vergleichen. Sie haben beide ihre eigene Funktionalität. 

    4
    Unbreakable

    SOAP: Es handelt sich um ein offenes, auf XML basierendes Kommunikationsprotokoll, mit dem Informationen vom Benutzer an den Webdienst oder umgekehrt ausgetauscht werden. Die Seife ist nur das Dokument, in dem die Daten in gewisser Weise organisiert sind . Für jede Anfrage und Antwort kann eine separate Seife vorhanden sein.

    WSDL: In Soap sind die Daten in gewisser Weise organisiert und diese Organisation ist in WSDL angegeben. Der Datentyp, der verwendet werden muss, wird auch hier angegeben. Für Anfrage und Antwort ist eine einzelne WSDL vorhanden

    1
    arun kumar

    Die WSDL ist eine Art Vertrag zwischen dem API-Anbieter und dem Client, der den Webservice beschreibt: die öffentliche Funktion, ein optionales/erforderliches Feld ... 

    Die Soap-Nachricht ist eine Datenübertragung zwischen Client und Provider (Nutzlast).

    WSDL fungiert als Schnittstelle zwischen Sender und Empfänger.
    Die SOAP-Nachricht ist Anforderung und Antwort im XML-Format.

    Vergleich mit Java RMI

    WSDL ist die Schnittstellenklasse
    Die SOAP-Nachricht wird als Anforderung und Antwortnachricht gemarshallt.

    0
    fasil