【问题标题】:MVVM Pattern Contradiction - Architectural Vs Presentation?MVVM 模式矛盾——架构与展示?
【发布时间】:2012-08-16 07:26:52
【问题描述】:

什么是表示层模式/表示模式?据我所知,MVVM 是一种架构模式,但我看到很多人、文章、博客将其称为表示模式。我很困惑。

这似乎有点矛盾。如果它是一种架构模式,那么它应该处理我所有的表示层、业务逻辑层和数据访问层,对吗?我被允许使用我的实体框架生成的数据模型作为模型。但是,如果它是一个演示模式,我猜它应该只处理演示,那么我不应该使用 EF 生成的数据模型作为模型,因为它将从表示层访问我的数据访问层.

谁能解释一下?

【问题讨论】:

  • 两者兼有 - 它是一种专门处理演示的架构模式。

标签: wpf mvvm presentation-layer architectural-patterns


【解决方案1】:

您的视图和视图模型通常位于架构的同一层。 MVVM 的主要方面是交互黑白视图和视图模型。模型可能/可能不会被视为位于单独的层中。

当您有一个与数据库、文件存储、服务等相关联的复杂业务应用程序时,通常该模型会成为后端的抽象表示。但在简单的情况下,比如 hello world 图像查看器——模型到底是什么?甚至可能没有。

大图 POV,整个视图 -> 虚拟机 -> 模型堆栈看起来像一个单层。

【讨论】:

  • 感谢您的帮助。如果您将 V -> VM -> M 视为单层,并且有一个处理后端可访问性的数据访问层,那么您的模型(表示层中的 M)究竟包含什么?
  • View Model 的职责是用户交互的逻辑。处理逻辑交互如何实现(呈现和操作)的任何事情都是视图的责任。其他任何事情都是模型的责任。
  • 就像我说的,模型可能是也可能不是一个单独的层。它可能是您 BL 的薄包装,也可能是 BL 本身。对我来说,这两种情况都不同。
【解决方案2】:

MVVM 是架构模式还是表示模式取决于涉及大量工作的层。

如果模型很容易通过一个层构建并可供 VM 使用,则 MVVM 是一种表示模式。在这种情况下,大部分工作将在 View 和 ViewModel 上。

如果应用程序规模很大并且涉及许多层(分层架构),并且 ViewModel 和数据之间的任何东西(如域层、数据库访问层、Web 服务层)都属于模型,则 MVVM 是一种架构模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多