我在設計我的應用程序,並且使用了Doctrine 2和Zend Framework。使用Doctrine 2和存儲庫,服務層的目的是什麼?
目前,我已經寫了所有的實體,我將開始編寫存儲庫,而且我關於服務,我想知道我的服務層是否不會重複存儲庫。
當我使用Doctrine 2知識庫時,是否值得編寫一個服務層?
但是,我在這裏和那裏讀到一個服務層可以用來做緩存例如。
你有沒有實現的例子?
我在設計我的應用程序,並且使用了Doctrine 2和Zend Framework。使用Doctrine 2和存儲庫,服務層的目的是什麼?
目前,我已經寫了所有的實體,我將開始編寫存儲庫,而且我關於服務,我想知道我的服務層是否不會重複存儲庫。
當我使用Doctrine 2知識庫時,是否值得編寫一個服務層?
但是,我在這裏和那裏讀到一個服務層可以用來做緩存例如。
你有沒有實現的例子?
存儲庫和服務之間的區別在於,我讓我的服務接受數據數組以更新,創建等。IIRC,真正的存儲庫應該只處理域對象。例如,您可以做的另一件事是使用您的服務層來處理產品縮略圖的生成,配置文件圖片或緩存等。關鍵是服務與處理Doctrine實體並不嚴格相關。
我仍然使用自定義存儲庫作爲所有我的自定義查詢的容器,而不是;這會在我的服務課程中消耗,偶爾會直接在我的控制器中消耗。儘管我使用我的服務進行序列化(用於JSON響應)。
還有一個小小的灰色地帶,應該在哪裏,你只需要感受一下。在一天結束時:如果你離開了服務層並把這個邏輯放到你的倉庫中,那麼維護和可擴展性方面的工作就不會那麼多了,對於階級責任的定義就更少了。
這是非常多的。通常情況下,您可以將任何自定義DQL查詢作爲方法放入存儲庫中。然後,將任何其他邏輯放入服務中。通常情況下,您將投入服務的內容寫入ZF的控制器操作中,因此實際上取決於您是否需要分離。特別有用。如果你發現自己在你的控制器中重複了邏輯 - 那麼它常常是需要爲它服務的標誌。 – 2011-04-30 22:16:01
好的,謝謝你的回答,錯誤處理怎麼辦,我們應該在這樣的體系結構中處理異常? – JohnT 2011-05-04 11:55:53
'問題是,他們實際上嚴格地與使用學說相關'什麼是嚴格的?庫? – 2012-03-17 06:36:29
我一直在尋找適當的(服務層,存儲庫與教條2和ZF)實施例很長一段時間。
這個例子,我發現最好的,應該可以幫助你在工作中
https://github.com/epixa/Forum/tree/master/application/user/src
一兩件事,http://martinfowler.com/eaaCatalog/serviceLayer.html這將有助於瞭解服務層的理論部分
你還需要在服務層的更多信息? – Cobby 2011-05-04 02:36:10