次の方法で共有


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

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

プログラミング モデル

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

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

WebGetAttribute

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

パラメータ 説明

BodyStyle

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

RequestFormat

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

ResponseFormat

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

UriTemplate

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

WebHttpBinding

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

WebInvokeAttribute

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

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

パラメータ 説明

BodyStyle

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

Method

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

RequestFormat

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

ResponseFormat

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

UriTemplate

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

UriTemplate

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

UriTemplateTable

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

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 要求を受信できるようになります。「HTML Form Handler Sample」はこの機能拡張ポイントの使用例です。

WebHttpDispatchOperationSelector

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

互換性

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

関連項目

リファレンス

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

概念

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