PHPの学び方:WSDLの詳しい解説(2)
3. サービスで使用する論理メッセージを定義する
サービスのオペレーションを呼び出す際に、サービスをメッセージとして定義します。交換。 wsdl ドキュメントでは、これらのメッセージは message 要素で定義されます。これらのメッセージは、パート要素と呼ばれる部品で構成されます。
サービス操作は、論理メッセージを指定することによって定義されます。オペレーションが呼び出されると、論理メッセージが交換されます。 (つまり、論理メッセージはサービスの動作を表します) これらの論理メッセージは、ネットワーク上で送信されるデータを XML ドキュメントとして定義します。これには、メソッド呼び出しの一部であるすべてのパラメーターが含まれます。 (言い換えると、論理メッセージ内のパラメータは、オペレーションの対応するメソッドのパラメータ セットです)
メッセージとパラメータのリスト: サービスによって公開される各オペレーションは、次のことを行うことができます。 1 つの入力メッセージと出力メッセージがあります。入力メッセージは、操作の呼び出し時にサービスが受け入れるすべてのメッセージを定義します。出力メッセージは、操作の完了時にサービスによって返されるすべてのメッセージを定義します。障害メッセージは、サービスがエラーを返したときのデータを定義します。
さらに、各操作には一定数の障害メッセージが含まれる場合があります。この障害メッセージは、サービスでエラーが発生したときに返されるデータを定義します。通常、これらのメッセージには、消費者にエラーの内容を知らせるのに十分な情報を提供するセクションがあります。
メッセージはネイティブ システムと統合するように設計されています。 既存のアプリケーションをサービスとして定義する場合は、メソッド (操作を実装するメソッド) で使用されるすべてのパラメーターが通信内容はメッセージで確認できます。戻り値がオペレーションの出力メッセージにも含まれていることを確認する必要があります。
メッセージを定義する 1 つの方法は、RPC スタイルです。 RPC スタイルを使用する場合、パラメーター リスト内の各パラメーターの部分を定義します。各メッセージ部分は、タイプの最初のタイプに基づいています。
入力メッセージは各入力パラメーターの 1 つの部分に対応し、出力メッセージは各出力パラメーターの 1 つの部分に対応します。さらに戻り値に対応する部分を追加します。パラメーターが入力と出力の両方である場合、そのパラメーターは入力メッセージと出力メッセージの両方としてリストされます。
RPC スタイルのメッセージ定義は、サービスが既存のシステムで有効になっている場合に役立ちます。 TIBCO または CORBA と同様のモード送信を使用します。これらのシステムは、プロセスと方法を中心に設計されています。このため、メッセージを使用してモデル化するのが最も簡単です。 RPC スタイルでは、サービスとアプリケーション間のマッピングも明確になります。
SOAP サービスのメッセージの設計: 在庫システムのモデル化には RPC スタイルが使用されますが、サービス協会はラッパー ドキュメント スタイルを強く好みます。ラッパー ドキュメント スタイルでは、各メッセージは 1 つの部分で構成されます。メッセージのこの部分は、types 要素で定義されたラッパー要素を参照します。ラッパー要素には次の特性があります:
- 一連の要素を含む複合型です
- 入力メッセージのラッパーの場合: その各要素は対応します入力パラメータに、その名前が関連付けられた操作名と同じになります。
- メッセージを出力するラッパーの場合、その各要素は入力パラメーターと出力パラメーターに対応します。その最初の要素はメソッドの戻り値を表します。その名前は、ラッパーに関連付ける操作の名前に Response を追加することによって追加されます。
メッセージの名前付け: 各メッセージには名前空間内で一意の名前が付けられます。次の名前付けルールを使用することをお勧めします。
- メッセージは 1 つの操作で使用する必要があります。 🎜>
オペレーション名の後に入力メッセージ名が追加されます。Request- オペレーション名の後に出力メッセージ名が追加されます。Response
- エラーの後にエラーメッセージ名が追加されます。理由、障害
-
メッセージ コンポーネント: メッセージ コンポーネントは、論理メッセージの最も一般的に使用される単位です。各パーツはpart要素を使用して定義されます。また、name 属性を通じて、type 属性または element 属性を使用してデータ型を指定します。
メッセージではパーツ名の再利用が可能です。たとえば、メソッドにパラメーター foo があり、適用または入出力で渡される場合、そのパラメーターは要求メッセージまたは応答メッセージの一部として存在できます。例:
例:サーバーは個人情報を保存し、従業員 ID に基づいて従業員のデータを返すメソッドを提供します。メソッドは次のとおりです。personalInfo lookup(long empId) は、次のように RPC スタイル WSDL にマッピングされます
<メッセージ名="personalLookupResponse>
パッケージ风格如下:
...
<要素名="personalLookupResponse">
<要素名="return" type="personalInfo" />