【问题标题】:Castle Windsor - Why would I not want to use 'NoTrackingReleasePolicy' as default?Castle Windsor - 为什么我不想默认使用“NoTrackingReleasePolicy”?
【发布时间】:2011-10-23 21:07:48
【问题描述】:

我来自 StructureMap 世界,在这里永远不需要释放已解析的瞬态对象。

我看到 Windsor 默认跟踪任何已解析的瞬态对象,因此在它们被释放(如果它们曾经被释放)之前,它们不会被垃圾收集。

我在文档中找到了 NoTrackingReleasePolicy,但它的用法是 discouraged

必须释放任何瞬态对象对我来说似乎回到了过去。

我将在我的应用中使用 NoTrackingReleasePolicy。

这样做会给我带来什么麻烦?或者换句话说,为什么我要手动释放对象而不是让垃圾收集器为我处理?

【问题讨论】:

  • 我建议在对此做出任何决定之前阅读devlicio.us/blogs/krzysztof_kozmic/archive/2010/08/27/…。简而言之:如果您不得不为此担心太多,那么您使用容器的方式是错误的(无论是 StructureMap、Windsor 还是任何其他容器)。
  • @Mauricio,感谢您的链接。读起来很有趣。就我而言,我是在 asp.net mvc 应用程序的上下文中工作的,所以我似乎不需要手动释放控制器中的任何依赖项。我想知道它如何与我们也大量使用的 Wcf Web Api 一起工作。我认为服务类不会自动化。当网络请求结束时被释放。必须对此进行调查。
  • WCF 工具会这样做:github.com/castleproject/Windsor/tree/master/Facilities/… 不知道具体的 WebAPI。

标签: castle-windsor


【解决方案1】:

只是为了让这个问题不会没有答案:

@mauricio scheffer 在 cmets 的博文 linked 中解释了此事。

基本上使用 NoTrackingReleasePolicy 会导致很多微妙的问题,如果您正确地构建应用程序,使用默认发布策略,您不必担心在代码中显式调用 release。

【讨论】:

  • 链接已损坏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2010-11-28
  • 1970-01-01
相关资源
最近更新 更多