2017-06-12 39 views
2

我的工作,我們正在實施DDD概念的Web應用程序,我們已經構建我們的網站與下面層N層應用程序(API,服務層,業務層, DataAccess層)。驗證水平驅動設計

我們確實驗證了我們的域模型,以確保一致性和我們的模型和聚集的完整性,但我有些懷疑我們是否應該對API的模式(使用數據註釋添加驗證導致我們使用asp.net網絡API)。

我的問題有點奇怪,但是我們應該在Api級別進行驗證,否則將被視爲重複,並且可能會導致驗證與驗證在域級別上執行的驗證不同。

+0

你好,我回答你的問題嗎?謝謝 –

回答

2

有許多類型的驗證,一些驗證應該在某些圖層中完成,而其他圖層中的其他驗證應該完成。所以:

我在AggregatesDomain圖層中保留核心業務規則。一個例子是the account balance can not be negative。像email address must be valid

低級別的規則保持command's構造函數中,也Domain layer裏面,因爲commandsDomain層的一部分。

授權檢查,像owner可以delete自己activitiesadmin可以delete任何activity都在Application層完成。

注意:這適用於以下體系結構:演示文稿(如REST端點,MVC),應用程序,域和基礎結構。

+0

我完全同意你的看法,但是對於'構造函數'中的驗證我有點擔心,我寧願將此驗證移入工廠方法。我不會公開沒有工廠方法的構造函數 –

+0

@WahidBitar它幾乎相同 –