2011-04-25 62 views
0

我們目前使用企業庫策略注入在我們的數據訪問存儲庫上進行緩存,例如EntLib PolicyInjection的替換建議

公共接口IClientStatusRepository { [CachingCallHandler(24,0,0)] 的IList GETALL(); }

var clientStatusRepository = PolicyInjection.Wrap(new ClientStatusRepository());

這對我們很好,因爲它的聲明性,並且絕對沒有涉及任何配置文件。它也隱藏在我們自己的工廠模式後面,因此很容易替換。

我們已經開始尋找替代解決方案。尋找替代品的主要原因是我們意識到我們需要改變它目前從asp.net緩存中過期的內容。另外,我們希望引入分佈式緩存(MemCached或AppFabric),並希望能夠從緩存中聲明性地驅逐對象。任何人都可以提出一些他們理想地使用分佈式緩存的替代方案。如果解決方案需要每個類的配置,它將被自動排除。方面必須在代碼中聲明。

感謝

克雷格

回答

1

寫作調用句柄是相當簡單的。作爲示例,您也有緩存呼叫處理程序源。編寫一個調用您想要使用的緩存系統的自定義調用處理程序。

請注意,這種緩存行爲比看起來更難,Entlib處理程序製作了足夠的錯誤,我們只是爲了Entlib 5而不是嘗試修復它。特別是,它會泄漏Web中用戶的結果項目,因爲緩存是每個應用程序。並且在任意類型的任意參數面前智能地形成一個緩存鍵並不是一個簡單的問題。