欢迎来到天天文库
浏览记录
ID:35489104
大小:84.59 KB
页数:7页
时间:2019-03-25
《微软企业库50学习之路——第十步、使用unity解耦你的系统—part5——使用unity自身》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、微软企业库5.0学习之路——第十步、使用Unity解耦你的系统一PART5——使用Unity自身的拦截器作者:HeroBeast來源:博客园发布时间:2010-12-2710:16阅读:4次原文链接[收藏]在前面的金业库学习之路里我分别使用了DataAccess构建多数据库访问和使用ExceptionHandle+Logging记录系统的异常。今天我来介绍下企业库中的Caching模块在木项目屮如何应用。首先先补习下企业库的CachingApplicationBlock的相关知识:1、四大缓存方式,在CachingAp
2、plicationBlock主要提供以下四种保存缓存数据的途径,分别是:内存存储(默认)、独立存储(IsolatedStorage)>数据库存储(DataBaseCacheStorage)和自定义存储(CustomCacheStorage)。2、多种存储方式,抛开口定义存储不谈,内存存储是最基本的缓存,仅仅是将数据缓存到内存当屮,虽然速度快但是无法进行持久化存储,而独立存储和数据库存储一个是存储到木地的磁盘屮(视操作系统不同存储到不同的位置)而另一个则是存储到数据库屮(方便进行分布式缓存),所以可以进行持久化保存不会因
3、为关机阳丢失(可以到。在EntLib50SrcBlocksCachingSrcDatabaseScripts下找到脚本进行安装)3、优秀的易用性,虽然在.NET类库System.Web>
4、'lL经提供了Cache类,但是有局限性,仅可适用于控制台、Winform.Web、服务等。4、安全性,企业库中的缓存模块可以和加密模块很好的结合起來,当适用数据库缓存、独立存储或者白定义存储的时候可以适用加密模块对缓存的数据进行加密,但存储到内存当小的数据就无法进行加密了。在了解了缓存的基木知识后我们就可以开始进行具体的操
5、作了。我现在就是使用Cache模块为项目中反射具体数据库DAL层対象实例进行缓存,这样不川每次在调用底层的时候都反射一次,只需在笫1次反射后缓存,以后的访问直接从缓存中读取,提高了访问的速度。通过企业库配置工具添加个CachingSettings过期轮询时何(60秒)JR关存(looo个)超出数畳一次移除ftftdo个)这里使用默认设置,保存到内存屮,过期轮询时间,最人存储数最和移除数最都使用了默认的设置。如果不想使用默认的内存存储可以建立独立存储或者数据库存储。这里有个要提的就是企业库的缓存模块的数据库存储是使用存储
6、过程来进行缓存与数据库Z间的交互,但是本项目中使用了多数据库,如Sqlite,就无法支持存储过程,所以这边需要自定义存储方式,可以直接查看企业库代码中Cache.DataBase.DataBackingStore.cs类,仿照DataBackingStore类自定义一个存储方式,只不过在进行数据库交互的时候使用SQL语句进行。继续回到主题上,我这边写了一个简单的CacheHelper,用以操作缓存,其中我自定义了一个缓存刷新操作类(此类必须为可序列化),用于将己经过期的对彖重新加入到缓存当中,代码如下:usingSys
7、tem;usingSystem.Collections・Generic;usingSystem.Linq;usingSystem.Text;usingMicrosoft.Practices.EnterpriseLibrary.Caching;usingMicrosoft.Practices.EnterpriseLibrary.Caching.Expirations;usingMicrosoft.Practices.EnterpriseLibrary.Common.Configuration;namespaceEntLi
8、bStudy.Helper{publicstaticclassCacheHelper{112种建立CacheManager的方式//ICacheManagercache=EnterpriseLibraryContainer.Current.GetInstance();privatestaticICacheManagercache=CacheFactory.GetCacheManager();///III添加缓存//////9、n>M////param>///&否屁ij新v/param>publicstaticvoidAdd(stringkey,objectvalue,boolisRefresh=false){if(isRefresh){//口定义刷新方式
9、n>M////param>///&否屁ij新v/param>publicstaticvoidAdd(stringkey,objectvalue,boolisRefresh=false){if(isRefresh){//口定义刷新方式
此文档下载收益归作者所有