2016-11-07 12 views
0

私はWCFサービスで、クライアントIDを取得するためにServiceSecurityContext.Current.WindowsIdentityを使用するクラスを持っています。これはすべてうまくいく。クラスをシングルトンにしたいので、新しいインスタンスを繰り返し作成することなくどこでもアクセスできます。私が使用しているInstanceContextModePerSessionで、ConcurrencyModeSingleです。ServiceSecurityContext.Current.WindowsIdentityにアクセスするためのシングルトンクラスを作成します。

これを行うにはどうすればよいですか?ところで、クラスは偽装を使用し、データベースからドメインログインに情報をロードし、WCF操作の間キャッシュします。

答えて

0

WCFは、自動的に次のようにシングルトンを作成します。

InstanceContextMode = InstanceContextMode.Single 

シングル:シングルInstanceContext(したがって、サービスオブジェクト) は、アプリケーションの寿命のためのすべてのクライアント要求を処理します。

ConcurrencyMode = ConcurrencyMode.Multiple 

ConcurrencyMode.Multipleは、複数の同時ユーザーをサポートします。ここではこのようなものに

より:

https://msdn.microsoft.com/en-us/library/ms731193(v=vs.110).aspx

私の経験からは、実装シングルトンは、彼らがマルチスレッドでない場合は特に、パフォーマンス上の問題があるのおそれがあるので避けてください。 ConcurrencyMode.Multipleを使用していても、スレッドの同期は保証されません(あなた自身でこれを処理する必要があります)。 Synchronizing Data for Multithreading

+0

もっと私の質問は、InstanceContextModeかConcurrencyModeについてではなかったです。私はそれらを完全に理解する。なぜこれがパフォーマンスの問題を引き起こし、なぜマルチスレッドではないのか?あなたが私を啓発しない限り、私はあなたに同意しません。 – CodingYoshi

+0

あなたの投稿の設定値は、WCFシングルトンをサポートしていません。したがって、正しい設定値とスレッド同期の可能性のある占いを持っているのが私の答えです。 –

関連する問題