次の方法で共有


WCF Web HTTP プログラミング オブジェクト モデル

WCF Web HTTP プログラミング モデルを使用すると、開発者は基本 HTTP 要求を使用して Windows Communication Foundation (WCF) Web サービスを公開できるようになり、SOAP は必要ありません。WCF WEB HTTP プログラミング モデルは、既存の WCF 拡張モデルに基づいて構築されます。Web HTTP プログラミング モデルでは、次のクラスが定義されます。

プログラミング モデル

チャネルおよびディスパッチャー インフラストラクチャ

ユーティリティ クラスと機能拡張ポイント

AspNetCacheProfileAttribute

AspNetCacheProfileAttribute は、サービス操作に適用された場合に、構成ファイル内の ASP.NET 出力キャッシュ プロファイルを示します。この構成ファイルを使用して ASP .NET 出力キャッシュに操作の応答がキャッシュされます。このプロパティが受け取るパラメーターは 1 つ (構成ファイルでキャッシュ設定を指定するキャッシュ プロファイル名) だけです。

WebGetAttribute

WebGetAttribute 属性は、サービス操作を HTTP GET 要求に応答する操作としてマークするために使用されます。メタデータを操作の説明に追加する受信操作の動作です (IOperationBehavior メソッドは何の処理も行いません)。このメタデータを操作の説明で検索する動作 (特に WebHttpBehavior) がサービスの動作コレクションに追加されていない場合は、WebGetAttribute を適用しても機能しません。WebGetAttribute 属性には、次の表に示すパラメーターをオプションで指定できます。

パラメーター 説明

BodyStyle

属性が適用されているサービス操作との間で送受信される要求と応答をラップするかどうかを制御します。

RequestFormat

要求メッセージの書式設定方法を制御します。

ResponseFormat

応答メッセージの書式設定方法を制御します。

UriTemplate

属性が適用されているサービス操作にマップされた HTTP 要求を制御する URI テンプレートを指定します。

WebHttpBinding

WebHttpBinding クラスは、WebMessageEncodingBindingElement を使用して、XML、JSON、および生のバイナリ データのサポートを組み込みます。これは、HttpsTransportBindingElementHttpTransportBindingElement、および WebHttpSecurity オブジェクトから構成されています。WebHttpBinding は、WebHttpBehavior と組み合わせて使用するようにデザインされています。

WebInvokeAttribute

WebInvokeAttribute 属性は WebGetAttribute 属性によく似ていますが、サービス操作を GET 以外の HTTP 要求に応答する操作としてマークするために使用されます。メタデータを操作の説明に追加する受信操作の動作です (IOperationBehavior メソッドは何の処理も行いません)。このメタデータを操作の説明で検索する動作 (特に WebHttpBehavior) がサービスの動作コレクションに追加されていない場合は、WebInvokeAttribute を適用しても機能しません。

WebInvokeAttribute 属性には、次の表に示すパラメーターをオプションで指定できます。

パラメーター 説明

BodyStyle

属性が適用されているサービス操作との間で送受信される要求と応答をラップするかどうかを制御します。

Method

サービス操作がマップされる HTTP メソッドを指定します。

RequestFormat

要求メッセージの書式設定方法を制御します。

ResponseFormat

応答メッセージの書式設定方法を制御します。

UriTemplate

属性が適用されているサービス操作にマップされた GET 要求を制御する URI テンプレートを指定します。

UriTemplate

UriTemplate クラスでは、構造が似ている URI のセットを定義できます。テンプレートは、パスとクエリの 2 つの部分から構成されています。パスは、スラッシュ (/) で区切られた一連のセグメントから構成されています。各セグメントには、リテラル値、変数値 (中かっこ [{ }] 内に記述。必ず 1 つのセグメントと一致するよう制約)、またはワイルドカード (アスタリスク [*] で記述。"残りのパス" に一致する) を指定することができます。ワイルドカードは、パスの最後に指定する必要があります。クエリ式は、すべて省略することができます。存在する場合、クエリ式は順序なしの一連の名前/値ペアを指定します。クエリ式の要素には、リテラル ペア (?x=2) または変数ペア (?x={value}) を指定できます。対になっていない値は許可されていません。UriTemplate は、特定の URI や URI のグループをサービス操作にマップするために、WCF WEB HTTP プログラミング モデルによって内部的に使用されます。

UriTemplateTable

