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

标签 .net wcf web-services mvvm wcf-client

我正在开发一个 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/

    相关文章:

    c# - C# 中的 X509 指南/教程

    asp.net - 将现有的 .net 功能扩展到 iPad

    c# - 如何将 XmlAttribute 设置为 IsRequired?

    c# - 登录尝试失败 WCF 错误

    iPhone - 访问 MySql 服务器?

    .net - 如何使用 Visual Basic 将一些 XML 插入到 XDocument 中?

    .net - Entity Framework 在匹配实体名称时将 '1' 附加到属性名称

    c# - wcf 接口(interface) : why doesn't it 'just' go to the methode but to the whole class

    java - 向第三方应用程序公开 Web 服务?

    web-services - Outlook.com 是否提供任何 webhook/推送通知支持?