高度な形式選択

このサンプルでは、Windows Communication Foundation (WCF) REST プログラミング モデルを拡張して新しい送信応答形式をサポートする方法を示します。また、このサンプルでは T4 テンプレートを使用して応答を XHTML ページとして返し、ビュースタイル プログラミング モデルの実装方法も示します。

サンプルの詳細

このサンプルは、単純なサービスと、サービスに要求を発行するクライアント コードで構成されます。サービスは、単一の [WebGet] 操作をサポートします。この操作には、Message EchoListWithGet(string list); のメソッド シグネチャがあります。

クライアントでサービスに対する要求が発行されると、list クエリ文字列パラメーターの項目のコンマで区切られた一覧が示され、サービスからは、XML、JSON、Atom、XHTML、または jpeg のいずれかの形式で同じ一覧が返されます。

サービスから返される応答の形式は、最初は format クエリ文字列パラメーターで決定され、2 回目は要求で指定された HTTP Accept ヘッダーで決定されます。format クエリ文字列パラメーターの値が前に示した形式のいずれかである場合、応答はその形式で返されます。format クエリ文字列が存在しない場合、サービスは要求からの Accept ヘッダー要素を反復処理し、サービスがサポートする最初のコンテンツ タイプの形式を返します。

操作の戻り値の型については注意が必要です。WCF REST プログラミング モデルは、操作で Message 以外の型が返される場合にのみ XML 応答形式と JSON 応答形式をネイティブでサポートします。ただし、戻り値の型として Message が使用されている場合、メッセージの内容の形式の設定は、開発者によって完全に制御されています。

このサンプルでは、CreateXmlResponse メソッド、CreateJsonResponse メソッドおよび CreateAtom10Response メソッドを使用して、文字列の一覧を XML、JSON、および ATOM のメッセージにそれぞれシリアル化しています。jpeg 応答形式の場合は、CreateStreamResponse メソッドが使用され、画像はストリームに保存されます。XHTML 応答の場合、CreateTextResponse が事前に処理された T4 テンプレートと共に使用されます。この T4 テンプレートは .tt ファイルと自動生成された .cs ファイルで構成されます。開発者は、.tt ファイルを使用して変数と制御構造を含むテンプレート フォームで応答を作成できます。T4 詳細情報、「テキスト テンプレートを使用した成果物の生成」を参照してください。

このサンプルは、コンソール アプリケーション内で実行される自己ホスト型サービスとクライアントで構成されています。コンソール アプリケーションが実行されると、クライアントはサービスに要求を発行し、応答からの適切な情報をコンソール ウィンドウに書き込みます。

このサンプルを実行するには

  1. 高度な形式選択サンプルのソリューションを開きます。サンプルを正しく実行するには、Visual Studio 2010 を起動するときに、管理者として実行する必要があります。管理者として実行するには、Visual Studio 2010 アイコンを右クリックし、コンテキスト メニューの [管理者として実行] をクリックします。

  2. F6 キーを押してソリューションをビルドし、Ctrl キーを押しながら F5 キーを押してコンソール アプリケーションの AdvancedFormatSelection プロジェクトを、デバッグを行わずに実行します。コンソール ウィンドウが表示されて、実行中のサービスの URI および実行中のサービスの HTML ヘルプ ページの URI が示されます。

  3. サンプルが実行されると、クライアントは要求をサービスに送信し、応答をコンソール ウィンドウに書き込みます。応答の形式は、XML、JSON、Atom、および XHTML のいずれかになります。

  4. .jpeg 形式の応答を要求できる URI を参照するよう要求されます。ブラウザーを開き、指定された URI を参照します。

  5. 任意のキーを押して、サンプルを終了します。

Ee662965.Important(ja-jp,VS.100).gif 注 :
サンプルは、既にコンピューターにインストールされている場合があります。続行する前に、次の (既定の) ディレクトリを確認してください。

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、「.NET Framework 4 向けの Windows Communication Foundation (WCF) および Windows Workflow Foundation (WF) のサンプル」にアクセスして、Windows Communication Foundation (WCF) および WF のサンプルをすべてダウンロードしてください。このサンプルは、次のディレクトリに格納されます。

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Web\AdvancedFormatSelection