最近做一个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下用了.
  如果其他朋友有好的办法或方法,多指教.
posted on 2005-01-08 10:29  Brook.Peng  阅读(3071)  评论(8编辑  收藏  举报