基本的な Web プログラミング モデルのサンプル

Download sample

このサンプルは、HTTP GET および POST を使用して呼び出せるサービスを実装することによって Windows Communication Foundation (WCF) Web プログラミング モデルの拡張機能の基本要素を示します。説明を簡単にするために、このサンプルはサービスをホストし、クライアントを実装する 1 つのプロセスとして実装されています。クライアントは HTTP を使用してサービスを呼び出します。

Noteメモ :

このサンプルをビルドして実行するには、.NET Framework Version 3.5 をインストールする必要があります。Visual Studio 2008 では、プロジェクトとソリューション ファイルを開く必要があります。

アセンブリと名前空間

WCF Web プログラミング モデルは、この SDK に含まれる System.ServiceModel.Web アセンブリに実装されています。このアセンブリは、.NET Framework 3.0 の一部としてインストールされている System.ServiceModel から派生しています。

Program.cs ファイル (サービスとクライアントの両方を含む) は、次の重要な名前空間を参照します。

サービス

このサンプル サービスは、次のコードに示すように EchoWithGetEchoWithPost の 2 つの操作が設定されたコントラクトを公開します。

[ServiceContract]
public interface IService
{
   [OperationContract]
   [WebGet]
   string EchoWithGet(string s);

   [OperationContract]
   [WebInvoke]
   string EchoWithPost(string s);
}

他の WCF サービス同様、ServiceContractAttribute 属性は IService コントラクトに適用され、OperationContractAttribute はそのメソッドに適用されます。このサービス コントラクトは、WebGetAttributeWebInvokeAttribute の 2 つの新しい Web プログラミング モデル属性を使用します。これらの属性は、コントラクトの操作を HTTP に公開する方法を示します。

WebGetAttribute 属性は EchoWithGet メソッドに適用されます。この属性は、このメソッドが HTTP GET メソッドに応答する URI で公開されることを示しています (https://localhost:8000/EchoWithGet?s=Hello, world! など)。WCF クライアントでも Web ブラウザでもこの URI を使用できます。WebInvokeAttributeEchoWithPost メソッドに適用されます。これはこの操作が HTTP POST メソッドに応答する URI で公開されることを示します。メソッドのパラメータは XML として POST 要求の本体にエンコードされます。この URI は、XML 本体で HTTP POST 要求を作成できる WCF クライアント、および Web クライアントで作成できます (たとえば、ブラウザの XmlHttpRequest オブジェクトなど)。Web プログラミング モデルの詳細については、この SDK の「高度な Web プログラミングのサンプル」サンプルを参照してください。

サービスのエンドポイントは次のように明示的に定義されます。

using (WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress))
{
    host.Open();

    ...
}

このサービスは、Web プログラミング モデルの拡張機能を使用するホスティング サービスを簡素化する ServiceHost の新しい派生物である WebServiceHost 型を使用してホストされます。WebServiceHostWebHttpBindingWebHttpBehavior を使用して既定のエンドポイントを自動作成するので、エンドポイントを明示的に定義する必要はありません。この型は SOAP を使用せずに HTTP で直接通信を行うための新しい標準バインディングです。このバインディングは、XML メッセージだけでなく、XML 以外のコンテンツ (プレーンテキスト、イメージ、その他のバイト ストリーム) もサポートします。

クライアント

このサンプルは、クライアントで Web プログラミング モデルを使用して HTTP 要求を送信する方法を示します。

クライアント チャネルは、WebChannelFactory を使用して作成されます。

using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
    IService channel = cf.CreateChannel(); 
    ...
}

WebServiceHost と同様に、WebChannelFactoryWebHttpBindingWebHttpBehavior を使用して、ベース アドレスに既定のエンドポイントを作成します。

WebChannelFactory が作成されると、クライアント アプリケーションはサービスに対するチャネルを作成し、 EchoWithGet を呼び出し、次に EchoWithPost を呼び出します。

対話が終了すると、プログラムはキーが押されるのを待ちます。この期間中も、サービスはアクティブにリッスンしています。キーを押すと、クライアントとサーバーの両方がシャットダウンして、プログラムが終了します。

このサービスを実行すると、次の出力が表示されます。

Calling EchoWithGet via HTTP GET:

Output: You said Hello, world

このサンプルの実行中に Web ブラウザで "https://localhost:8000/EchoWithGet?s=Hello, world!" に移動しても同じ出力を生成できます。

Calling EchoWithPost via HTTP POST:

Output: You said Hello, world

Press any key to terminate

サンプルを設定、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。

  2. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順を参照してください。

  3. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「Windows Communication Foundation サンプルの実行」の手順に従います。

関連項目

その他の技術情報

高度な Web プログラミングのサンプル

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.