我有一個問題,更關係到ASP.NET的工作原理,並會盡我所能解釋所以在這裏。緩存和ASP.NET
我有四個層次的體系結構,我的應用程序
- 網站(ASP.NET Web應用程序)
- 業務(類庫)
- 通用CRUD層**(類庫)
- 數據(類庫)
這是我的通用CRUD層使用反射設置和讀取對象的屬性,但我已閱讀使用PropertyInfo相當昂貴,因此想要緩存這些項目。
下面是這種情況:
兩個人訪問該網站,讓他們叫弗雷德和吉姆。 Fred創建一個Customer,然後調用Generic CRUD層並緩存System.RuntimeCache中Customer類的屬性信息。吉姆,幾秒鐘後還創建了一個客戶。
我的問題是,來自Fred和Jim的兩個請求是否會導致獲取輔助信息被觸發兩次?或者ASP.NET會第二次從緩存中檢索它,也就是說,由於屬性信息是通過緩存獲取的,所以Jim的請求更快?
我的想法是因爲我的CRUD是一個類庫並且無法訪問System.Web.Cache,所有會話/用戶都不會緩存屬性信息?
「Jim的要求更快......」但如果它來自緩存,它會是正確的嗎?如果他們共享一個緩存的客戶,它會影響嗎? – spender
不要僅僅因爲您已經閱讀使用PropertyInfo而花費相當大的代價就進行優化。等到你需要優化,然後使用分析找到瓶頸。過早優化幾乎總是浪費時間。另外,您擔心使用PropertyInfo的速度很慢,但是您的解決方案只是避免重複調用GetPropertyInfo(),但是每次執行更新時仍然會使用它,只需調用SetProperty()即可。 –
有沒有其他方法可以使用propertyinfo?我想我將運行一些診斷程序,通過大量數據收集並分析結果。*編輯只是注意到一些名爲Reflection.Emit,任何人用這個替代?* –