次の方法で共有


DPWS 仕様のコンプライアンス

このトピックでは、WSDAPI が Web サービス用デバイス プロファイル (DPWS) 仕様の選択機能を実装する方法について説明します。 また、WSDAPI 実装から省略された DPWS 機能についても説明します。

DPWS 仕様では、デバイスにメッセージを送信する一貫した方法が提供されます。 また、埋め込みハードウェアで Web サービスをサポートするプロセスを簡略化する特定の制限事項と推奨事項も追加されます。

DPWS 仕様では、特定の実装の推奨事項または制限で MAY または SHOULD という用語を使用して選択機能について説明します。 省略された機能は、WSDAPI によって実装されなかった DPWS 仕様で REQUIRED として記述された機能、または DPWS 仕様で指定されたメソッドで WSDAPI が他のメソッドに実装される機能である場合があります。

このトピックでは、セクションごとの DPWS セクションのレイアウトに従います。 各セクションでは、WSDAPI 実装によって特定の制限、要件、選択機能がどのように処理されるかについて説明します。 このトピックは、DPWS 仕様と共に読むのが最適です。

DPWS 3.0 メッセージング

DPWS 3.1 URI 形式

制限 R0025 と R0027 では、URI がオクテットMAX_URI_SIZE制限されます。 WSDAPI では、これらの両方の制限が指定どおりに適用されます。

DPWS 3.2 UDP メッセージング

推奨事項 R0029 は、UDP の最大転送単位 (MTU) を超える UDP パケットを送信しないことを示唆しています。 WSDAPI ではこの推奨事項は実装されず、実装では MTU より大きい検出メッセージを送受信できます。

DPWS 3.3 HTTP メッセージング

R0001 では、サービスでチャンク転送がサポートされている必要があります。 WSDAPI は、要求メッセージ内のチャンクされたデータを受け入れ、要求メッセージでチャンクされたデータを送信します。

R0012 と R0013 では、SOAP HTTP バインドの必須部分について説明します。 R0012 の場合、WSDAPI は SOAP HTTP バインディングを実装しますが、WSDAPI が HTTP 要求の送信を完了するまで HTTP 応答の読み取りを開始しません。 WSDAPI は、R0013 で必要なメッセージ交換パターンを実装し、R0014 でオプションの応答 SOAP ノードを実装し、R0015 にオプションの Web メソッド機能を実装しません。 WSDAPI では、R0030 および R0017 の要件もサポートされています。

DPWS 3.4 SOAP エンベロープ

WSDAPI は R0034 をサポートし、既定では R0003 と R0026 を適用します。 具体的には、R0003 および R0026 に従って、WSDAPI が HTTP 経由でMAX_ENVELOPE_SIZEよりも大きい SOAP エンベロープを受信すると、拒否され、接続が閉じられます。

DPWS 3.5 WS-Addressing

R0004 は、WSDAPI でのデバイス API の推奨される使用を反映しており、WSDAPI のクライアント API でサポートされています。 これは推奨事項であるため、WSDAPI を使用すると、クライアントとデバイスは、デバイス エンドポイントに URI 以外 urn:uuid の URI を使用して、最大限の互換性を確保できます。 WSDAPI のデバイス API は初期化の間に状態を保持しないため、アプリケーション開発者は WSDAPI でデバイス API を使用して、R0005 と R0006 が適切にサポートされるようにします。 WSDAPI のクライアント API では、デバイス ID が一意で永続化されていると想定されます。また、WSDAPI (PnP-X など) のクライアント API 上に構築される機能では、デバイスの再起動間でデバイスを適切に認識するために、これを必要とします。

R0007 では、エンドポイント参照での参照プロパティの使用を推奨します。 WSDAPI は引き続き参照プロパティを使用してエンドポイントを認識して受け入れます。開発者はエンドポイントの使用を選択できますが、既定では WSDAPI によって作成されるエンドポイントには設定されません。 同様に、R0042 では、WSDAPI によってサービス エンドポイントが作成されるときに、HTTP または HTTPS トランスポート アドレスが使用されますが、デバイスではサービス エンドポイントで HTTP または HTTPS トランスポート アドレスを使用する必要はありません。 HTTP または HTTPS を使用しないサービスと通信しようとするときのクライアントの動作は未定義です。

