![]() |
1
6
L2S DataContext实现IDisposable。您的接口还必须实现它,并调用DataContext.Dispose(),以便Windsor知道有需要处置的资源。 顺便提一下,请注意温莎/IDisposable问题: http://www.jeremyskinner.co.uk/2008/05/03/aspnet-mvc-controllers-windsor-and-idisposable/ http://www.nablasoft.com/Alkampfer/?p=105 |
![]() |
2
4
不,你的
你需要做的是打电话
如果您使用ASP.NET MVC,请考虑使用MVCCONTIB项目,该项目具有温莎集成,可以处理组件的发布。 |
![]() |
3
3
据我所知,
queen3
或者,我会做的是把你的
|
![]() |
4
1
我认为@Krzysztof Komic是对的。。。你应该释放你从温莎得到的一切。 温莎对于任何一个习惯于使用IDisposable的人来说都是相当陌生的。这种明显差异的原因在于组件生命周期的管理。如果您从Windsor获取一个IDisposable组件,您不知道该实例是配置为瞬态还是单例(当然,这可能会随着应用程序的发展而改变)。 如果您处理了一个组件,但后来发现它是一个单例组件,那么其他一些客户机代码会想知道为什么它的组件突然出现故障!?!只有温莎能够为您做出处置决定。 很好的博客帖子Krzysztof(不会让我发布链接!) 在我们的应用程序中,除了几个单件外,所有的东西都是暂时的。Transient似乎是最简单的模型(只要每个人都理解您必须“释放而不是处置”)。如果您的测试中有一个模拟容器,您可以设置一个期望,即为您的模拟解决的每个组件调用Release,并且我还听说transient比其他模式有更少的性能问题(??)?这段代码当然更便于移植。 最后但并非最不重要的一点是,如果您有内存泄漏,您需要了解GC没有收集到什么以及为什么没有收集到某些内容,请查看Tess Ferrandez在windbg上的fab教程系列 http://blogs.msdn.com/b/tess/archive/2008/04/03/net-debugging-demos-lab-7-memory-leak-review.aspx ... 罪犯可能在某个意想不到的地方! |