掲載するサンプルではnetTcpBindingを使用します。wsHttpBinding等でもReliable Sessionを使用することができます。

確認環境

  • Windows Vista Enterprise(スタンドアロン,WCFサービス,クライアントともに同一マシン)
  • 開発環境 Visual Studio 2008 Professional (英語版)
  • .NET 3.5

1.ソリューションの作成

Visual Studioを起動して、空のソリューション作成します。名前はWCFSample013とします。WCFサンプル再作成(ブラッシュアップ) で作成した次のプロジェクトを今回作成したソリューションの直下にコピーします。ソリューションを右クリックして、既存のプロジェクトのとして追加します。

  • WCFSample.ConsoleClient
  • WCFSample.ProductService
  • WCFSample.WPFHost

2.WCFホストの構成変更

netTcpBindingを使用するので、WPFHostプロジェクトのApp.config内の<system.serviceModel>タグ内を削除してからWCF Service Configuration Editorで編集します。

2.1 Bindingコンフィギュレーションの作成

左ペインのBindingsを右クリックして新しいバインディングコンフィギュレーション作成します。最初のダイアログでnetTcpBindingを選択して、ダイアログを閉じます。右ペインのNameをProductServiceNetTcpBindingConfig、ReliableSession PropertiesのEnabledをTrueに変更し、OrderedをTrue(デフォルト)であることを確認します。

 

 

 

Binding構成のTransferModeがBufferredである必要があります。

2.2 ServiceとEndpointの構成

左ペインのServicesを選択し、右側ペインのCreate a New ServiceをクリックしてWizardを起動し、次の設定を行います。

  1.  Service typeにWCFSample.ProductService.ProductServiceを入力して[Next]をクリック
  2. ContractにWCFSample.ProductService.IProductServiceを入力して[Next]をクリック
  3. BindingConfigurationの選択ダイアログでExisting bindingラジオボタンをクリックし、コンボボックスからProductServiceNetTcpBindingConfigを選択して[Next]をクリック
  4. Addressにnet.tcp://localhost:8056/ProductServiceを入力して[Next]をクリック
  5. 次の確認画面が表示されるので、[Finish]をクリックして終了。

 

ウィザードの詳細な図つきの流れはWCFSample002:ServiceHostを使用したWCFサービスをホストするプログラムを作ってみる を参照。

左ペインのServices→[Endpoints]から作成されたEndpointを選択して、NameをProductServiceNetTcpEndpointに変更して上書き保存します(下図)。

 

 

以上でサービス側の変更完了です。

3.WCFクライアントの構成編集

3.1 構成の変更

WCFSample.ConsoleClientのApp.configの<system.serviceModel>タグ内ををいったん削除してからWCF Service Configuration Editorで編集します。左ペインのBindingsをクリックして右ペインのCreate Binding Configurationをクリックします。右側ペインのNameをProductServiceNetTcpBindingConfig,ReliableSessionをTrueに変更、OrderedがTrueであることを確認します。

 

 

左ペインのClient→Endpointsを右クリック→New Client Endpointをクリックします。右ペインのNameをProductServiceNetTcpEndpoint、BindingにnetTcpBindingを選択、Addressにnet.tcp://localhost:8056/ProductService、ContractにWCFSample.Client.Proxy.ProductServiceを入力します。BindingConfigurationにProductServiceNetTcpBindingConfigをセットします(下図)。

 

 

 

3.2 プログラムの変更

Program.cs内のMainメソッドでバインディングの名前を今回作成したをProductServiceNetTcpEndpointに変更します。

class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("WCFサービスホストを起動したら、キーを入力して下さい。");
            System.Console.Read();
            // エンドポイントの名称を変更
            ProductServiceClient proxy = new WCFSample.Client.Proxy.ProductServiceClient("ProductServiceNetTcpEndpoint");
            int[] productIDs = proxy.GetProductIDs();
            ...
        }
    }

 クライアントの修正は以上です

4.動作確認

ソリューションのプロパティからMultiple Startup Projectとして、WCFSample.ConsoleClientとWCFSample.WPFHostを開始プロジェクトに設定してデバッグ実行します。FireWallの警告が表示された場合はアンブロックとして下さい。トレースのヘッダを確認するとMessageNumberというタグが追加され、メッセージにシーケンス番号が振られるようになります。トレースログを使うサンプルはこちら

説明は以上です。誤り、問題などがありましたら、ご指摘ください。