面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)
2012-06-14 23:14
417 查看
在写完面向服务架构~全局配置文件也面向服务了与面向服务架构~全局配置文件也面向服务了~续(对性能的优化)之后,觉得程序还是有可以优化的地方,在我上一篇文章中也提到了cache,所以今天这一篇主要把cache加入到项目中来,以便最大程度上提高程序的性能。
实事上,使用cache使用的流程是:如果cache里没有文件的缓存,就向从文件缓存到cache,再判断是否文件被修改过,如果没有直接返回cache中的实体配置信息,如果文件已经被修改,就从文件中取回,并同时存入缓存。
以下是.net cache的操作功能类代码:
这下子,应该有的都有了,业务分别了,性能也上去了,咱们的服务型配置文件的实现也就讲完了,呵呵,各位晚安了!
面向服务架构~全局配置文件也面向服务了~续(对性能的优化)
面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)
1 /// <summary> /// 从文件中反序列化到实体 /// </summary> /// <param name="fileName"></param> /// <param name="type"></param> private IConfiger LoadConfigFile(string fileName, Type type) { this.configType = type; fileChangeTime[fileName] = File.GetLastWriteTime(fileName); return ConfigSerialize.DeserializeInfo(fileName, this.configType); } /// <summary> /// 加载配置文 /// </summary> /// <param name="fileName">文件名</param> /// <param name="type">ʵ实体类型</param> /// <returns></returns> internal IConfiger LoadConfig(string fileName, Type type) { return LoadConfig(fileName, type, true); } /// <summary> /// 加载配置文件 /// </summary> /// <param name="fileName">文件名</param> /// <param name="type">实体类型</param> /// <param name="isCache">是否要从缓存读取</param> /// <returns></returns> internal IConfiger LoadConfig(string fileName, Type type, bool isCache) { if (!isCache) return LoadConfigFile(fileName, type); lock (lockHelper) { if (DataCache.GetCache(fileName) == null) DataCache.SetCache(fileName, LoadConfigFile(fileName, type)); DateTime newfileChangeTime = File.GetLastWriteTime(fileName); if (!newfileChangeTime.Equals(fileChangeTime[fileName])) { DataCache.SetCache(fileName, LoadConfigFile(fileName, type)); return LoadConfigFile(fileName, type); } else { return DataCache.GetCache(fileName) as IConfiger; } } }
实事上,使用cache使用的流程是:如果cache里没有文件的缓存,就向从文件缓存到cache,再判断是否文件被修改过,如果没有直接返回cache中的实体配置信息,如果文件已经被修改,就从文件中取回,并同时存入缓存。
以下是.net cache的操作功能类代码:
namespace ConfigCache { public class DataCache { /// <summary> /// 得到cache键所对应的值 /// </summary> /// <param name="CacheKey"></param> /// <returns></returns> public static object GetCache(string CacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache[CacheKey]; } /// <summary> /// 将指定值设置到cache键上 /// </summary> /// <param name="CacheKey">键</param> /// <param name="objObject">值</param> public static void SetCache(string CacheKey, object objObject) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject); } /// <summary> /// 将指定值设置到cache键上 /// </summary> /// <param name="CacheKey">键</param> /// <param name="objObject">值</param> /// <param name="absoluteExpiration">绝对过期时间</param> /// <param name="slidingExpiration">相对过期时间</param> public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration); } /// <summary> /// 移除指定cache键 /// </summary> /// <param name="CacheKey"></param> public static void RemoveCache(string CacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Remove(CacheKey); } } }
这下子,应该有的都有了,业务分别了,性能也上去了,咱们的服务型配置文件的实现也就讲完了,呵呵,各位晚安了!
相关文章:
面向服务架构~全局配置文件也面向服务了面向服务架构~全局配置文件也面向服务了~续(对性能的优化)
面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)
相关文章推荐
- 全局配置文件也面向服务了~再续(引入Cache机制)
- 面向服务架构~全局配置文件也面向服务了
- 面向服务架构~全局配置文件也面向服务了~续(对性能的优化)
- 全局配置文件也面向服务了~续(对性能的优化)
- 全局配置文件也面向服务了
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- MyBatis之全局配置文件(Configuration XML)之引入外部配置文件(properties)
- NDK入门教程之配置环境,Hello-JNI,批量处理,多编译文件,面向多CPU架构
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- LNMP架构应用实战——Nginx服务配置文件介绍
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- mybatis--全局配置文件详解
- 面向服务架构(SOA)的原则
- Linux 内核的文件 Cache 管理机制介绍
- mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
- Spring AOP基于配置文件的面向方法的切面
- Linux 内核的文件 Cache 管理机制介绍
- 第十五篇 Android 的Backup服务管理机制与架构分析