0

サービスのインスタンス コンテキスト モードを設定する可能性を検討しているところですが、2 つのオプションがあります。

1) InstanceContext モードを single に設定します 2) InstanceContext モードを PerCall に設定し、MaxConcurrentCalls を 1 に設定します

最初のオプションでは、サービスのクリティカル セクションに同期を適用する必要がありますが、2 番目のオプションではそれを行う必要はありません。

どちらのオプションが望ましいか、ガイドしてください。

4

1 に答える 1

2

最初のオプションでは、サービスのクリティカル セクションに同期を適用する必要がありますが、2 番目のオプションではそれを行う必要はありません。

1 に設定MaxConcurrentCallsすると、アクティブな通話は 1 つだけになります。これは、 に依存しない同期が必要ないことを意味しますInstanceContext

MaxConcurrentCallsが 1 より大きい場合:

  • InstanceContext = Single を使用すると、同時呼び出しはサービス クラスの同じインスタンスを共有します。したがって、サービス クラスのインスタンス メンバーにアクセスするとき、および他の共有リソース (静的プロパティなど) にアクセスするときに、同期が必要になります。

  • InstanceContext = PerCall を使用すると、各呼び出しはサービス クラスの独自のインスタンスを取得します。したがって、サービス クラスのインスタンス メンバーにアクセスするときに同期は必要ありません。ただし、他の共有リソース (静的プロパティなど) にアクセスする場合は同期が必要になります。

どちらが望ましいかは、サービス クラスに呼び出しごとのインスタンス メンバーがあるかどうかによって異なります。

于 2013-06-01T15:52:10.663 に答える