20
A
回答
16
我將處理它的庫/數據訪問層英寸理由是因爲它不符合業務層從何處獲取數據,這是存儲庫的工作。然後,存儲庫將根據數據訪問邏輯的情況決定從何處獲取數據,緩存(如果不是太舊)或從實時數據源獲取數據。
這不僅僅是一個業務邏輯問題,而是數據訪問問題。
35
不要將緩存邏輯直接放入您的存儲庫,因爲這違反了單一責任原則(SRP)和分離關注點。 SRP基本上規定你的課只能有一個改變的理由。如果您將數據訪問和緩存策略的問題混淆在同一個類中,那麼如果需要更改這兩者中的任何一個,則需要觸摸該類。您也可能會發現您違反了DRY原則,因爲很容易將緩存邏輯分散到許多不同的存儲庫方法中,並且如果需要更改其中的任何一種,則最終不得不更改許多方法。
更好的方法是使用Proxy或Strategy模式將緩存邏輯應用於單獨的類型,例如CachedRepository,然後在緩存爲空時根據需要使用實際的以數據庫爲中心的存儲庫。我寫這演示如何實現這一點使用.NET/C#,其中你會發現我的博客,這裏的兩篇文章:
- http://ardalis.com/introducing-the-cachedrepository-pattern
- http://ardalis.com/building-a-cachedrepository-via-strategy-pattern
如果你喜歡的視頻,我還描述了模式在Pluralsight的代理設計模式,在這裏:
相關問題
- 1. 存儲庫模式
- 2. 存儲庫模式和存儲過程
- 3. 存儲庫模式和Azure表存儲(???)
- 4. 存儲過程的存儲庫模式
- 5. 存儲庫模式和Azure表存儲
- 6. MVC存儲庫模式查詢緩存問題
- 7. ASP.NET存儲庫模式/服務層緩存
- 8. 使用存儲庫模式實體框架緩存
- 9. 使用存儲庫模式
- 10. EF和存儲庫模式
- 11. 存儲庫模式與STE
- 12. 存儲庫模式問題
- 13. 通用存儲庫模式
- 14. 存儲庫模式問題
- 15. Linq2Sql存儲庫模式
- 16. 存儲庫模式MVC4 EF5
- 17. 存儲庫模式問題
- 18. 存儲庫模式與ORM
- 19. 瞭解存儲庫模式
- 20. NHibernate存儲庫模式
- 21. 存儲庫模式變化?
- 22. 存儲庫模式混淆
- 23. LLBLGen和存儲庫模式
- 24. 存儲庫模式與存儲庫工廠
- 25. 存儲庫模式繼續 - 類方法或存儲庫方法?
- 26. 存儲庫:C#中裝飾器/存儲庫模式的示例#
- 27. 存儲庫模式中的共享存儲庫
- 28. 無法從存儲庫轉換爲IRepository UOW存儲庫模式
- 29. c#存儲庫模式:每個子類有一個存儲庫?
- 30. 存儲庫模式和DAL沒有存儲庫模式的DAL中的區別?
感謝您的回答! 我認爲實現延遲加載也更好。 – Beni 2010-08-09 17:04:57