2011-02-16 75 views
5

爲了跟蹤工程師在業務中的RMA,我正在研究相當輕量級的客戶端應用程序(.NET中的桌面應用程序,因爲未來可能需要連接到其他應用程序),工程師將查看並更新應用程序中的狀態,客戶將在網站上創建/查看RMA。正確使用存儲庫/服務類

我想知道我預期使用的服務和存儲庫類是否正確。 Web服務提供JSON格式的數據,我可以從中構建一個RMA對象。此Web服務由http://myRMA.com/repairs/2234/RMA.JSON

訪問請問代碼來獲取RMA RMARepository類中坐在像GetRMA(int RMAId)的方法,並應遵循RMARepository Singleton設計模式?

如果RMA被更新,即Item正在檢查並等待報價接受,那麼這是在一個服務類中完成的,該服務類調用RMARepository來提交更新。 IsExists(int RMAId)會在此服務類中還是位於存儲庫中?

我熟悉演示 - 應用程序(邏輯) - 數據訪問 - 數據(數據庫)artitecture,也熟悉MVP。但我想知道Service類在哪裏適合。

+0

有效地,我知道我需要達到什麼,甚至如何實現它,但需要知道在這種建築風格中放置功能的位置。 – JonWillis 2011-02-16 11:43:02

回答

10

存儲庫類僅用於訪問和存儲數據庫中的信息。他們應該沒有其他的邏輯。

服務用於從數據源(很可能是存儲庫)獲取信息,處理信息並將結果返回給調用者。

服務類可以使用多個存儲庫來實現想要的結果。在此圖層中,您還可以擁有一個事件系統,該事件系統可以允許一個服務在另一個服務生成事件時執行操作。

一個示例是UserService調用FeedService爲每個新創建的用戶創建一個新的RSS提要項。

存儲庫層可以由ORM(例如nhibernate)表示。

+0

這是一個公平的評論,表示層中想要顯示RMA細節的控制器/演示者會調用一個服務類,該類將呼叫轉發到一個或多個存儲庫以創建所需的對象。即視圖/控制器/模型從不碰觸存儲庫類。 – JonWillis 2011-02-16 12:35:21