次の方法で共有


既定のサービス動作

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

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

このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。

サービス クラスは、次のコード サンプルに示すように、 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 サンプル One-Time セットアップ手順を実行していることを確認します。

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

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