如何使用WCF实现MVVM?

use*_*744 5 mvvm

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

PS我想避开WCF RIA服务和Silverlight,因为Silverlight缺乏对命令的支持使得我正在关注的书(使用Model-View-ViewModel的Pro WPF和Silverlight MVVM有效应用程序开发)难以理解.

kro*_*ijk 11

好的,我会试着让你加快速度......

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

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

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

如果没有明确的例子,很难谈论这个问题,所以总结一下,我想请你看一下http://aviadezra.blogspot.com/2010/10/silverlight-mvvm-odata-wcf-data. HTML.我知道,它使用的是WCF数据服务和SilverLight.不要因为直接指向这个样本而直接向我发疯,并给我拇指向下.这是一个非常好的例子,说明你想要实现什么,介绍什么以及如何设置这样的应用程序.只需通过常规类型数据合同将WPF和数据服务替换为Silverlight,故事的其余部分将有助于清楚您的想法.

希望它可以帮助您完成任务!