gpt4 book ai didi

.net - 模型和 View 模型应该包含什么?

转载 作者:行者123 更新时间:2023-12-03 10:21:55 26 4
gpt4 key购买 nike

我正在开发一个 WPF 客户端,它与使用 NHibernate 将数据保存在数据库中的 WCF Web 服务进行交互。

客户端将对 UI 使用 MVVM 设计模式,并通过发送和接收 DTO 与 WCF 服务进行交互。

据我了解,只有表示数据和逻辑应该进入 View 模型,而模型应该包含应用程序的数据和业务逻辑。

现在让我们以客户端中的登录屏幕为例。

  • View 将代表登录屏幕本身,其数据上下文将是 View-Model。
  • View-Model 将持有 Model 的一个实例,并通过实现 INotifyProperty 接口(interface)来更新 View。

  • 这是我的问题: Model 中究竟应该包含什么?

    它是否应该使用诸如 MEF 之类的依赖注入(inject)容器来引用 WCF 代理的接口(interface)?

    基本上,用户将输入用户名和密码,由于数据绑定(bind),这将更新 View 模型中的属性。每当用户按下 View 上的“登录”按钮时,都会向 View 模型发送一个命令, View 模型又将其转发给模型。然后模型使用代理接口(interface)与 WCF Web 服务进行通信。

    这种方法正确吗?如果不是,那么 Model 和 View-Model 中究竟应该包含什么?

    最佳答案

    MVVM 中的 ViewModel 是 classic MVC 中的 ApplicationModel 和 Controller 的组合。 .因此,它负责连接到服务以查询数据以显示和调用对服务的操作。

    工作流程应该是这样的:

  • LoginViewModel 已创建并获取 WCF 服务的句柄(理想情况下,您应该使用 DI 将 WCF 服务作为 ILoginService 注入(inject))
  • 用户输入绑定(bind)到虚拟机上相应属性的用户名和密码,然后单击绑定(bind)到虚拟机上的委托(delegate)命令的登录。
  • 在命令处理程序中,VM 运行验证(例如,确保已设置用户名和密码)
  • VM 调用 ILoginService 上的 LoginUser 并传递用户名和密码(调用 WCF 服务上的操作。

  • 该模型不应该知道服务等。从技术上讲,您在客户端使用纯 DTO,因此它应该具有最少的逻辑,在服务背后,应该有一个更丰富的模型,它确实具有业务逻辑和验证。

    关于.net - 模型和 View 模型应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257794/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com