6

機能上の理由 (シングルトンなど) でスコープを制御する必要がある以外に、デフォルトのスコープ (一時的なものですか?) から別のものに切り替える理由はありますか?

デフォルトのスコープに固執すると、すべてのプラグイン タイプのすべてのデフォルト インスタンスが、リクエストごとに効果的にインスタンス化されます (Web アプリを想定)、それは正しいですか? これはパフォーマンスに著しく影響しますか?

ログインしたユーザーごとに 1 つのインスタンスに制限するために Http セッション スコープを使用することを検討しました。デフォルトのスコープを使用すると、これらのインスタンスは、ページ リクエストが処理されている間だけメモリに保持されます。どちらが好ましいかはわかりません。

StructureMap を使用している場合、通常、各プラグイン タイプのスコープをどのように設定しますか?

洞察をありがとう、

フィル

4

1 に答える 1

7

デフォルトのスコープはそのままにします。これは、(各ユーザーまたは多数のユーザーによる) 1 つの要求ごとに、オブジェクトのインスタンスが手元にあることを意味します。これは、毎回新しい要求が行われることを意味します。セッションを維持することは、より具体的に制御したいものです。このため、サービス レイヤーの上にキャッシュ レイヤーを配置し、StructureMap の返されたオブジェクトを貼り付けます。次に、既にインスタンス化された (シリアル化された) オブジェクトのキャッシュをクエリし、オブジェクトをどこから取得するかを選択できます。

StructureMap を使用して実際のオブジェクトを取得するシングルトン構成でも同じことを行います...しかし、オブジェクトを 2 回目に返すと、オブジェクト自体がインスタンスをそれ自体に引き渡します (シングルトンの用語では、は)。これはその力のためにStructureMapを使用しています...しかし、必要以上の力を与えません。

于 2009-08-10T22:08:20.600 に答える