既定のサンプルでは、サービスの動作設定を構成する方法を示します。 このサンプルは、 サービス コントラクトを実装するICalculator
に基づいています。 このサンプルでは、 ServiceBehaviorAttribute 属性と OperationBehaviorAttribute 属性を使用して、サービスの動作と操作の動作を明示的に定義します。 構成ファイルで動作を構成することも、コード内で命令的に構成することもできます (このサンプルで示すように)。
このサンプルでは、クライアントはコンソール アプリケーション (.exe) であり、サービスはインターネット インフォメーション サービス (IIS) によってホストされています。
注
このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。
サービス クラスは、次のコード サンプルに示すように、 ServiceBehaviorAttribute と OperationBehaviorAttribute の動作を指定します。 指定されたすべての値が既定値です。
[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.
サンプルを設定、ビルド、実行するには
Windows Communication Foundation サンプル のOne-Time セットアップ手順を実行していることを確認します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一または複数のコンピューター間の構成でサンプルを実行するには、「Windows Communication Foundation Samplesの実行」の手順に従います。