【问题标题】:Combining MVVM and N-Tier Architecture结合 MVVM 和 N 层架构
【发布时间】:2013-05-14 17:54:31
【问题描述】:

看起来 VM = 业务逻辑层,模型 = 实体/DTO。在我的业务逻辑中,我正在验证业务规则,例如 FirstName 是否为空等,看起来这也可以是 ViewModel 的工作,因此如果我们需要在N 层架构的应用程序?而且模型只是 DTO,所以在 N 层应用程序中是否需要模型?

谢谢!

【问题讨论】:

    标签: mvvm n-tier-architecture


    【解决方案1】:

    根据Wikipedia,模型代表“概念和它们之间的关系”。通常,在多层架构中,模型的概念是层本地的。为什么?因为您不想用可能只与其中一个层相关的信息污染整个应用程序。例如,UI 层中的客户概念可能与数据访问层中的客户概念截然不同(您可能希望它们公开不同的方法)。

    因此,MVVM 中的 M 指的是表示层中的模型 - 即(例如)表示 UI 世界中的客户概念的对象。这可能是一个简单的 DTO 完全合适,或者您可能希望在考虑将传入的 DTO 对象表示为模型的元素之前赋予其额外的行为(可能使用适配器模式)。我很想在此处添加图表以进行澄清,不幸的是我的声誉不允许我这样做!

    【讨论】:

    • 在我的例子中,我的模型只是代表表中列的属性,它们本质上与我的 DTO 非常相似,所以如果我仍然需要重新创建 DTO,我会陷入困境如果 Model 和 DTO 非常相似,则从 UI 传递到 BusinessLayer。实际上,我的解决方案中有另一个项目,这是我放置 DTO 的地方,如果我了解 MVVM 模式,那么模型也可以驻留在另一个项目中,对吗?
    • 如果您的模型贫血 (en.wikipedia.org/wiki/Anemic_domain_model),那么它可能是 DTO 的同义词,在这种情况下,将模型与 DTO 关联起来可能是合适的。在回答您的最后一个问题时,您的模型当然有可能(甚至推荐!)位于与您的视图和视图模型不同的项目中。
    猜你喜欢
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 2018-04-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多