Différence entre un message SOAP et un WSDL?

Je ne comprends pas comment les messages SOAP et WSDL vont ensemble? J'ai commencé à regarder dans les messages de SOAP tels que:

    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>

est-ce que tous les messages SOAP sont des messages WSDL? Est-ce que SOAP est un protocole qui accepte ses propres 'messages SOAP' ou 'WSDL'? S'ils sont différents, alors quand devrais-je utiliser les messages SOAP et quand devrais-je utiliser WSDL?

quelques précisions à ce sujet seraient géniales.

98
demandé sur Jad Chahine 2013-01-27 00:05:13

9 réponses

un document SOAP est envoyé par demande. Disons que nous étions une librairie, et que nous avions un serveur distant pour connaître le prix actuel d'un livre particulier. Disons que nous avions besoin de passer le titre du livre, le nombre de pages et le numéro ISBN au serveur.

chaque fois que nous voulions connaître le prix, nous envoyions un message unique.

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

et nous nous attendons à recevoir un message de réponse de SOAP comme;

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

la WSDL décrit ensuite comment traiter ce message lorsqu'un serveur le reçoit. Dans notre cas, il décrit les types de titre, NumPages & ISBN serait, si nous devrions attendre une réponse du message GetBookPrice et ce que cette réponse devrait ressembler.

Les types ressemblerait à ceci;

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

mais le WSDL contient aussi plus d'informations, sur les fonctions qui se lient ensemble pour faire des opérations, et quelles opérations sont disponibles dans le service, et où il se trouve sur un réseau, vous pouvez accéder au service.

Voir aussi W3 Annoté WSDL Exemples

110
répondu Jono 2013-11-12 09:39:23

un message SOAP est un document XML qui est utilisé pour transmettre vos données. WSDL est un document XML qui décrit comment se connecter et faire des demandes à votre service web.

essentiellement les messages SOAP sont les données que vous transmettez, WSDL vous dit ce que vous pouvez faire et comment faire les appels.

une recherche rapide dans Google donnera de nombreuses sources pour la lecture supplémentaire (lien de livre précédent maintenant mort, pour lutter contre cela mettra toute nouvelle Recommandation En les commentaires)

je note juste vos questions spécifiques:

tous les messages SOAP sont-ils des WSDL? Non, ils ne sont pas du tout la même chose.

est-ce que SOAP est un protocole qui accepte ses propres 'messages SOAP' ou 'WSDL'? Non - lecture-c'est encore loin.

S'ils sont différents, alors quand devrais-je utiliser les messages SOAP et quand devrais-je utiliser WSDL? Soap est la structure que vous appliquez à votre message/données pour le transfert. Les WSDL sont utilisés uniquement pour déterminer comment faire des appels au service en premier lieu. Souvent, cela est une chose lorsque vous ajoutez du code pour faire un appel à un webservice.

73
répondu Matthew 2016-07-11 17:39:07

UN document WSDL (Web Service Definition Language) est un méta-fichier de données qui décrit le service web.

des choses comme le nom de l'opération, les paramètres, etc.

les messages soap sont les charges utiles réelles

26
répondu scartag 2013-01-26 20:08:10

nous devons définir ce qu'est un service web avant de dire quelle est la différence entre le SOAP et la WSDL où les deux (SOAP et WSDL) sont des composants d'un service web

la plupart des applications sont développées pour interagir avec les utilisateurs, l'utilisateur entre ou cherche des données par l'intermédiaire d'une interface et l'application répond alors à l'entrée de l'utilisateur.

un service Web fait plus ou moins la même chose sauf qu'une application de service Web communique de machine à machine ou d'une application à l'autre. Il n'y a souvent pas d'interaction directe entre les utilisateurs.

un service Web est essentiellement un ensemble de protocoles ouverts qui est utilisé pour échanger des données entre les applications. L'utilisation de protocoles ouverts permet aux services Web d'être indépendants de la plate-forme. Les logiciels qui sont écrits dans différents langages de programmation et qui fonctionnent sur différentes plateformes peuvent utiliser des services Web pour échanger des données sur des réseaux informatiques tels que Internet. En d'autres termes, les applications Windows peuvent parler à des applications PHP, Java et Perl et bien d'autres, ce qui dans des circonstances normales ne serait pas possible.

Comment Fonctionnent Les Services Web?

parce que différentes applications sont écrites dans des langages de programmation différents, ils ne peuvent souvent pas communiquer entre eux. Un service Web permet cette communication en utilisant une combinaison de protocoles ouverts et de normes, principalement XML, SOAP et WSDL. Un service Web utilise XML pour marquer des données, SOAP pour transférer un message et enfin WSDL pour décrire la disponibilité des services. Jetons un coup d'oeil à ces trois composantes principales d'une application de service Web.