障害の場合、R0031 は応答エンドポイントを制約し、エラーが匿名でない場合に送信するエラーを記述します。 WSDAPI は、メッセージの送信時に応答エンドポイントに正しい値を強制的に使用し、WSDAPI が正しくない応答エンドポイントを持つ要求メッセージを受信すると正しくエラーが発生します。 R0041 は、応答エンドポイントが無効な場合にエラーを削除するオプションを実装に提供します。 WSDAPI は、エラーを削除するのではなく、クライアントと通信するための "ベスト エフォート" として、匿名エンドポイントにアドレス指定された要求チャネルでエラーを送信します。

最後に、SOAP ヘッダーには R0019 と R0040 の 2 つの制限があります。どちらも WSDAPI が準拠し、受信したメッセージに適用されます。

DPWS 3.6 添付ファイル

WSDAPI は添付ファイルをサポートし、R0022 に準拠しています。 WSDAPI は R0037 にも準拠しています。 添付ファイルを送信する場合、WSDAPI は常にすべての MIME パーツのコンテンツ転送エンコードを "バイナリ" に設定します。 ただし、WSDAPI では R0036 は適用されません。 コンテンツ転送エンコードが "binary" に設定されていない MIME パーツを受信するときの WSDAPI の動作は未定義です。

DPWS では、MIME パーツの順序付け句も定義されます。 R0038 の場合、WSDAPI はパーツの順序付けを強制し、SOAP エンベロープが最初の MIME パートでない場合は MIME メッセージを拒否します。 R0039 の場合、WSDAPI は常に SOAP エンベロープを最初の MIME パートとして送信します。

DPWS 4.0 検出

R1013 と R1001 では、デバイスの検出とサービスの検出が区別されます。 WSDAPI は R1013 に準拠しています。 ホスティング実装は R1001 に準拠していますが、WSDAPI ではクライアントにこの推奨事項は適用されません。

DPWS には、型とスコープの一致規則に関するガイダンスも用意されています。 WSDAPI では、LDAP を除く WS-Discovery で定義されているすべてのスコープ一致規則がサポートされます。 WSDAPI には、R1019 に準拠したカスタム スコープ一致規則を定義するための拡張可能なモデルも用意されています。 また、ホスティング API は常に R1020 ごとの検出の型を提供 wsdp:Device しますが、クライアント API には存在する必要はありません。 WSDAPI 上に構築された他のアプリケーション (PnP-X など) には、検出に存在する型に wsdp:Device 対するハード要件があります。

検出とバインドを容易にするために、WSDAPI では R1009 と R1016 がサポートされています。 R1018 では、WSDAPI は匿名アドレスに送信されないマルチキャスト UDP を無視します。 R1015、R1021、および R1022 はプローブ メッセージの HTTP バインディングを定義します。このバインディングは、WSDAPI が説明に従ってサポートします。

DPWS 5.0 の説明

WSDAPI では、クライアントに R2044 が適用されます。 ホスト側では、WSDAPI は SOAP エンベロープ本文の 要素のみを提供 wsx:Metadata します。 R2045 を使用すると、デバイスは WS-Transfer 機能のサブセットをサポートできます。 ホスティング API は常にエラーを生成します wsa:ActionNotSupported

DPWS 5.1 の特性

DPWS では、デバイスの基本的な特性について説明します。 このトピックで説明する制限に加えて、長さの制限は特定の文字列と URI に対して定義されます。 WSDAPI では、この DPWS セクション 5.1 では、メッセージを送信する前、またはその内容を解析した後に、長さの制限が適用されます。

DPWS では、必要なメタデータ セクションとメタデータ バージョンの循環についても説明します。 クライアント実装では、ThisModel と ThisDevice メタデータの存在が強制されます。 ホスティング実装では、メタデータ バージョンも適切に管理され、R2038、R2012、R2001、R2039、R2014、R2002 に準拠して、これらのセクションが常に提供されます。

