2014-10-18 46 views
0

我早先開發了一個公開一組RESTful服務的應用程序。我設計的業務邏輯實現類和相應的存儲庫類完全無狀態,並且每次有客戶請求時都會實例化。現在我正在開發另一個應用程序,只有很少的RESTful服務。在這種情況下,其中一個服務會從某些其他外部服務獲取數據,並需要將該數據緩存一段時間。我正在考慮將這些數據緩存在我的應用程序數據庫中,並通過創建一個新的業務類對象爲每個請求提供它。但在這裏我有一個疑問 - 這是正確的設計?我應該創建業務邏輯類singleton並維護狀態(即緩存數據在內存中)嗎?REST風格的服務設計 - 單身服務?

請分享您的想法。

謝謝

+0

爲什麼你必須首先緩存這個信息'一段時間? – Sebas 2014-10-18 05:02:55

+0

@ Sebas:我們不想經常打電話給外部服務,因爲我們知道需要時間來生成這些數據,我們的客戶需要非常頻繁地使用這些信息。順便說一句,如果你投下了這個票,你能告訴我爲什麼嗎? – 2014-10-18 13:26:49

回答

0

經過一番文學研究,我得出結論說單身人士課程沒有錯。 RESTful服務只是外部世界的資源接口,但它們如何管理完全是內部的。此外,我意識到不需要將數據傳輸對象(即接收請求和發送響應)的端到端映射到數據庫列。在很多情況下,我的DTO映射到映射到數據庫表的模型對象,但我也設計了不同的三個項目。

0

我會使用web服務器級緩存來代替。在asp.net中,您可以使用緩存對象,由內存或您選擇的外部緩存提供程序支持。

+0

感謝您的回覆。我將使用OWIN作爲Windows服務託管此服務,而我對ASP.Net(及其相關的Cache對象)完全陌生。所以,我不確定我是否可以使用來自ASP.Net的緩存設施,但我會檢查。檢查我是否遇到過https://github.com/filipw/AspNetWebApi-OutputCache/。它看起來很有希望,但我的問題是我需要緩存一部分響應,但不是整個響應。任何指針? – 2014-10-18 13:40:03