既定のサービスの動作Default Service Behavior

このサンプルでは、サービスの動作設定を構成する方法を示します。This sample demonstrates how service behavior settings can be configured. このサンプルは、ICalculator サービスコントラクトを実装するはじめにに基づいています。The sample is based on the Getting Started, which implements the ICalculator service contract. このサンプルは、ServiceBehaviorAttribute 属性と OperationBehaviorAttribute 属性を使用して、サービスの動作と操作の動作を明示的に定義しています。This sample explicitly defines service behaviors and operation behaviors using the ServiceBehaviorAttribute and OperationBehaviorAttribute attributes. 動作の構成は、このサンプルに示すように、構成ファイルで行うことも、コード内で強制的に行うこともできます。You can configure behaviors in configuration files or imperatively in code (as this sample demonstrates).

この例では、クライアントはコンソール アプリケーション (.exe) であり、サービスはインターネット インフォメーション サービス (IIS) によってホストされます。In this sample, the client is a console application (.exe) and the service is hosted by Internet Information Services (IIS).

注意

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。The setup procedure and build instructions for this sample are located at the end of this topic.

サービス クラスは、ServiceBehaviorAttributeOperationBehaviorAttribute を使用して動作を指定します。次のサンプル コードを参照してください。The service class specifies behaviors with the ServiceBehaviorAttribute and the OperationBehaviorAttribute as shown in the following code sample. 指定されたすべての値は、既定値です。All values specified are the defaults.

[ServiceBehavior(  
    AutomaticSessionShutdown=true,  
    ConcurrencyMode=ConcurrencyMode.Single,  
    InstanceContextMode=InstanceContextMode.PerSession,  
    IncludeExceptionDetailInFaults=false,  
    UseSynchronizationContext=true,  
    ValidateMustUnderstand=true)]  
public class CalculatorService : ICalculator  
{  
    [OperationBehavior(  
        TransactionAutoComplete=true,  
        TransactionScopeRequired=false,  
        Impersonation=ImpersonationOption.NotAllowed)]  
    public double Add(double n1, double n2)  
    {  
        System.Threading.Thread.Sleep(1600);  
        return n1 + n2;  
    }  
    ...  
}  

サービスの動作は、ServiceBehaviorAttribute 属性で指定されます。Service behaviors are specified with the ServiceBehaviorAttribute attribute. これらの動作のいくつかを次の表に示します。The following table describes some of these behaviors.

サービスの動作Service behavior 説明Description
AutomaticSessionShutdown セッションをクライアントの要求で自動的にシャットダウンします。Automatically shuts down a session at the client's request.
ConcurrencyMode 各サービス インスタンスのコンカレンシー モードを指定します。Specifies the concurrency mode for each service instance.
InstanceContextMode インスタンス コンテキスト モードを指定します。Specifies the instance context mode.
UseSynchronizationContext 同期コンテキストが設定されている場合、その同期コンテキストを使用するかどうかを判断します。Determines whether to use the provided synchronization context, if one is set. Windows フォーム アプリケーションで WindowsFormsSynchronizationContext を使用するかどうかを制御する場合に、これを使用します。Use this when you want to control whether to use a WindowsFormsSynchronizationContext in Windows Forms applications.
IncludeExceptionDetailInFaults 一般的な未処理の実行例外を Fault<string> に変換してエラー メッセージとして送信するかどうかを判断します。Determines whether general unhandled execution exceptions are to be converted into a Fault<string> and sent as a fault message.
TransactionIsolationLevel トランザクションの分離レベルを指定します。Specifies the isolation level for transactions.
ValidateMustUnderstand 予期しないメッセージのヘッダーがエラー状態の原因であるかどうかを判断します。Determines whether unexpected message headers cause an error condition.

操作の動作は OperationBehaviorAttribute 属性を使用して指定されます。Operation behaviors are specified by using the OperationBehaviorAttribute attribute. これらの動作のいくつかを次の表に示します。The following table describes some of these behaviors.

操作の動作Operation Behavior 説明Description
TransactionAutoComplete 現在のトランザクションがサービス操作の完了によってコミットされるかどうかを判断します。Determines whether service operation completion commits the current transaction.
TransactionScopeRequired サービス操作がクライアントからフローされたトランザクションに参加するかどうかを判断します。Determines whether the service operation enlists in a client-flowed transaction.
Impersonation サービス操作が呼び出し元の ID を偽装するかどうかを判断します。Determines whether the service operation impersonates the caller's identity.
ReleaseInstanceMode サービス操作の呼び出しの開始時または終了時に、サービス インスタンスが再利用されるかどうかを判断します。Determines whether service instances are recycled at the start or end of the service operation call.

このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。When you run the sample, the operation requests and responses are displayed in the client console window. 呼び出し間の遅延は、サービス操作で System.Threading.Thread.Sleep() が呼び出されることによるものです。The delay between the calls is the result of the calls to System.Threading.Thread.Sleep() made in the service operations. 以降の動作サンプルでは、これらの動作の詳細について説明します。The rest of the behavior samples explain these behaviors in more detail. クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。Press ENTER in the client window to shut down the client.

Add(100,15.99) = 115.99  
Subtract(145,76.54) = 68.46  
Multiply(9,81.25) = 731.25  
Divide(22,7) = 3.14285714285714  
  
Press <ENTER> to terminate client.  

サンプルをセットアップ、ビルド、および実行するにはTo set up, build, and run the sample

  1. Windows Communication Foundation サンプルの1回限りのセットアップ手順を実行したことを確認します。Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

重要

サンプルは、既にコンピューターにインストールされている場合があります。The samples may already be installed on your machine. 続行する前に、次の (既定の) ディレクトリを確認してください。Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、 Windows Communication Foundation (wcf) および Windows Workflow Foundation (WF) のサンプルの .NET Framework 4にアクセスして、すべての WINDOWS COMMUNICATION FOUNDATION (wcf) と WFWF サンプルをダウンロードしてください。If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. このサンプルは、次のディレクトリに格納されます。This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Default