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 信封中。信封的内容就是消息的详细内容。 SOAP は、メッセージの交換とリモート関数の呼び出しの作業を大幅に簡素化します。リモート プロシージャ コール (リモート プロシージャ C 以上がXML スキーマ - SOAP の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
被调用的函数显然是 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>
all、RPC) 標準では、バイナリ data のシリアル化を処理する複雑なメソッドが必要であり、より構造化された情報を送信するには、詳細な宣言と双方向の情報変換が必要です。 SOAP を使用すると、XML シリアル化によりこの複雑さが大幅に軽減され、クロスプラットフォーム、クロス言語の統合、およびデータ交換がより簡単になります。