我的工作,我們正在實施DDD概念的Web應用程序,我們已經構建我們的網站與下面層N層應用程序(API,服務層,業務層, DataAccess層)。驗證水平驅動設計
我們確實驗證了我們的域模型,以確保一致性和我們的模型和聚集的完整性,但我有些懷疑我們是否應該對API的模式(使用數據註釋添加驗證導致我們使用asp.net和網絡API)。
我的問題有點奇怪,但是我們應該在Api級別進行驗證,否則將被視爲重複,並且可能會導致驗證與驗證在域級別上執行的驗證不同。
我的工作,我們正在實施DDD概念的Web應用程序,我們已經構建我們的網站與下面層N層應用程序(API,服務層,業務層, DataAccess層)。驗證水平驅動設計
我們確實驗證了我們的域模型,以確保一致性和我們的模型和聚集的完整性,但我有些懷疑我們是否應該對API的模式(使用數據註釋添加驗證導致我們使用asp.net和網絡API)。
我的問題有點奇怪,但是我們應該在Api級別進行驗證,否則將被視爲重複,並且可能會導致驗證與驗證在域級別上執行的驗證不同。
有許多類型的驗證,一些驗證應該在某些圖層中完成,而其他圖層中的其他驗證應該完成。所以:
我在Aggregates
的Domain
圖層中保留核心業務規則。一個例子是the account balance can not be negative
。像email address must be valid
低級別的規則保持command's
構造函數中,也Domain layer
裏面,因爲commands
是Domain
層的一部分。
授權檢查,像owner
可以delete
自己activities
或admin
可以delete
任何activity
都在Application
層完成。
注意:這適用於以下體系結構:演示文稿(如REST端點,MVC),應用程序,域和基礎結構。
我完全同意你的看法,但是對於'構造函數'中的驗證我有點擔心,我寧願將此驗證移入工廠方法。我不會公開沒有工廠方法的構造函數 –
@WahidBitar它幾乎相同 –
你好,我回答你的問題嗎?謝謝 –