WCF WEB HTTP プログラミング モデルを使用すると、開発者は SOAP を必要とせずに、基本的な HTTP 要求を通じて Windows Communication Foundation (WCF) Web サービスを公開できます。 WCF WEB HTTP プログラミング モデルは、既存の WCF 拡張モデルの上に構築されています。 次のクラスを定義します。
プログラミング モデル:
チャネルとディスパッチャー インフラストラクチャ:
ユーティリティ クラスと拡張ポイント:
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、生のバイナリ データのサポートが組み込まれています。 これは、 HttpsTransportBindingElement、 HttpTransportBindingElement 、および 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 は、WCF WEB HTTP プログラミング モデルによって内部的に使用され、特定の URI または URI のグループをサービス操作にマップします。
UriTemplateTable
UriTemplateTable クラスは、開発者が選択したオブジェクトにバインドUriTemplateオブジェクトの連想セットを表します。 これにより、候補の Uniform Resource Identifier (URI) をセット内のテンプレートと照合し、一致するテンプレートに関連付けられているデータを取得できます。 UriTemplateTable は、WCF WEB HTTP プログラミング モデルによって内部的に使用され、特定の URI または URI のグループをサービス操作にマップします。
WebServiceHost
WebServiceHost では、 ServiceHost を拡張して、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(Type, Uri[]) メソッドは、サービスの受信要求を受信したときに呼び出されます。
WebHttpBehavior
WebHttpBehavior クラスは、サービス モデル レイヤーでの Web スタイルのサービス サポートに必要な、必要なフォーマッタ、操作セレクターなどを提供します。 これはエンドポイントの動作 ( WebHttpBindingと組み合わせて使用) として実装され、各エンドポイントにフォーマッタと操作セレクターを指定できます。これにより、同じサービス実装で SOAP エンドポイントと POX エンドポイントの両方を公開できます。
WebHttpBehavior の拡張
WebHttpBehavior は、 GetOperationSelector(ServiceEndpoint)、 GetReplyClientFormatter(OperationDescription, ServiceEndpoint)、 GetRequestClientFormatter(OperationDescription, ServiceEndpoint)、 GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)、 GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint)など、さまざまな仮想メソッドを使用して拡張できます。 開発者は、 WebHttpBehavior からクラスを派生させ、これらのメソッドをオーバーライドして既定の動作をカスタマイズできます。
WebScriptEnablingBehaviorは、WebHttpBehaviorを拡張する例です。 WebScriptEnablingBehavior を使用すると、Windows Communication Foundation (WCF) エンドポイントは、ブラウザー ベースの ASP.NET AJAX クライアントから HTTP 要求を受信できます。 HTTP POST を使用する AJAX サービスは、この拡張ポイントを使用する例です。
Warnung
WebScriptEnablingBehaviorを使用する場合、UriTemplateはWebGetAttributeまたはWebInvokeAttribute属性内ではサポートされません。
WebHttpDispatchOperationSelector
WebHttpDispatchOperationSelector クラスは、UriTemplate クラスとUriTemplateTable クラスを使用して、サービス操作への呼び出しをディスパッチします。
互換性
WCF WEB HTTP プログラミング モデルでは SOAP ベースのメッセージが使用されないため、WS-* プロトコルはサポートされません。 ただし、2 つの異なるエンドポイント (1 つは SOAP を使用し、もう 1 つは SOAP を使用しない) によって同じコントラクトを公開できます。 例については、「 方法: コントラクトを SOAP および Web クライアントに公開する」 を参照してください。
安全
WCF WEB HTTP プログラミング モデルは WS-* プロトコルをサポートしていないため、WCF WEB HTTP プログラミング モデルで構築された Web サービスをセキュリティで保護する唯一の方法は、SSL を使用してサービスを公開することです。 IIS 7.0 での SSL の設定の詳細については、「IIS で SSL を実装する方法」を参照してください。