Simple Object Access Protocol (SOAP)

le protocole Simple D'accès aux objets (SOAP) est un protocole permettant d'envoyer et de recevoir des messages entre applications sans se heurter à des problèmes d'interopérabilité (interopérabilité). c'est-à-dire que la plate-forme sur laquelle un service Web est exécuté devient sans importance). Un autre protocole qui a une fonction similaire est HTTP. Il est utilisé pour accéder aux pages Web ou pour surfer sur le Net. HTTP garantit que vous n'avez pas à vous soucier de quel type de serveur Web -- que ce soit Apache ou IIS ou tout autre -- vous sert les pages que vous consultez ou si les pages que vous consultez ont été créées dans ASP.NET ou HTML.

parce que SOAP est utilisé à la fois pour la demande et la réponse, son contenu varie légèrement en fonction de son but.

ci-dessous un exemple de message de demande et de réponse SOAP

SOAP Request:

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>

SAVON de Réponse:

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> 

bien que les deux messages aient la même apparence, ils utilisent des méthodes différentes. Par exemple en regardant les exemples ci-dessus vous pouvez voir que le requérant message utilise le GetBookPrice méthode pour obtenir le prix du livre. La réponse est effectuée par la méthode GetBookPriceResponse , qui sera le message que vous, en tant que" demandeur", verrez. Vous pouvez également voir que les messages sont composés en utilisant XML.

Web Services Description Language or WSDL

WSDL est un document qui décrit un service Web et vous indique également comment accéder à ses méthodes et les utiliser.

WSDL prend soin de comment savez-vous quelles méthodes sont disponible dans un service Web que vous trébuchez sur L'Internet.

regardez un exemple de fichier WSDL:

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

les principales choses à retenir à propos d'un fichier WSDL sont qu'il vous fournit:

  • description d'un service Web

  • les méthodes qu'un service Web utilise et les paramètres qu'il prend

  • une façon de localiser les services Web
  • 18
    répondu Jad Chahine 2016-10-31 14:12:32

    meilleure analogie que l'appel téléphonique: commander des produits par la poste à partir d'un service de vente par correspondance. Le document WSDL est comme les instructions qui expliquent comment créer des formulaires de commande que le fournisseur de services doit accepter. Un message SOAP est comme une enveloppe avec un design standard (taille, forme, construction) que chaque bureau de poste à travers le monde sait manier. Vous mettez votre formulaire de commande dans une enveloppe. Le réseau (par exemple internet) est le service postal. Tu as mis ton enveloppe dans le courrier. Les employés du service postal ne regardez pas à l'intérieur de l'enveloppe. Le format XML de la charge utile est le formulaire de commande que vous avez inclus dans l'enveloppe. Après le bureau de poste remet l'enveloppe, le fournisseur de services web ouvre l'enveloppe et traite le formulaire de commande. Si vous avez créé et rempli le formulaire correctement, ils vous renverront le produit que vous avez commandé.

    6
    répondu Israel Gale 2017-04-24 20:58:42

    en termes simples si vous avez un service Web de calculatrice. WSDL indique les fonctions que vous pouvez implémenter ou exposer au client. Par exemple: Ajouter, Supprimer, soustraire, etc. Où comme en utilisant SOAP vous exécutez réellement des actions comme doDelete(), doSubtract (), doAdd (). SOAP et WSDL sont des pommes et des oranges. Nous ne devrions pas les comparer. Ils ont tous deux leur propre fonctionnalité.

    3
    répondu Unbreakable 2015-07-05 13:28:58

    savon : Il s'agit d'un protocole de Communication XML standard ouvert qui est utilisé pour échanger des informations de l'utilisateur vers le service web ou vice versa. Le savon est tout simplement le document dans lequel les données sont organisées en quelque Manière. Pour chaque requête et réponse, un savon séparé peut être présent.

    WSDL: Dans soap les données sont organisées d'une manière ou d'une autre et cette organisation est spécifiée dans WSDL, le type de données qui doit être utilisé est également spécifié ici. Pour demander et la réponse unique WSDL sera présent

    1
    répondu arun kumar 2015-12-15 11:46:50

    le WSDL est une sorte de contrat entre le fournisseur de L'API et le client .il s'agit de décrire le service web : la fonction publique , champ facultatif/requis...

    Mais Le message soap est un transfert de données entre le client et le fournisseur (payload)

    0
    répondu Abderrahim Soubai Elidrissi 2018-09-07 09:09:43

    nous pouvons considérer un appel téléphonique dans ce numéro est wsdl et l'échange d'informations est soap.

    WSDL est la description de la façon de se connecter avec le serveur de communication.SOAP a des messages de communication.

    -1
    répondu khushbu 2015-05-08 07:26:54