2009-09-25 167 views
1

我有一個ASP.net應用程序,它使用了我們創建的一些通用業務對象。這些業務對象也用於其他一些Windows服務或控制檯應用程序。我碰到的問題是如果我有一個類「foo」和一個類「酒吧」,並且每個都有一個函數loadClient(),如果我調用foo.loadClient()和bar.loadClient(),每個請求都會打到數據庫。我認爲實施某種緩存可以減少不必要的往返數據庫。需要C#中的中間件緩存解決方案

這裏是捕獲。我希望緩存特定於ASP.net應用中的每個HTTP請求。也就是說,新請求會獲得全新的緩存。高速緩存可以存在於其他控制檯應用程序的生命週期中,因爲其中90%是實用程序。

我知道我可以使用System.Web.Cache,但我不希望我的中間件綁定到System.Web庫。

希望能夠解釋它。任何人都可以將我指向正確的方向嗎? 謝謝!

回答

1

您是否在請求的生命週期中重複使用對象?如果不是的話,那麼你所建立的模型就表明每次回發都會創建一組新的對象,從而無需緩存。當通過請求共享對象時,緩存通常具有價值

就使用非web特定緩存解決方案而言,我發現Microsoft緩存應用程序塊非常健壯且易於使用。

+0

感謝。我會看看MS緩存應用程序塊。我們確實啓用了一些System.Web.Cache的使用。但是,我們希望從每個請求中的數據庫中提取一些內容,尤其是在中間層。如果一個請求正在執行5個不同的操作,並且這些操作中的每一個都會從數據庫加載相同的對象,我會希望從DB加載該對象一次。 我們有一組負載均衡的Web服務器,因此多次從數據庫中加載一個對象,該請求可能會加載不一致的數據。 – Jonathan 2009-09-25 21:17:20

0

如果您正在尋找進程間緩存,那麼這很困難。

但是,如果你不想讓你的中間件與System.Web綁定,那麼你可以編寫一個接口庫,作爲你的中間件和system.web之間的橋樑。

將來,如果您想將其綁定到其他緩存管理器,那麼您可以重寫您的網橋接口庫,使您的中間件完全獨立於實際的緩存管理器。