ホームページ  >  記事  >  バックエンド開発  >  XML スキーマ - SOAP の概要

XML スキーマ - SOAP の概要

黄舟
黄舟オリジナル
2017-03-14 16:14:211522ブラウズ

Simple ObjectAccess Protocol (ObjectAccess Protocol、SOAP) は、実際には Web サービス技術ですが、Web サービスにおけるクライアントとサーバー間のデータ交換形式は、柔軟な XML スキーマによって実現されています。 Web サービスの主な利点は、ネットワーク上で情報やデータを交換するためのクライアントとサーバー間の相互運用性のレベルです。 SOAP 標準では、
Web サービスの主な利点は、ネットワーク上で情報やデータを交換するためのクライアントとサーバー間の相互運用性のレベルです。 SOAP 標準は、XML を使用してアーキテクチャに中立な形式でデータを構造化し、
データ型と情報を定義します。 プログラミング言語
の場合、データ型と、リモートサーバーで呼び出す必要がある関数の名前を指定するだけです。 SOAP ライブラリは、ホスト言語で記述された情報と書式設定を、呼び出される関数や指定されたパラメータなどの XML 形式のメッセージに変換します。 W3Cの例を通してSOAPの構造を理解することができます。リモート SOAP 関数 Get<a href="http://www.php.cn/wiki/1048.html" target="_blank">End<br>orsingBoarder()</a> を呼び出すと、呼び出し元リスト 1 に示す XML メッセージを生成します。リスト 1. リモート SOAP 関数 GetEndorsingBoarder() を呼び出す Get<a href="http://www.php.cn/wiki/1048.html" target="_blank">End</a>orsingBoarder() 的时候,客户机上的调用程序生成清单 1 所示的 XML 消息。清单 1. 调用远程 SOAP 函数 GetEndorsingBoarder()

               

<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:GetEndorsingBoarder xmlns:m="http://namespaces.snowboard-info.com">

      <manufacturer>K2</manufacturer>

      <model>Fatbob</model>

    </m:GetEndorsingBoarder>

  </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

SOAP 客户机发送的整个消息都放在 SOAP 信封中。信封的内容就是消息的详细内容。
被调用的函数显然是 GetEndorsingBoarder,它包括两个参数:manufacturer 和 model。由此可见,它把本地的可能采用二进制编码的字符串转化成了 XML 字符串。由于 XML 是平台独立的,主机使用 SOAP 系统不需要复杂的二进制编码和解码就可以交换消息。
服务器通过另一个 XML 编码的 SOAP 信封返回响应,这一次是函数的返回值。SOAP 请求的响应格式与函数相同,只不过在信封内容的后面加上了 Response SOAP クライアントによって送信されたメッセージ全体は、SOAP エンベロープに入れられます。封筒の内容はメッセージの詳細です。
呼び出される関数は明らかに GetEndorsingBoarder であり、これには メーカーとモデルの 2 つのパラメータが含まれます。バイナリ エンコードされたローカルの 文字列 を XML 文字列に変換していることがわかります。 XML はプラットフォームに依存しないため、SOAP システムを使用するホストは、複雑なバイナリ エンコードやデコードを必要とせずにメッセージを交換できます。 サーバーは別の XML エンコードされた SOAP エンベロープを介して応答を返します。今回は 関数の戻り値です
。 SOAP リクエストの応答形式は関数と同じですが、リスト 2 に示すように、Response がエンベロープの内容に追加される点が異なります。リスト 2. 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:GetEndorsingBoarderResponse xmlns:m="http://namespaces.snowboard-info.com">

      <endorsingBoarder>Chris Englesmann</endorsingBoarder>

    </m:GetEndorsingBoarderResponse>

  </SOAP-ENV:Body>

</SOAP-ENV:Envelope>
E

は通常、それ自体で SOAP メッセージを記述する必要はなく、SOAP ライブラリが自動的に生成します。しかし、SOAP エンベロープの構造と単純さは、SOAP 標準を使用した情報共有が簡単であることを示しています。

SOAP は、メッセージの交換とリモート関数の呼び出しの作業を大幅に簡素化します。リモート プロシージャ コール (リモート プロシージャ C
all、RPC) 標準では、バイナリ data のシリアル化を処理する複雑なメソッドが必要であり、より構造化された情報を送信するには、詳細な宣言と双方向の情報変換が必要です。 SOAP を使用すると、XML シリアル化によりこの複雑さが大幅に軽減され、クロスプラットフォーム、クロス言語の統合、およびデータ交換がより簡単になります。                                                                        

以上がXML スキーマ - SOAP の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。