サービス プロキシとセッション
サービス プロキシには、セッション ベースのチャネル バインドと非セッション ベースのチャネル バインドに対する特別な動作があります。 基になるチャネル バインドがセッション ベースの場合、サービス プロキシはセッション ベースのセマンティクスを提供します。 この場合、1 つのチャネルを使用して呼び出しを処理します。 ただし、チャネル バインドがセッション ベースでない場合、サービス プロキシは呼び出しごとに個別のチャネルを作成します。 ただし、セッション ベース以外のチャネルはプールされ、再利用される可能性があることに注意してください。 チャネルを再利用する場合、基になるチャネルに障害が発生していないか、チャネルの呼び出しによってサービス プロキシがチャネルに障害が発生した場合、サービス プロキシはチャネルを開いたままにします。 注意してください。 障害が発生した場合を除き、チャネルを開くと、サービス プロキシが開いている限り開いたままになり、サービス プロキシが閉じられたときにのみ閉じられます。
チャネル バインドがセッション ベースであり、基になるチャネルに障害が発生した場合、サービス プロキシステート マシンは WS_SERVICE_PROXY_STATE_FAULTED 状態に移行します。 非セッション ベースのチャネル バインドの場合、基になるチャネルの障害によってプロキシが WS_SERVICE_PROXY_STATE_FAULTED 状態に移行することはありません。
サービス プロキシとその状態との関係の詳細については、 サービス プロキシ に関するトピックを参照してください。 さまざまなチャネル バインドの例については、次の例を参照してください。
- 非セッション チャネル バインド、 HttpCalculatorClientExample
- セッション ベースのチャネル バインド、 SessionfullCalculatorClientExample