データ・バインディング手法をサポートするように設計されています。これらの異なるデータ・バインディングを使用する方法を紹介するとともに、アプリケーションに応じてデータ・バインディングを使い分ける理由を説明します。サービスに関するトレーニングやコンサルティングの専門家でもあります。技術に注力しています。全米各地で行われる会議で頻繁に講演を行っています。フレームワークの中心開発者でもあります。関心を払っていません。サービス・アプリケーションが必要とするのは、そのアプリケーション固有のビジネス・データを交換することです。サービス・インターフェースをサポートするに過ぎません。プラットフォームに依存することなく各種のツールで処理可能な表現になるからです。独自の内部データ構造との間での変換をしなければなりません。アプリケーション・データ構造間での変換を処理する手法を表す言葉です。アプリケーション用にカスタム・データ・バインディング・コードを作成することも可能ですが、大抵の開発者にとっては、広範なアプリケーションに適用できる一般的な方法で変換を処理するデータ・バインディング・フレームワークを操作するほうが便利です。サービスの作業を処理することが可能です。よるデータ・バインディングの柔軟性を使用する方法を説明します。つのなかから、自分に適したデータ・バインディングを見極めてください。文書モデルについて説明しました。他の文書モデルと異なる点は、モデルを一度にすべて構築するのではなく、モデルのオンデマンド構築をサポートするところです。文書モデルの仮想の部分でしかありません。(WS-Securityを使用する際の暗号化や署名など)、完全な文書モデルに拡張されることはありません。サービス記述からリンケージ・コードを生成できるようにサポートしています。間の変換の詳細を処理し、アプリケーションがデータ構造に直接アクセスできるようにします。制限付きでサポートしています。サービス・クライアントとサービス・プロバイダーの両方に対してリンケージ・コードを生成します。クラスを継承したスタブ・クラスの形となります。インターフェースを実装するメッセージ・レシーバー・クラスを伴います。ツールの詳しい使用方法を探り、最後に既存のコードから作業を始める方法を簡単に紹介してこのセクションを締めくくりたいと思います。クライアント・リンケージ・コードクライアント側のスタブ・コードは、アプリケーション・コードがサービス操作を起動するためのアクセス・メソッドを定義します。始めに、スタブ・クラスのインスタンスを作成します。定義されたサービス・エンドポイントと同じである場合)、または異なるエンドポイント参照をストリングとして使用するコンストラクターです。クラスが定義するメソッドを使用して各種の機能を構成することもできます。この作業が終わったら、実際に操作を起動するサービス固有のアクセス・メソッドを呼び出せるようになります。変更してスタブを作成する例です。サービスのメッセージ交換の監視によく使われるツールなので、このツールをクライアント・コードのオプションとして持っていると役立つことがよくあります。秒の標準タイムアウトはすぐに超過してしまう可能性があるので、デフォルト値を変更するとプロバイダー・コードをデバッグするときにも役立ちます)、サービス・メソッドを呼び出します。コードが示しているのは同期サービス・メソッド呼び出しで、この場合、クライアントのスレッドはサービス呼び出し内部でブロックし、呼び出しが完了して結果が利用できるようになるまでリターンしません。非同期呼び出しも、コールバック・インターフェースを使ってサポートします。(ごく普通としたのは、アプリケーション・コードが何か有用なことを行うのではなく、ただ単に操作の完了を待機するだけからです)。いった、要求と応答を分離するトランスポートで動作している場合です。このようなトランスポートでは要求を送信してから応答を受信するまでかなり時間がかかる可能性があるからです。アクセスするサービスにも、大幅な処理遅延が関わってくることがあります。使用して応答を分離させることができますが、これらの応答を処理するのに非同期呼び出しが役立つことになります。他、クライアント・コードに対してはインターフェースも生成されます。定義された操作と一致するサービス・メソッドです。スタブはこのインターフェースを実装し、内部で使用する特殊化されたいくつかのメソッドを追加します。ようにスタブを直接操作することもできますが、代わりに、このインターフェースを使用してサービス定義に含まれるメソッドのみを表示させることもできます。応答データ・オブジェクトに変換します。操作する場合、生成されたクライアント・スタブ・クラスを使用する必要は一切ありません。クラスを使用できるからです。作成しなければなりません。操作しているとしてもスタブ・クラスを生成するというオプションが用意されています。要素を渡すという点が異なります。サービス構成の一部として定義されたメッセージ・レシーバーです。インターフェースを実装しなければなりません。(該当する場合は、応答の生成も含まれます)。サービスが使用するメッセージ交換のタイプ)。ベースのインターフェースとデータ・オブジェクトを使用するサービス・コードとの間で適応する生成済みのメッセージ・レシーバー・クラスを使用することになります。このサービス・コードはスケルトン実装という形で生成され、例外をスローするだけのサービス・メソッドを持ちます。サーバー側の連携を完成させるには、このスケルトンに独自のコードを追加する必要があります。(読みやすいようにフォーマットを変えています)。メソッドは実際の実装クラスに委譲することによって実装されています。}}このクラスに直接コードを追加する上でのマイナス面は、サーバー・インターフェースが変更された場合にクラスを生成しなおして変更をマージしなければならないという点です。このような事態を避けるためには、生成済みのスケルトンを継承する別個の実装クラスを使用して、生成されたコードを変更せずにスケルトンをオーバーライドできるようにするという方法が考えられます。サービス記述の変更です。変更するのは簡単で、単にスケルトン・クラスの名前を実装クラスの名前に置き換えればいいだけのことです。この記事でこれから記載するデータ・バインディングのサンプルではすべて、この別個の実装クラスの手法を使用します。ファイルを参照してください。フレームワークを使用する開発者を支援するためにさまざまなツールが用意されています。コードから生成できるようにするためのツールです。サービス記述からコードを生成する際に使用します。プラグインを介して使用することもできます。アプリケーションに後れを取りがちだということでもあります。(この記事で説明する方法)。提供する豊富なコマンド・ラインのオプションは、次第にその数を増やしています。資料に記載されているので、ここではとりわけ重要なオプションだけを抜粋することにします。(デフォルトでは作業ディレクトリーに設定)。データ・バインディングなしを指定します。ラップされたメッセージをアンラップします。同期クライアント・インターフェースのみを生成します。サーバー側のコードを生成します。サーバー側のデプロイメント・ファイルを生成します。オプションもあります。これらのオプションのいくつかは、この後に記載するデータ・バインディングのサンプルで使用しています。ツールも用意しています。このツールには多くの制約があります。構成する段階で柔軟性がないことです。サービスの開発方法の変更により、この分野に関心が持たれていないことが原因となっています。サービス開発を好ましいものと考えていません。メッセージ構造を特定の実装に結びつけやすくなると考えているからです。明らかにこの考えには実効性がありますが、反対の意見もあります。スキーマ定義を何もないところから作成する上での難しさです。つの標準を十分に理解していなければなりません。スキーマが、コードから生成したものよりも乱雑になってしまいがちです。実用本位であることも問題として挙げられています。サービスとして公開しなければなりませんが、彼らは大幅な変更を加えずに既存のコードを使用できるようにしたいと思うものです。生成するべきかどうかは、しばらくは問題として残りそうです。(詳細は「参考文献」セクションを参照)。バインディング定義のすべてを一式として生成します。以前のコレクションだとしても型付きデータと一緒に使用できます。スキーマはデータ・バインディングにとらわれません。データ・バインディング・フレームワークだけでなく、他のプラットフォームでも使用できます。バインディングを破棄して残りをとっておけばいいだけの話です。サービスとして公開することです。カスタマイズはできませんが、構成情報を直接ソース・コードに組み込むことができるため、開発者によっては魅力的に映るはずです。試験的にサポートしており、今後のリリースで改善されることになるでしょう。生成する話題についてもう一度取り上げる予定です)。この数はさらに増える予定です。使用した場合の各フレームワークの利点と欠点を説明します。ライブラリー・サービスを目的としたもので、本のコレクションをサブジェクトのタイプ別に整理します。このライブラリーには、以下をはじめとする操作が定義されています。操作が関係する部分のみです。...&lt;/wsdl:definitions&gt;実際のサービス実装コードは、ライブラリー・インスタンスにハードコーディングされた本のリストを入力するという単純なものです。クライアント・コードは、以下のクエリーを記載順に実行します。