WPF MVVM服务层

时间:2010-08-30 18:59:07

标签: wpf mvvm

我计划首次按照MVVM模式编写WPF应用程序,但对我来说并不是很清楚。假设视图有一个“保存”按钮,当它被命中时,我需要保存我的数据的当前状态(模型)。这将通过向SOAP服务发送SOAP消息来完成。

在我的MVVM设置中,这些SOAP请求/响应处理程序是否存在?每当按下保存按钮时,视图模型是否会自动调用SOAP?视图模型是否应该通知模型保存自己?也许它是另一种方式,与MVVM完全分开?

我的想法是(至少在这种特定情况下)视图模型会处理它,因为它需要在视图中禁用保存按钮,直到当前保存请求完成。

3 个答案:

答案 0 :(得分:5)

我通常在viewmodel和SOAP / WCF / Webservice层之间放置一个逻辑客户端应用程序/业务层。该层是所有非视图业务逻辑和处理逻辑所在的层。请记住,viewmodel是视图的模型,而不是域的模型。因此,您希望尽快将控制权交给下一层。

在这种情况下,我会让视图在viewmodel上触发一个save命令,然后调用应用程序层,然后调用远程服务。

答案 1 :(得分:4)

ViewModel,不应该做这样的操作。它只应该触发它。因此,模型必须这样做(或者负责加载和保存操作的另一个中间层,而不是ViewModel本身)。

ViewModel可以观察保存操作,并可以提供有关视图进度的状态信息。

答案 2 :(得分:0)

我将创建一个可由ViewModel访问的服务处理程序。将其传递给viewmodel的构造函数,并调用服务处理程序公开的方法。