DPWS 5.2 ホスティング

このセクションでは、サービスとリレーションシップ メタデータの階層について説明します。 WSDAPI では、クライアント側またはデバイス側でこのセクションで説明されているように、ServiceId の一意性は強制されません。

WSDAPI は R2040 に準拠しており、ホストされているサービスがない場合は、ホスティング実装がリレーションシップ セクションなしでメタデータ応答を送信できます。 クライアント実装は、メタデータ応答を正しく受け入れます。

R2029 では、WSDAPI が正しく受け入れるメタデータ応答で複数のリレーションシップ セクションを使用できます。 R2030 と R2042 では、ホスティング API で正しく実装されているメタデータ バージョンの管理について説明します。

DPWS 5.3 WSDL

サービスが Web サービス記述言語 (WSDL) データを提供する場合、クライアント実装はサービス定義を取得し、その場でサービスを操作できます。 これは、遅延バインドされたクライアントによって使用されます。 WSDAPI クライアントの実装では、サービスから提供される WSDL を受け入れますが、クライアントはそれを検証せず、クライアントは遅延バインディング プログラミング モデルを提供しません。 ホスティング実装を使用して WSDL を提供できますが、サービス レベルのメタデータがホスト自体によって管理されていないため、ホストはそうする必要はありません。

DPWS 5.4 WS-Policy

DPWS では、デバイスに使用するポリシー アサーションについて説明します。 WSDAPI は WSDL を提供せず、解釈しないため、WSDL データに埋め込まれたポリシーを認識して適用することはできません。

DPWS 6.0 イベント

DPWS 6.1 サブスクリプション

DPWS では、プッシュ配信のサポートが必要です。 WSDAPI は、サービス側でプッシュ配信を実装するため、R3009 と R3010 に準拠し、クライアント側のプッシュ配信モードのみを受け入れます。 R3017 と R3018 では、 または EndTo アドレスが認識されない場合、サービスからの特定の障害がNotifyTo必要です。 WSDAPI では、これらのアドレスが事前に検証されず、これらのエラーは生成されません。 ただし、クライアントの実装では、これらのエラーが正しく認識されます。 同様に、R3019 は省略可能であり、WSDAPI はこの推奨事項を実装しませんが、クライアント実装はメッセージを SubscriptionEnd 正しく認識し、配信エラーをアプリケーションに通知します。

DPWS 6.1.1 フィルター処理

WSDAPI は R3008 に準拠し、フィルターを Action 実装します。 R3011 と R3012 に準拠して、WSDAPI は、指定された条件でエラーを生成しません。 WSDAPI では、フィルター処理を求められるアクションが認識されない場合、エラー記述 R3020 も実装されます。

DPWS 6.2 サブスクリプションの期間と更新

WSDAPI は、R3005、R3006、および R3016 に準拠しています。 WSDAPI は常に を使用 xs:duration しますが、指定されている場合は受け入れるため xs:dateTime 、R3013 で省略可能なエラーは発行されません。 WSDAPI は R3015 GetStatus ごとにエラーを wsa:ActionNotSupported サポートし、発行しません。 WSDAPI は、サービスが要求に wsa:ActionNotSupported 応答した場合にエラーを GetStatus 受け入れます。

DPWS 7.0 セキュリティ

DPWS では、デバイスに推奨されるセキュリティ モデルについて説明します。 WSDAPI は、説明に従ってこれらの推奨事項を実装せず、説明に従ってこのセクションの制限を適用しません。

DPWS 付録 I

DPWS は、デバイスに合わせて他の仕様からグローバル定数を修正します。 WSDAPI は、このセクションの定数を使用し、 WS-Discovery 実装の既定の定数をこれらの定数でオーバーライドします。 WS-Discoveryに WSDAPI を使用するアプリケーションは、 WS-Discovery で定義されている定数ではなく、DPWS で定義されている定数にバインドされます。