2012-08-24 53 views
7

根據Grails最佳實踐和MVC模式,我正在試圖決定什麼時候引入服務的正確時間,而不是保持肥育控制器。我發現它有點相互矛盾,我已經閱讀過有關最佳實踐的內容以及看似常見的做法,所以很想聽聽其他人對此的看法。不應該將Grails GORM調用放在服務中而不是控制器層中?

考慮到GORM的問題,我會預料到任何與GORM有關的事情都應該真正進入服務。雖然我自己不練習,尤其是在編寫非常基本的控制器方法(如show)時,只需在域類上執行get(),然後渲染視圖以顯示檢索到的對象的詳細信息。

但是,在遵循諸如「清潔代碼」和類似書籍之類的書籍之後,維護良好的代碼應該是內聚的,並且方法應該理想地僅執行單個任務。因此,在完美的世界中,控制器中的show方法是否只負責確定渲染視圖之前要顯示的對象?從數據庫中檢索可能進入了一種方法,這是唯一的任務是從數據庫中檢索,並拋出一個異常,如果沒有找到等

但是,是的,這確實有些看似矯枉過正數據庫。

因此,採取更進一步的步驟,create()update()方法。 Grails生成的代碼再次將所有內容放入控制器中,完全不使用服務。

那麼什麼時候推薦的要點是我們需要使用服務?只有當事務必須發生時,例如,在調用create()時,我們可能還想將記錄寫入日誌文件以保留各種審覈日誌。當然這需要一項服務?

我很想聽聽別人的感受是正確的時間來介紹服務,我想它人與人之間有很大的不同。

回答

3

我們正在創建的域類的靜態方法來封裝查詢。服務僅用於事務操作或具有多域交互的非常複雜的查詢。控制器只需調用域或服務方法。

+0

感謝您的輸入 – Dave

相關問題