Castle Windsor何时发布瞬态组件

时间:2012-12-28 16:01:42

标签: c# .net castle-windsor lifecycle transient

我来自Java和Spring的背景,而我对Castle Windsor很新。我已经读过,知道Castle何时会释放瞬态组件非常重要,因为它跟踪创建的所有组件。我很难理解我的组件何时会被释放。以下是我的模型的基础知识:

Singleton -> Singleton Typed Factory -> Transient Objects

如果我发布此链中的第一个单例将释放typed factory创建的所有瞬态对象吗?是否有任何API调用我可以检查是否是这种情况?我在Castle Windsor网站上找不到任何全面的API文档。我发现的文档对我来说似乎并不清楚。

修改 我的问题归结为两个主要问题。

  1. 如果我有单个对象(A)依赖于单身类型工厂(B)而我释放单例A会实际释放B吗?在下面的答案中提到的博客文章说,对单例对象的释放调用被忽略,所以我的假设是不会不会被释放。
  2. 如果我有一个由多个Web请求同时用于创建临时对象并由其中一个Web请求释放的单例类型工厂,则所有将释放瞬态对象,无论它们是否为是否从该Web请求创建?看起来每个网络请求或短暂生活方式的打字工厂似乎更好。

1 个答案:

答案 0 :(得分:8)

这是一篇详细的文章,解释了Windsor如何跟踪对象以及何时需要调用Release:http://kozmic.pl/2010/08/27/must-i-release-everything-when-using-windsor/

更新更新

  1. 单身人士的任何释放都会被忽略,所以,是的,你是对的 - 它不会被释放。

  2. 您只需担心发布您专门解决的组件。如果它由Windsor解决(通过Typed Factory Facility,子依赖解析器等等),请不要担心。