【问题标题】:The model in MVVMMVVM中的模型
【发布时间】:2011-12-18 06:20:17
【问题描述】:

除非我误解了——我在 MVVM 上阅读的大多数文章都将 MVVM 中的模型解释为包含域/业务逻辑的部分,但让我感到困惑的是 MVVM 是一种表示层模式,而表示层不包含业务逻辑整体。有人可以帮我理解业务层中的域逻辑如何映射到表示层中的模型,MVVM 中的模型实际上是 DTO 吗? 如果有人可以通过示例帮助解释业务层如何映射到 SOA 中的 MVVM 模型(业务逻辑位于 Web 服务后面),我将不胜感激。谢谢。

【问题讨论】:

  • 在这里查看我的答案以及人们给出的答案。我认为 MVC 和 MVVM 经常被误解,人们认为那里的模型和控制器正在取代数据模型和业务逻辑。在我看来,MVVM 和 MVC 都只是在 UI 级别,以保持 UI 组合由一些基本的实体操作或其他 UI 逻辑分开,所以我认为我的答案适用于 MVC 和 MVVM。
  • 对不起,我看不到任何网址,请您编辑并重新发布。谢谢。

标签: c# .net wpf mvvm


【解决方案1】:

MVVM 与 MVC 一样,只是一种分离表示形式,其目的是实现与 UI 的逻辑和状态相关的应用程序部分与与逻辑相关的应用程序部分之间的关​​注点分离以及与业务领域相关的状态。因此,只要将模型部分与表示关注点分开,MVVM 并没有真正规定任何关于模型部分所采用的形式。

模型故意不以任何方式耦合或依赖于应用程序的表示方面,但除此之外,还有许多不同的方式来实现三元组的“M”部分。特别是,它不必映射到单个对象:它可能意味着与返回 DTO 的服务交互,它可能意味着发布和订阅消息总线上的消息,或者它可能意味着检索代表实体的域对象域,调用它们的方法,然后持久化它们。

MVVM 模式的真正独特之处在于 ViewModel 在其中的作用,因为它的目的是以一种具有丰富数据绑定功能的 View 技术可以使用的方式表示 UI 的状态。如果没有丰富的数据绑定支持,您将使用不同形式的分离表示,例如 MVC 或 MVP,但“M”部分仍然可以相同,因为它在定义上独立于 UI 技术。这是重要的因素。

【讨论】:

    【解决方案2】:

    MVVM 中的模型根本不是 DTO。 DTO 是数据传输对象。它更像实体类。它基本上用于将数据从一层传输到另一层;例如表示层到业务层或业务层到数据访问层。

    而模型主要由业务逻辑组成。表示层通过视图模型在需要时调用模型的业务逻辑。

    【讨论】:

      【解决方案3】:

      Model 经常被 ViewModel 本身封装。您必须在设计时将模型和视图模型分开,因为单个视图模型可能使用不同的模型。但实际上这种情况很少见,因此 ViewModel 可以直接使用服务。

      如果单个 ViewModel 可以为不同类型的模型提供服务,这些模型可以被一个一个替换 - 引入单独的模型层,通过接口抽象它们并注入到适当的 ViewModel 中,否则 View 和 ViewModel 就足够了。

      【讨论】:

        猜你喜欢
        • 2013-04-03
        • 2013-05-27
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多