2013-05-20 173 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