UriTemplateTable クラスは、開発者が選択したオブジェクトにバインドされた UriTemplate オブジェクトの結合セットを表します。これにより、セット内のテンプレートに対して URI (Uniform Resource Identifier) の候補を一致させ、一致したテンプレートに関連付けられているデータを取得します。UriTemplateTable は、特定の URI や URI のグループをサービス操作にマップするために、WCF WEB HTTP プログラミング モデルによって内部的に使用されます。

WebServiceHost

WebServiceHostServiceHost を拡張するため、SOAP 以外の Web スタイル サービスを容易にホストできます。WebServiceHost では、サービスの説明にエンドポイントが見つからない場合、サービスのベース アドレスに既定のエンドポイントを自動的に作成します。既定の HTTP エンドポイントを作成するときに、WebServiceHost は、HTTP ヘルプ ページと Web サービス記述言語 (WSDL) GET 機能を無効にして、メタデータ エンドポイントが既定の HTTP エンドポイントに干渉しないようにします。また、WebServiceHost は、WebHttpBinding を使用するすべてのエンドポイントに必要な WebHttpBehavior がアタッチされるようにもします。最後に、WebServiceHost は、エンドポイントのバインディングを、安全な仮想ディレクトリで使用するときに、関連付けられたインターネット インフォメーション サービス (IIS) のセキュリティ設定と連携して動作するよう自動的に構成します。

WebServiceHostFactory

WebServiceHostFactory クラスは、サービスがインターネット インフォメーション サービス (IIS) または Windows プロセス アクティブ化サービス (WAS) でホストされている場合に、WebServiceHost を動的に作成するために使用されます。ホスト アプリケーションが WebServiceHost をインスタンス化する自己ホスト型サービスとは異なり、IIS または WAS でホストされているサービスは、このクラスを使用してサービスの WebServiceHost を作成します。CreateServiceHost メソッドは、サービスの受信要求の受信時に呼び出されます。

WebHttpBehavior

WebHttpBehavior クラスは、必要なフォーマッタ、操作セレクターなど、サービス モデル レイヤーで Web スタイル サービスをサポートするために必要な内容を提供します。このパラメーターは (WebHttpBinding と共に使用される) エンドポイントの動作として実装され、これにより、フォーマッタと操作セレクターを各エンドポイントに指定できるようになり、さらに、同じサービス実装で SOAP エンドポイントと POX エンドポイントの両方を公開できるようになります。

WebHttpBehavior の拡張

WebHttpBehavior は、仮想メソッド GetOperationSelectorGetReplyClientFormatterGetRequestClientFormatterGetReplyDispatchFormatter、および GetRequestDispatchFormatter を使用して拡張できます。開発者は、WebHttpBehavior から派生クラスを作成し、そのメソッドをオーバーライドして既定の動作をカスタマイズすることができます。

WebScriptEnablingBehavior は、WebHttpBehavior 拡張の一例です。WebScriptEnablingBehavior によって、Windows Communication Foundation (WCF) エンドポイントでブラウザー ベースの ASP.NET AJAX クライアントから HTTP 要求を受信できるようになります。「HTTP POST を使用する AJAX サービス」はこの機能拡張ポイントの使用例です。

Bb412204.Warning(ja-jp,VS.100).gif 注意 :
WebScriptEnablingBehavior を使用する場合、UriTemplate は、WebGetAttribute または WebInvokeAttribute 属性内でサポートされません。

WebHttpDispatchOperationSelector

WebHttpDispatchOperationSelector クラスは、UriTemplate クラスおよび UriTemplateTable クラスを使用して、サービス操作に対して呼び出しをディスパッチします。

互換性

WCF WEB HTTP プログラミング モデルでは、SOAP ベースのメッセージを使用しないため、WS-* プロトコルをサポートしていません。ただし、SOAP を使用するエンドポイントと SOAP を使用しないその他のエンドポイントの 2 つの異なるエンドポイントを使用して、同じコントラクトを公開できます。例については、『方法 : コントラクトを SOAP クライアントおよび Web クライアントに公開する』を参照してください。

セキュリティ

WCF WEB HTTP プログラミング モデルでは WS-* プロトコルがサポートされないため、WCF WEB HTTP プログラミング モデルで構築された Web サービスを保護するには、SSL を使用してサービスを公開するしかありません。IIS 7.0 を使用した SSL の設定詳細情報、「IIS での SSL の実装方法」を参照してください。

参照

リファレンス

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

概念

WCF Web HTTP プログラミング モデルの概要