【问题标题】:How do I implement MVVM with WCF?如何使用 WCF 实现 MVVM?
【发布时间】:2011-10-02 19:59:30
【问题描述】:

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

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

【问题讨论】:

标签: mvvm


【解决方案1】:

好的,我会尽力让你加快速度......

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

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

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

没有一个明确的例子很难谈论这件事,所以总结一下,我想邀请你看看http://aviadezra.blogspot.com/2010/10/silverlight-mvvm-odata-wcf-data.html。我知道,它正在使用 WCF 数据服务和 SilverLight。不要因为我直接指向这个样本而生我的气,并给我竖起大拇指。这是一个很好的例子,说明了您想要实现什么、引入什么以及考虑如何设置这样的应用程序。只需将 Silverlight 替换为 WPF 并用常规类型的数据合约替换 Data Services,接下来的故事将帮助您理清思路。

希望它对你的探索有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 2012-09-09
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2011-04-01
    • 2019-10-20
    相关资源
    最近更新 更多