Asp.net mvc-wcf-BLL-Nhibernate存储库的最佳会话管理选项是什么

Asp.net mvc-wcf-BLL-Nhibernate存储库的最佳会话管理选项是什么,asp.net,wcf,nhibernate,asp.net-mvc-2,architecture,Asp.net,Wcf,Nhibernate,Asp.net Mvc 2,Architecture,我有一个应用程序架构,它有以下几层(或c#项目) web前端(asp.net mvc2) 服务层(普通c#类库) 模型层(带有实体、服务和存储库接口的普通c#类库) 数据层(实现BLL中定义的存储库接口并使用NHibernate) ISession是根据http请求打开的,并且工作正常 现在,我想在我当前的服务层之上添加wcf层。wcf项目直接调用原始服务层类。但一旦我这样做,asp.net上的会话/会话工厂就变得不可用/不可用。看起来,wcf在与asp.net完全不同的上下文中运行。因此,我想

我有一个应用程序架构,它有以下几层(或c#项目)

  • web前端(asp.net mvc2)
  • 服务层(普通c#类库)
  • 模型层(带有实体、服务和存储库接口的普通c#类库)
  • 数据层(实现BLL中定义的存储库接口并使用NHibernate)
  • ISession是根据http请求打开的,并且工作正常

    现在,我想在我当前的服务层之上添加wcf层。wcf项目直接调用原始服务层类。但一旦我这样做,asp.net上的会话/会话工厂就变得不可用/不可用。看起来,wcf在与asp.net完全不同的上下文中运行。因此,我想将初始化会话工厂和会话管理的逻辑转移到wcf。我该怎么做?甚至在这之前,这是一个好的做法吗?我想添加wcf的原因之一是,我想将操作公开给其他应用程序(可能不是基于http的)


    任何帮助、博客文章或书籍参考都将不胜感激。

    您可能希望WCF在与asp.net相同的上下文中运行。。。试试这篇文章:
    使用NHibernate会话的每次调用实例。检查。它解释了如何创建将会话附加到当前实例上下文的属性。

    谢谢Ladislav。这个对我帮助很大。这不完全是我想要的方式,但我也不知道其他的选择。再次感谢。