如何使用WCF实现MVVM?

如何使用WCF实现MVVM?,mvvm,Mvvm,我是MVVM的新手。目前,我正在C#中开发一个WPF项目,该项目将有一个SQl Server后端,我将使用标准WCF服务与之通信。到目前为止,我在MVVM上看到的所有教程似乎总是使用一些静态数据存储库,例如xml文件作为后端。我还没有看到使用数据库和数据访问层的实现,所以我不知道我的WCF服务适合哪里。服务中定义了所有数据对象,那么服务本身是否成为模型?此外,如何在ViewModel中包含服务,以便设计器不会抛出错误,声明它无法为服务类创建实例?如果您能在这里提供帮助,我将不胜感激,因为我觉得奇

我是MVVM的新手。目前,我正在C#中开发一个WPF项目,该项目将有一个SQl Server后端,我将使用标准WCF服务与之通信。到目前为止,我在MVVM上看到的所有教程似乎总是使用一些静态数据存储库,例如xml文件作为后端。我还没有看到使用数据库和数据访问层的实现,所以我不知道我的WCF服务适合哪里。服务中定义了所有数据对象,那么服务本身是否成为模型?此外,如何在ViewModel中包含服务,以便设计器不会抛出错误,声明它无法为服务类创建实例?如果您能在这里提供帮助,我将不胜感激,因为我觉得奇怪的是,关于这个主题的许多教程都忽略了业务线应用程序的最实际的实现


PS我想避开WCF RIA服务和Silverlight,因为Silverlight缺乏对命令的支持,这使我下面的书(Pro WPF和Silverlight MVVM使用模型-视图-视图-模型进行有效的应用程序开发)很难理解。

好的,我会尽力让您了解最新情况

首先,我确实认识到关于模型和使用WCF公开的对象模型的问题。它们是一样的吗?好吧,为了简单起见,我现在想做一个假设。那么我们就不需要客户端MVVM的模型部分了?取决于

ViewModel位于驾驶座上。我们让它为您的WCF服务创建客户端代理。请求中使用并作为结果返回的对象构成了您的模型。任何要在客户端缓存或不能直接与UI绑定的内容都将放在模型容器类的属性中。从这些模型属性生成可绑定属性,以便在UI中使用。其他所有属性都只是视图模型中的直接属性

关于WCF和数据访问层,有一些重要的事情需要认识。首先,您需要在逻辑(信息)模型和物理(数据库)模型之间进行分离。一个原因是将数据库技术从应用程序中抽象出来。另一种方法是允许应用程序/域逻辑与物理实现之间存在微小偏差。确保您的(实体)模型类足够通用,可以支持UI中的更改,而无需为每个UI更改修改完整的应用程序堆栈

如果没有一个明确的例子,很难谈论这件事,所以最后,我想请你们看看。我知道,它正在使用WCF数据服务和SilverLight。不要因为我直接指向这个样本而生我的气,给我大拇指。这是一个非常好的例子,说明了您想要实现什么,引入什么,以及如何考虑设置这样一个应用程序。只要用WPF替换Silverlight,用常规类型的数据契约替换数据服务,故事的其余部分将帮助您理清思路


希望它能帮助你完成任务

如果您是MVVM模式的新手,它可能会帮助您阅读关于如何创建代码段的文章:因为您很可能需要在提交的viewmodels中键入许多属性。我希望有帮助。