1. ホーム
  2. Web制作
  3. XML/XSLT

XML義姉妹」テキスタイル:SOAP

2022-01-27 22:37:43

SOAP(Simple Object Access Protocol)は、実はWebサービスの技術なのですが、Webサービスにおけるクライアントとサーバー間のデータ交換のフォーマットは、柔軟なXMLスキーマによって実装されています。
Webサービスの主な利点は、ネットワーク上で情報やデータを交換するクライアントとサーバー間の相互運用性の階層です。SOAP規格はXMLを使用して、アーキテクチャに依存しない形式でデータを構成し、データ型と情報を定義しています。
SOAPライブラリは、ホスト言語で書かれた情報とフォーマットを、呼び出すべき関数と提供すべきパラメータを含むXML形式のメッセージに変換します。
SOAPの構造は、W3Cの例で理解することができます。リモートSOAP関数を呼び出す GetEndorsingBoarder() リモートSOAP関数が呼び出されると、クライアント上の呼び出しプログラムは、リスト1に示すようなXMLメッセージを生成します。 リスト1. リモート SOAP 関数を呼び出す
GetEndorsingBoarder()






<SOAP-ENV:エンベロープ 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 見ての通り、これはローカルの、おそらくバイナリ・エンコードされた文字列を受け取り、XML文字列に変換している。XMLはプラットフォームに依存しないので、SOAPシステムを使用するホストは、メッセージを交換するために複雑なバイナリエンコーディングとデコーディングを必要としません。
サーバーは、別のXMLエンコードされたSOAPエンベロープを介して、今度は関数の戻り値で応答を返します。SOAPリクエストの応答形式は関数と同じですが、エンベロープの内容の後に Response リスト2に示すように
リスト2. SOAP リクエストに対するレスポンス
<SOAP-ENV:エンベロープ 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">.Body:GetEndorsingBoarderResponse。 <endorsingBoarder>Chris Englesmann</endorsingBoarder> </m:GetEndorsingBoarderResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
通常、SOAPメッセージは自分で書く必要はなく、SOAPライブラリが自動的に生成してくれます。しかし、SOAPエンベロープの構造とシンプルさは、SOAP規格を使った情報共有が簡単であることを示唆しています。
SOAPは、メッセージの交換やリモート関数の呼び出しといった作業を大幅に簡略化します。Remote Procedure Call (RPC) 標準では、バイナリデータのシリアライズを処理するために複雑なメソッドを必要とし、より構造化されたメッセージを送信するには、詳細な宣言と双方向のメッセージ変換が必要です。
SOAPを使用すると、XMLシリアライゼーションはこの複雑さを大幅に軽減し、クロスプラットフォーム、クロスランゲージの統合とデータ交換をよりシンプルにすることができます。