服务层:每个应用程序或每个视图模型1个实例? (或者:为每个视图模型提供自己的数据上下文)

时间:2010-06-22 18:41:57

标签: .net nhibernate architecture mvvm isession

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

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

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

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

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

谢谢你,

1 个答案:

答案 0 :(得分:0)

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