Web應用在業務層實現資料緩衝
來源:互聯網
上載者:User
最近做一個Web項目,用了許多自訂的資料,其中一部分是儲存在XML檔案中,一部分是儲存在資料庫,這些資料當系統正式使用後,其實都不會變化很頻繁,卻使用得很頻繁,一個很自然的想法就是把這些資料放到Cache中,這樣能很大提高效率.但是卻很久沒找到在業務層使用Cache的方法,憂鬱.在業務層使用了單件模式,將要緩衝的資料放到一個ArrayList中,使用時,如果ArrayList中資料為空白它重新去取資料,並提供一個清除它的方法,在Web層中要使用這些資料的頁面都建立基於依賴設定檔的Cache,並提供一個回呼函數,當設定檔改變時,清除ArraryList的資料,再重新建立一次Cache(原來的Cache已經失效,如果想下次還有效,只有再建立一次).很明顯,這樣做很變態,不但破壞了原來簡明的結構,還加多了工作量.不爽.幸好,不負有心人,讓我終於找到了.對於在Asp.Net環境下使用的組件,可以用System.Web.HttpRuntime.Cache來訪問Cache ,有了這個,一切都好辦了,把Cache建立直接移到業務就是了.
可惜的是日前存在資料庫的資料沒辦法通過使用這種方法來緩衝(當然是可以通過單件模式以及輔助的方法來提高一點效率,但很彆扭),在1.X下Cache只提供基於時間,關鍵字,檔案建立依賴性,好訊息是在2.0已經提供基於資料庫來建立Cache依賴性,熱切地期盼VS2005!
另外,System.Web.HttpRuntime.AppDomainAppVirtualPath是可以找到當前應用的虛擬目錄的,System.Web.HttpContext.Current 與頁面背景Page.Context是等價的,有許多情況下應該也是很有用.但同樣,如果在底層使用了這些方法,增加了組件之間的耦合,而且這些組件也只能放在Web下用了.
如果其他朋友有好的辦法或方法,多指教.