代码之家  ›  专栏  ›  技术社区  ›  Phil Sandler

结构图范围/生命周期指南?

  •  6
  • Phil Sandler  · 技术社区  · 17 年前

    是否有任何理由从默认范围(瞬态)切换?对于其他事情,出于功能上的原因(如单例),不需要控制范围吗?

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

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

    如果使用structuremap,通常如何为每个插件类型配置作用域?

    感谢您的洞察力,

    菲尔

    1 回复  |  直到 17 年前
        1
  •  7
  •   Andrew Siemer    17 年前

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

    对于单例配置,我也会做同样的事情,在这里我将使用structuremap来获取实际的对象……但是当它第二次返回对象时,对象本身将把一个实例交给它自己(用单例术语来说就是)。它使用结构图作为它的力量…但并没有给它比需要更多的力量。