【问题标题】:Service Layer: 1 Instance Per Application or Per View Model? (Or: giving each view model its own data context)服务层:每个应用程序或每个视图模型 1 个实例? (或者:给每个视图模型自己的数据上下文)
【发布时间】:2010-06-22 18:41:56
【问题描述】:

我正在使用三层构建 C#/.Net 3.5 应用程序:UI(视图/视图模型)、服务和数据访问/持久性。

服务层: 每个服务层实例都与一个唯一的持久性实例相关联。服务层通过接口引用持久层。

持久层:目前,持久层接口有一个使用(Fluent)NHibernate 的具体实现。所有持久层实例共享同一个 ISessionFactory。每个持久性实例都使用该工厂打开自己的 ISession。

目标:按照Ayende Rahien 的建议,让每个视图模型在自己的数据上下文(也称为 ISession)中运行。为了实现这一点,我的应用程序为每个 VM 提供了自己的服务层实例(反过来,它有自己的持久层实例)。对我来说,拥有这么多同一个服务层类的实例闻起来很可疑。

问题:这是一个好方法吗?离开每个 VM 一个服务实例并转移到每个应用程序一个服务实例会更好吗?如果是这样,我将如何做到这一点并仍然为每个 VM 提供自己的数据上下文?

谢谢你,

【问题讨论】:

    标签: .net nhibernate architecture mvvm isession


    【解决方案1】:

    我认为您当前的设计是正确的。合并服务实例没有任何好处。

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2019-10-03
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2022-07-13
      • 2017-06-01
      • 1970-01-01
      • 2016-10-28
      相关资源
      最近更新 更多