Microsoft Enterprise Library---解读Cache之开篇

 

 最近深入的阅读了P&PCache应用程序块,收获颇多。便写下笔记。以便日后查阅。

首先。为什么会有这个应用程序块呢?NET FRAMEWORK中不是已经有了Cache这个类么?我也是经常用到这个类,以便优化程序性能。其实我觉得还是蛮好用的。那么它有哪些不如意的地方呢?

第一: 在一个应用程序域中,只能有一个Cache实例,粒度比较大。

第二:Cache的过期策略无法控制,你根本就知道Cache会过多常时间扫描一次已经到期的项目,对过期非常敏感的Cache项,可能会出现你不期望出现的局面。而且过期方式太单一,除了绝对时间,相对时间,文件依赖外,再无其他办法设置过期!而且你无法扩展此过期。。。

第三:你无法控制Cache的大小,项数的控制,如果在一个系统中由多人开发,如果没有一个Cache包装类,由大家统一调用。否则可能在系统运营的时候,出现CACHE狂占内存的现象,而你却不得不硬着头皮将系统中所有的涉及到CACHE的代码查一遍。

第三:Cache来源单一,就是说Cache的数据提供者必须是使用者提供的数据,没有为CacheCache的数据。

第四:在系统运行过程中,你无从得知Cache的状态。仅仅只能自己写代码调用Cache的项数,Cache中存在的项。

综上所述,FrameWork类库的Cache有诸多缺点,对于一些小的应用来讲,已经是绰绰有余了,但是对于那些需要可配置的,高性能,高扩展性的企业级的应用程序来讲,其功能确实不够,你不得不对Cache进行一次包装。这都好说。最可怕是你无法对Cache无法进行扩展。比如到期。除了上述的三种方式外。你别无选择!

 

当然有问题当然就有解决的方法。P&PCache应用块就是为了解决这些问题,为开发者提供了一个一个统一的,可配置的,有良好扩展性的Cache程序包。

第一:应用程序可以通过配置数据生成N个不同的Cache。对每一个Cache来讲,你可以配置后台存储,可以配置此Cache扫描过期的时间间隔,配置Cache最多可以容纳多少项。并且在超过限定项后将清除多少项条目。(个人觉得如果能够配置Cache最多共占有多少内存单元就好了,不过这个实现可能太难了。。。。。。)

第二:丰富的过期方式,应用块除了上述三种过期方式外,还提供了一个ExtendedFormatTime,这个过期还是有点趣味,比如:可以定义Cache在每周的星期三的12点过期等等。。而且只要实现了ICacheItemExpiration这个接口,就可以定义自己的过期方式了!

第三:Cache提供了Cache数据的后台存储,已经有是说:你可以将Cache对象存入到储存器中,在Cache初始化时,一并将它们导入供系统调用。我以前理解的是Cache的存储。就像Session一样,可以放在内存中,也可以放在数据库中。而这个后台存储却是Cache的最初来源数据,它必在内存中存储一份。想想也是,如果不把Cache的数据放在内存中,那使用Cache还有什么意义呢?呵

第四:Cache在系统运行中的可控制性大大加强,这些功能被统称为CacheService ,你可以在应用程序中注册事件来调用Cache的状态,你甚至还可以在Windows的性能计数器中监控它的状态。比如它的使用率,当前实体数等等。一句话,强!

 

后语:在使用NET开发应用程序的过程中,如果只是小程序,用FRAMEWORK类库可能已经有余,但是如果是开发企业级的应用程序,.NET 确实还有很多事要做。。特别是与JAVA在应用域竞争的今天。其结果不在于构架有多么多么的先进,性能有多么多么的卓越,而是谁的这些中间件类库最丰富,功能最强大。使用最贴合我们实际。也许NET程序员习惯于向MICROSOFT觅食,他提供什么,就使用什么。自己从来没有把一些东东重复的做了N次的东东总结,抽象出来。。。唉。沉思中。。。。。。

 

C/C++程序员 做饭吃。Java程序员 抢饭吃。NET程序员 等饭吃。。。。。。悲剧

posted @ 2005-08-03 22:59  Zhongkeruanjian  阅读(3032)  评论(7编辑  收藏  举报