【问题标题】:WPF MVVM service layerWPF MVVM 服务层
【发布时间】:2010-08-30 18:59:07
【问题描述】:

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

这些 SOAP 请求/响应处理程序在我的 MVVM 设置中的哪个位置存在?每当点击保存按钮时,视图模型是否会自行调用 SOAP?视图模型是否应该通知模型保存自己?也许是其他方式,完全独立于 MVVM?

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

【问题讨论】:

  • 我开始写一个答案,然后说服自己放弃它,然后 +1。我的直觉是模型应该处理它,因为大多数 ViewModel 使用模型的 DataContext,但这并不是真正更新模型本身,而是模型之外的东西......

标签: wpf mvvm


【解决方案1】:

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

在这种情况下,我会让视图在视图模型上触发保存命令,然后调用应用层,进而调用远程服务。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 2012-09-02
        • 2012-07-11
        • 1970-01-01
        • 2017-04-29
        相关资源
        最近更新 更多