デバイス上の Web サービスについて
Web Service on Devices API (WSDAPI) は、Windows Vista および Windows Server 2008 用のデバイス プロファイル for Web サービス (DPWS) の実装です。 DPWS は、クライアントがデバイスを簡単に検出できるように、Web サービスの仕様を制限します。 デバイスが検出されると、クライアントはそのデバイスでホストされているサービスの説明を取得し、それらのサービスを使用できます。
デバイスとサービス
デバイス はコンポーネントであり、通常はハードウェアであり、ネットワークに接続されます。 たとえば、プリンター、Web カメラ、ビデオ システムなどがあります。
デバイスには、0 個以上の サービスが含まれる場合があります。 たとえば、ビデオ デバイスには、電源のオンとオフ、再生制御、メディアの取り出し、ビデオ ストリーミングをサポートするサービスが含まれる場合があります。 再生コントロールは、再生、一時停止、巻き戻し、早送りなどのアクションをサポートする場合があります。
デバイスの検出と操作
WSDAPI は、クライアントがネットワーク経由でリモート デバイスとその関連サービスを検出してアクセスできるようにすることで、ローカル プラグ アンド プレイ モデルを拡張します。 検出、一方向と双方向の制御メッセージング、イベント処理がサポートされます。
DPWS デバイスは、一意のアドレスと標準化された一連の XML メッセージを使用して、プレゼンスを読み上げ、サービス (存在する場合) を公開します。 DPWS クライアントは、検出プロセスを使用してデバイスを検索し、そのサービスを列挙し、それらのサービスに接続して特定のアクションを実行できます。
WSDAPI クライアントは、まず、サービスの種類 (プリンター サービスの種類やスキャナー サービスの種類など) を含む、サービスの完全な説明をデバイスに照会します。 次に、クライアントは、サービスの種類で定義されたコマンドを呼び出すことによってデバイスを制御します (たとえば、プリンター サービスの種類を持つデバイスで CreatePrintJob を呼び出します)。 必要に応じて、クライアントは、コマンドの実行中に発生するイベントをサブスクライブすることで、各サービスの状態の変更を監視することもできます。
デバイス メッセージング パターンの詳細については、「 検出とメタデータの Exchange メッセージ パターン」を参照してください。
論理アドレス指定と物理アドレス指定
論理アドレス指定は、物理アドレスに依存しないデバイスを一意に識別するために使用されます。 WS-Discoveryは、論理アドレスを物理アドレスに解決するメカニズムを提供し、クライアントからデバイスへのメッセージングを実行できるようにします。 たとえば、持ち運ぶネットワーク接続ストレージ (NAS) です。 ノート PC と NAS がある場合、サブネット間を移動するときに NAS が取得する物理アドレス (IP アドレス) に関係なく、ノート PC は同じデバイスであることを認識できる必要があります。 これを実現するには、取得した IP アドレスに依存しない ID をデバイスに持っている必要があります。DNS のような従来のメカニズムは通常のローミング シナリオでは使用できないため、WS-AddressingとWS-Discoveryはアドホックの代替手段として論理アドレス指定と解決を提供します。
デバイスが製造されると、UUID URI として表されるグローバル一意識別子が与えられます。 この識別子は、デバイスに対して変更されることはありません。 デバイスの電源がオンになると、WS-Discovery Hello メッセージを介してその論理アドレスが常に読み上げられます。また、 解決 または プローブ メッセージを介して物理アドレス (通常は HTTP) に変換する要求WS-Discovery受け入れます。 有効な物理アドレス (IP アドレス) が取得されると、そのアドレスに対するすべてのメッセージングが行われ、WS-Discoveryは、アドレスが変更された場合、デバイスの状態が変更され、クライアントに通知する必要がある場合、またはデバイスがオフラインになった場合にのみ使用されます。
アプリケーションの構築
WSDAPI には、クライアント アプリケーションとサービス アプリケーションで使用する汎用 DPWS SOAP スタックが用意されています。 Web Services on Devices Code Generator (WsdCodeGen.exe) を使用して、サービス記述 (WSDL) を、アプリケーションが直接呼び出すことができるプロキシ およびスタブ コードに変換できます。 この生成されたコードは、関数呼び出しとパラメーターを SOAP メッセージと XML フィールドに自動的に変換し、WSDAPI を呼び出してリモート デバイスまたはクライアントへの要求を発行します。
関数検出は、WSDAPI アプリケーションをビルドするときに使用して、PnP によって返される関数インスタンスを作成およびアクティブ化できます。 これらの関数インスタンスには、単純な検出以上のものが必要な場合に PnP API を介してより多くの情報を取得するために使用できるデータが含まれています。 詳細については、「 関数の検出 」と 「PnP-X」を参照してください。
関連トピック