【发布时间】:2011-06-21 01:20:45
【问题描述】:
我有一个关于如何在 ASP.NET mvc 应用程序和 Windows 服务中使用相同 DI 代码的问题,因为它们都使用 NHibernate 与同一个数据库进行交互。但是,Windows 服务会执行后台任务。
和大家一样,我有一个新的控制器工厂,它知道如何使用 StructureMap 实例化控制器。因此,我可以将所需的存储库作为其构造函数的参数提供给我的控制器。由于 Structuremap 使用 HTTPContextScope 控制 ISession 生命周期,因此我可以确定所有存储库都会为每个 Web 请求接收相同的 ISession 实例。
但是,在 Windows 服务中并使用 Structuremap(相同的 DI 代码),我不知道有一种很好的方法可以在逻辑上隔离不同的后台任务以拥有一个唯一的 ISession 实例并与他们使用的存储库共享它。我希望同时执行多个任务,因此 ISession 不能是单例对象(推荐用于使用 NHibernate 的桌面应用程序)。
我想在我的 Windows 服务信任结构映射中保留并引入每个请求一个会话模式,以便为每个任务提供相同的 ISession 实例。谁能指出我正确的方向?
谢谢
编辑
Corey Coogan 的这两部分帖子非常符合我认为应该解决这个问题的思路。但是,我对 WCF 并不熟悉,并且容易对文章中的部分感到困惑。
http://blog.coreycoogan.com/2010/05/26/structuremap-wcf-nhibernate-part-1/ http://blog.coreycoogan.com/2010/05/27/structuremap-wcf-nhibernate-part-2/
【问题讨论】:
标签: asp.net asp.net-mvc dependency-injection structuremap