我一直在使用MVC框架一會兒,我真的很喜歡這些問題是如何分離出來的。我已經陷入讓控制器做很多工作的壞習慣。所以我真的在尋找一些建議。服務層和存儲庫
當我第一次開始使用MVC時,我經常讓控制器在數據庫工作完成後對模型進行操作。我知道這很糟糕,所以搬到模型中。不過,我並不滿意,因爲我希望我的模型能夠很好地學習。
我已經做了一些閱讀,我發現人們通過擁有一個服務層保持他們的控制器和模型精益,我喜歡它的外觀。
我只是想了解服務層和存儲庫應該如何一起工作。這是我的假設,你能否讓我知道這是否是一種好的工作方式?
- 控制器可以直接調用庫中,如果沒有操作需要對數據和作爲這樣一個服務層完成並不需要涉足
- 一旦任何工作需要做數據(業務邏輯),那麼這應該在服務層中完成,並且控制器將根據需要對服務層進行簡單調用
- 一旦服務完成它的業務邏輯,它就會根據需要使用存儲庫(如果數據需要堅持)。
- 理想情況下,模型應該保持精益,理想情況下只能作爲DTO使用
- 驗證數據將在模型內完成(使用MonoRail驗證屬性)。我很欣賞,即使人們喜歡用很多屬性來污染他們的模型,但這是一個不同的討論。我喜歡MonoRail的驗證屬性在UI中自動jQuery驗證的好處。
我想把我所有的代碼都轉到單責任原則,因此試圖理清我的編碼實踐。
謝謝
我有把業務邏輯模型中唯一擔心的是,通過屬性包(或不過)傳遞的模型集合時的UI,你可能開放的業務邏輯的用戶界面。 – 2008-11-28 20:43:50
我同意你的意見,我只是覺得過多的業務邏輯應該存儲在一個單獨的服務層。儘量保持您的模型,視圖和控制器儘可能小 – StevenMcD 2008-11-28 22:35:29