2013-05-20 178 views
1

它看起来像VM =业务逻辑层和Model = Entities/DTO。在我的业务逻辑中,我正在验证业务规则,如FirstName为空等,并且它看起来也可以是ViewModel的一个工作,所以如果我们需要在一个MVVM设计模式中使用MVVM设计模式,应该在哪里进行业务验证N层架构的应用程序?而模型只是DTO,那么N层应用程序中是否需要模型呢?结合MVVM和N层体系结构

谢谢!

回答

2

根据Wikipedia,该模型表示“概念及其之间的关系”。通常,在多层体系结构中,模型的概念对于层是局部的。为什么?因为您不想用可能只与其中一个层相关的信息来污染整个应用程序。例如,客户在UI层可能的概念与客户在数据访问层中的概念非常不同(可能期望他们公开不同的方法)。

因此,MVVM中的M是指表示层中的模型 - 它是(比方说)表示UI世界中的客户概念的对象。将它作为一个简单的DTO可能是完全合适的,或者您可能想在赋予传入的DTO对象额外的行为(可能使用Adapter模式)之前,先考虑它代表模型的一个元素。我很想在这里添加一个图表来澄清,不幸的是,我的名声不允许我!

+0

就我而言,我的模型只是表示表中列的属性,它们本质上与我的DTO相同,所以如果我仍然需要从UI重新创建DTO,我就处于困境如果Model和DTO非常相似,则传递给BusinessLayer。实际上,我在我的解决方案中有另一个项目,这是我放置DTO的地方,如果我理解MVVM模式,那么模型也可以驻留在另一个项目中,对吗? –

+0

如果您的模型是贫血的(http://en.wikipedia.org/wiki/Anemic_domain_model),那么它可能与DTO的同义词,在这种情况下,将模型与DTO关联可能是合适的。在回答最后一个问题时,您的模型与您的视图和视图模型位于不同的项目中是肯定可能的(甚至建议!)。 – Lawrence