3

wcfアプリケーションでシングルトンパターンを使用することをお勧めしますか?私にはServiceResponseクラスがあり、応答とerrordetail、およびwcfの現在の要求のほとんどすべての詳細を処理します。私が最初にサービスにアクセスしたとき、ServiceResponseクラスに5つのプロパティがあり、errordetailプロパティにそれぞれの値といくつかのエラーの詳細が入力されているとします。次のヒットでは、エラーの詳細が取得されず、他の4つのプロパティがすべていっぱいになったとしましょう。

ただし、ここで重要なのは、errordetailプロパティに以前の値が入力されていることです。これは、後続のヒットの後でもシングルトンオブジェクトが作成されないと想定しています。したがって、変更された値のみが影響を受けますが、変更されていないプロパティは、後続のヒットに対して以前の値を保持します。

これは、appdomainがアンロードされてオブジェクトを解放し、次のsinletonオブジェクトを他のimm用に作成できるようにすることがないためです。リクエスト?それ以外の場合、wcfでシングルトンパターンを実現する方法。ヘルプに感謝します。

4

2 に答える 2

3

シングルトンパターンは、オブジェクトが1回だけインスタンス化され、AppDomainの存続期間全体にわたって存続することを意味します。特定のリクエストに固有のデータを静的オブジェクトに保存しないでください。静的オブジェクトはすべて同じデータを共有するため、探しているものとは異なる場合があります。

WCFアプリケーションで静的オブジェクトを使用するのが良いかどうかは、シナリオとそこに何を格納する必要があるかに完全に依存する質問です。WCFは、複数のスレッドがこの共有データにアクセスできるマルチスレッド環境であるため、適切な同期メカニズムを使用して、このデータがスレッドセーフであることを確認するために特別な注意を払う必要があります。

これは、appdomainがアンロードされてオブジェクトを解放し、次のsinletonオブジェクトを他のimm用に作成できるようにすることがないためです。リクエスト?

アプリケーションの起動時に作成される単一のAppDomainがあります。リクエストごとに異なるAppDomainを取得することを期待しないでください。アプリケーションがIISによってリサイクルされるまで、要求はすべて同じAppDomainから処理されます。

于 2012-08-27T15:25:00.753 に答える
0

...wcfの現在のリクエストのほとんどすべての詳細。

これはシングルトンではありません。シングルトンは、定義ごとにすべてのリクエスト間で共有されます。要求全体または接続コンテキストを通じて存続するインスタンスを作成する必要があります。オブジェクトのインスタンスを作成し、それが最初に必要になったときに、関連するリクエスト/接続キャッシュに保存します。

于 2012-08-27T15:27:52.830 に答える