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

时间:2011-03-05 00:20:17

标签: asp.net wcf nhibernate asp.net-mvc-2 architecture

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

  1. 网络前端(asp.net mvc2)
  2. 服务层(普通c#类库)
  3. 模型层(包含实体,服务和存储库接口的普通c#类库)
  4. 数据层(实现BLL中定义的存储库接口并使用NHibernate)
  5. 根据http请求打开ISession并且其工作正常。

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

    非常感谢任何帮助,博客文章或书籍参考。

2 个答案:

答案 0 :(得分:1)

你可能想让WCF在与asp.net相同的上下文中运行...试试这篇文章: http://msdn.microsoft.com/en-us/library/aa702682.aspx

答案 1 :(得分:1)

使用NHibernate会话的每次调用实例化。检查this article。它解释了如何创建将Session附加到当前实例上下文的属性。