MVVM Light中DataService和IDataService的目的是什么?

时间:2012-03-07 09:42:10

标签: mvvm mvvm-light

我开始使用MVVM Light版本4,我无法理解:

  1. 我为什么要使用DataService和IDataService?
  2. 我应该为模型中的任何类创建数据服务吗?

1 个答案:

答案 0 :(得分:17)

首先 - 像往常一样 - 在MVVM中你不做某事,这是一个推荐或最佳实践。通常,您可以自由地将数据访问编码到视图模型中 - 这样做对于小型项目或原型实现可能是一种很好的做法。

但是,您应该考虑到这也存在一些缺点。实现数据服务的原因是该组件是可重用的,甚至可能在MVC应用程序等其他场景中可用。此外,它分离了从数据存储中获取模型的顾虑。

实施IDataService的原因是您可以在需要时交换实施,例如用于提供设计时数据。当您需要这个时,您还必须考虑严重依赖于接口的控制模式的反转。在这种情况下,IOC容器也可能很有趣,尽管不是必需的。

但是,首先是上述建议,模式,设计指南和最佳实践,使您可以自由地设计最符合您要求的应用程序。

修改:数据服务的大小

数据服务的设计和范围取决于您的应用程序及其要求。它的范围从所有模型的单一数据服务到每个模型的一个数据服务。此外,数据服务接口的设计可能是一个单独的决定。一个服务类可以实现多个服务接口,从而允许从用户隐藏实现的某些方面(方法)。

在设计数据服务时,您应该查看unit of workrepository模式。有几个示例实现。

如果您只需要一个基于单个查询的非常简单的工作单元模式,您可以查看我的blog,其中我写了关于将IQueryable转换为工作单元的内容图案。但是,这只适用于非常简单的情况,通常是使用存储库和适当的工作单元的完整实现更合适。