1

MVC, MVVM,之类的架构模式MVP仅用于表示层?
我们可以在业务逻辑层或数据访问层使用吗?
我以前认为Presentation TierView
BusinessLogic TierController/ViewmodelData Access LayerModel
请有人澄清这一点..

4

2 回答 2

1

您提到的模式提供了耦合业务和表示层的概念。考虑具有您提到的层的经典三层架构:数据访问层业务逻辑表示层,然后MVVM,提供表示层业务逻辑耦合的概念。由于主要思想是两者之间的松散耦合,以尽可能避免两层之间的逻辑依赖关系,我会将它们视为一种中介(在这个词的含义上,而不是模式)或它们之间的粘合剂.MVCMVP

让我为 MVVM 澄清这一点,示例:

您可以在 WPF 中编写完整的表示层,而无需使用MVVM. 同样,您也可以在不了解MVVM. 您根本不需要 ViewModel 来构建一个工作应用程序。

但是:您没有机会将表示/UI 的关注点与执行您的软件所编写任务的实际逻辑完全分开。两者之间的边界在现实世界中有点模糊:您计算数据,现在您想要转换数据以将其显示在图表中。这是业务逻辑吗?是和不是。这是 UI 逻辑吗?是和不是。有一个灰色地带:某种逻辑,某种 UI。这就是MVVM(等等)发挥作用的地方:您在业务和演示之间添加一个仅专用于这个灰色区域的层。

对于 MVVM:视图就是视图,它是表示层。而 ViewModel 是灰色地带,既不是真正的 Presentation,也不是真正的业务逻辑,而是它们之间的粘合剂。模型就是模型,它是业务逻辑。它甚至可以在不知道它将用于 WPF 应用程序(理论上)的情况下编写。并且可以有业务逻辑,这甚至不是 MVVM 意义上的模型,因为它根本与 UI 无关。

在此之下,是底部带有DAL的所有其他内容。DAL真的不应该关心业务逻辑和表示是如何粘合在一起的,这超出了所讨论模式的范围。

于 2013-06-07T07:36:22.227 回答
1

在架构上,我会说MVC,MVPMVVM是表示层。各个组件之间的观点是:

  1. 看法

    这很清楚,它属于表示层。不讨论这个

  2. 控制器/演示/视图模型

    如果您取消 N 层主体,这就是业务层。似乎这种设计模式是在没有与 N-Tier 耦合的情况下发明的。

    Controller具有 Session 和 HttpContext 利用率。它依赖于网络。根据 N-Tier 主体,BLL 必须不知道任何 UI。因此它适用于表示层。

    Presentation具有事件/事件处理程序/委托和一些特定于 UI 的数据。(CMIIW,我对 MVP 不太熟悉)。因此它适用于表示层。

    正如其他人所说,ViewModel很难归类为表示层。但是,我发现最好放入表示层。根据我使用 WPF 的经验,有时我需要使用特定于 MVVM 的对象,例如ObservableCollectionandINotifyPropertyChangedICommand强制数据绑定刷新。有时需要ViewModel访问自定义会话状态,例如登录等。其他时候,您需要指定一些特定于 UI 的参数,例如字体颜色等。这可以通过处理 View 中的逻辑来避免,但是我发现在 ViewModel 中更容易做到这一点。

    要考虑的另一件事是,使用 MVVM 会阻止我使用服务 - 存储库模式。

  3. 模型

    如果你从 MV 模式中去掉 N 层,这就是实体模型。它在 Asp.Net MVC 中进行了描述,其中模型将在视图中用作数据的容器。但是,如果您考虑 N-Tier,那么这是业务层,您可以在其中对数据进行插入/更新/删除操作,并驻留其逻辑。

于 2013-06-07T11:40:31.707 回答