104

SOAP メッセージと WSDL がどのように適合するかについて混乱していますか? 次のような SOAP メッセージの調査を開始しました。

    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>

すべての SOAP メッセージは WSDL ですか? SOAP は独自の「SOAP メッセージ」または「WSDL」を受け入れるプロトコルですか? それらが異なる場合、いつ SOAP メッセージを使用し、いつ WSDL を使用する必要がありますか?

これに関するいくつかの明確化は素晴らしいでしょう。

4

10 に答える 10

125

リクエストごとに SOAP ドキュメントが送信されます。私たちが書店で、特定の本の現在の価格を知るためにクエリを実行するリモート サーバーを持っていたとします。本のタイトル、ページ数、ISBN 番号をサーバーに渡す必要があるとします。

価格を知りたいときはいつでも、一意の SOAP メッセージを送信します。次のようになります。

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

そして、次のような SOAP 応答メッセージが返されることを期待しています。

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

次に、WSDL は、サーバーがメッセージを受信したときにこのメッセージを処理/処理する方法を記述します。私たちの場合、タイトル、NumPages、および ISBN がどのタイプになるか、GetBookPrice メッセージからの応答を期待するかどうか、およびその応答がどのように見えるかを記述します。

タイプは次のようになります。

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

ただし、WSDL には、操作を行うためにどの関数がリンクされているか、サービスで使用できる操作、サービス/操作にアクセスできるネットワーク上の場所など、より多くの情報も含まれています。

W3 注釈付き WSDL の例も参照してください。

于 2013-11-12T09:39:23.687 に答える
77

SOAP メッセージは、データの送信に使用される XML ドキュメントです。WSDL は、Web サービスに接続して要求を行う方法を記述した XML ドキュメントです。

基本的に、SOAP メッセージは送信するデータであり、WSDL は何ができるか、どのように呼び出しを行うかを示します。

Google ですばやく検索すると、さらに読むための多くの情報源が得られます (以前の本のリンクは現在無効になっています。これに対処するために、新しい推奨事項をコメントに記載します)。

特定の質問に注意してください:

すべての SOAP メッセージは WSDL ですか? いいえ、それらはまったく同じものではありません。

SOAP は独自の「SOAP メッセージ」または「WSDL」を受け入れるプロトコルですか? いいえ - これは遠く離れているため、読む必要があります。

それらが異なる場合、いつ SOAP メッセージを使用し、いつ WSDL を使用する必要がありますか? 石鹸は、転送のためにメッセージ/データに適用する構造です。WSDL は、最初にサービスを呼び出す方法を決定するためにのみ使用されます。多くの場合、これは特定の Web サービスを呼び出すためのコードを最初に追加するときの 1 回限りのことです。

于 2013-01-26T20:09:38.910 に答える
27

WSDL (Web サービス定義言語) は、Web サービスを記述するメタデータ ファイルです。

操作名、パラメータなど。

石鹸メッセージは実際のペイロードです

于 2013-01-26T20:08:10.913 に答える
4

簡単に言えば、電卓のWebサービスがある場合。WSDL は、クライアントに実装または公開できる機能について説明します。例: 追加、削除、減算など。SOAP を使用する場合、doDelete()、doSubtract()、doAdd() などのアクションを実際に実行します。つまり、SOAP と WSDL はリンゴとオレンジです。それらを比較するべきではありません。どちらも独自の異なる機能を持っています。

于 2015-07-05T13:21:12.690 に答える
1

SOAP : ユーザーから Web サービスへ、またはその逆に情報を交換するために使用されるオープン スタンダードの XML ベースの通信プロトコルです。石鹸は、データが何らかの方法で編成された単なるドキュメントです。要求と応答ごとに、個別の SOAP が存在する場合があります。

WSDL: soap では、データは何らかの方法で編成され、この編成は WSDL で指定されます。使用する必要があるデータ型もここで指定されます。要求と応答の場合、単一の WSDL が存在します

于 2015-12-15T11:46:50.650 に答える
1

WSDL は、送信側と受信側の間のインターフェースとして機能します。
SOAP メッセージは、xml 形式のリクエストとレスポンスです。

Java RMI との比較

WSDL はインターフェース クラスであり、
SOAP メッセージはマーシャリングされた要求および応答メッセージです。

于 2019-02-05T20:38:03.730 に答える
-1

Number が wsdl であり、情報の交換が soap であるという点で、電話を考えることができます。

WSDL は通信サーバーへの接続方法を記述したものです。SOAP は通信メッセージを持っています。

于 2015-05-08T07:26:54.313 に答える