WCF,Ninject和生命周期

时间:2010-12-23 15:55:19

标签: wcf nhibernate dependency-injection ninject

我正在将Ninject添加到我的WCF服务(在IIS中托管)。我打算让WCF服务自动实例化我的NHibernate存储库类的实例。

我最初使用Castle(以及后来的Ninject)在我的ASP.NET MVC客户端中实例化这些对象并将它们传递给服务类。在这种情况下,范围是PerWebRequest(Castle)或InRequestScope(Ninject)。 NHibernate会话将与处理存储库时提交的事务一起隐式创建。

我希望通过让客户端通过新建/关闭服务来隐式控制会话/事务的生命周期来保持同样的方法。

现有的Ninject范围方法之一是否可以这种方式工作(也许是InThreadScope或InRequestScope)?还有另一种方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我会让客户端显式控制这类对象的生命周期。不要注入这样的对象,而是注入一个可以为你创建这样一个对象的工厂。这遵循principle of least surprise。有关详细信息,请参阅this SO answer