2011-03-30 54 views
1

我的場景是:WebApp -> WCF Service -> EDMX -> Oracle DB如何使用緩存來提高性能?

當我想綁定網格我從Oracle DB使用EDMX,即LINQ查詢獲取記錄。但是,這會降低性能,因爲在Oracle數據庫的WebApp &之間會發生多個層次。我可以使用緩存機制來提高性能嗎?但據我所知,緩存是在整個應用程序中共享的。所以,如果我更新緩存其他用戶可能會收到錯誤的信息。我們可以使用每個用戶的緩存嗎?或者還有其他方法來提高應用程序的性能嗎?

回答

1

是的,您絕對可以使用緩存技術來提高性能。一般來說,緩存是「應用程序範圍」(或應該是),並且所有用戶都可以使用相同的數據。但這實際上取決於你的場景和實施。我沒有看到如何添加額外的緩存層會降低性能,這是一個健全的架構,非常值得額外的複雜性。

ASP.NET緩存具有「緩存依賴性」的概念,這是一種通知緩存機制底層源發生更改的方法,緩存的數據應在下一個請求中刷新並重新加載。 ASP.NET對SQL Server有一個內置的緩存依賴關係,並且a quick Google search顯示有可能還有一些您可以use with Oracle

0

正如Jakob所提到的,應用程序範圍的緩存是提高性能的好方法。通常,用戶上下文不可知的數據(例如參考數據)可以在應用程序級緩存。

您還可以通過在用戶會話中登錄數據時存儲數據來緩存用戶上下文數據。然後,可以在該用戶會話期間緩存數據(HttpContext.Session) 可以將會話數據配置爲存儲在Web應用程序進程內存,狀態服務器(特殊WCF服務)或SQL Server數據庫中,這取決於架構和基礎設施。