6

除了出于功能原因(例如单例)需要控制范围之外,是否有任何理由从默认范围(瞬态?)切换到其他范围?

如果我坚持使用默认范围,每个插件类型的每个默认实例都会在每个请求上有效地实例化(假设是一个 Web 应用程序),对吗?这会显着影响性能吗?

我考虑过使用 Http Session 范围将其限制为每个登录的用户一个实例。但是,这将导致(至少)每个用户始终将每种插件类型的一个实例存储在内存中。使用默认范围,这些实例只会在处理页面请求时保存在内存中。我不确定哪个更可取。

如果您使用 StructureMap,您通常如何为每种插件类型配置范围?

感谢您的任何见解,

菲尔

4

1 回答 1

7

我保留默认范围。这意味着每个请求(每个用户或许多用户)我手头都有一个对象的实例。这意味着每次都会发出一个新请求。将其保持在会话中是我更喜欢对其进行更具体控制的事情。出于这个原因,我可能会在服务层上放置一个缓存层并将 StructureMap 返回的对象粘贴到其中。然后我可以查询缓存中已经实例化(现在序列化)的对象,并选择从哪里获取我的对象。

我会为 Singleton 配置做同样的事情,我会使用 StructureMap 来获取实际的对象......但是当它第二次返回对象时,对象本身会将一个实例移交给它自己(在单例术语中是)。这使用了 StructureMap 的力量......但并没有给它比需要更多的力量。

于 2009-08-10T22:08:20.600 回答