既定のサービスの動作

既定のサンプルでは、サービスの動作設定を構成する方法を示します。 このサンプルは、ICalculator サービス コントラクトを実装する「入門サンプル」に基づいています。 このサンプルは、ServiceBehaviorAttribute 属性と OperationBehaviorAttribute 属性を使用して、サービスの動作と操作の動作を明示的に定義しています。 動作の構成は、このサンプルに示すように、構成ファイルで行うことも、コード内で強制的に行うこともできます。

この例では、クライアントはコンソール アプリケーション (.exe) であり、サービスはインターネット インフォメーション サービス (IIS) によってホストされます。

Note

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

サービス クラスは、ServiceBehaviorAttributeOperationBehaviorAttribute を使用して動作を指定します。次のサンプル コードを参照してください。 指定されたすべての値は、既定値です。

[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 属性で指定されます。 これらの動作のいくつかを次の表に示します。

サービスの動作 説明
AutomaticSessionShutdown セッションをクライアントの要求で自動的にシャットダウンします。
ConcurrencyMode 各サービス インスタンスのコンカレンシー モードを指定します。
InstanceContextMode インスタンス コンテキスト モードを指定します。
UseSynchronizationContext 同期コンテキストが設定されている場合、その同期コンテキストを使用するかどうかを判断します。 Windows フォーム アプリケーションで WindowsFormsSynchronizationContext を使用するかどうかを制御する場合に、これを使用します。
IncludeExceptionDetailInFaults 一般的な未処理の実行例外を Fault<string> に変換してエラー メッセージとして送信するかどうかを判断します。
TransactionIsolationLevel トランザクションの分離レベルを指定します。
ValidateMustUnderstand 予期しないメッセージのヘッダーがエラー状態の原因であるかどうかを判断します。

操作の動作は OperationBehaviorAttribute 属性を使用して指定されます。 これらの動作のいくつかを次の表に示します。

操作の動作 説明
TransactionAutoComplete 現在のトランザクションがサービス操作の完了によってコミットされるかどうかを判断します。
TransactionScopeRequired サービス操作がクライアントからフローされたトランザクションに参加するかどうかを判断します。
Impersonation サービス操作が呼び出し元の ID を偽装するかどうかを判断します。
ReleaseInstanceMode サービス操作の呼び出しの開始時または終了時に、サービス インスタンスが再利用されるかどうかを判断します。

このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。 呼び出し間の遅延は、サービス操作で System.Threading.Thread.Sleep() が呼び出されることによるものです。 以降の動作サンプルでは、これらの動作の詳細について説明します。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。

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.

サンプルをセットアップ、ビルド、および実行するには

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。

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

  3. 単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。