博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)
阅读量:6316 次
发布时间:2019-06-22

本文共 3294 字,大约阅读时间需要 10 分钟。

在写完与之后,觉得程序还是有可以优化的地方,在我中也提到了cache,所以今天这一篇主要把cache加入到项目中来,以便最大程度上提高程序的性能。

1      ///  2         /// 从文件中反序列化到实体 3         ///  4         ///  5         ///  6         private IConfiger LoadConfigFile(string fileName, Type type) 7         { 8             this.configType = type; 9             fileChangeTime[fileName] = File.GetLastWriteTime(fileName);10             return ConfigSerialize.DeserializeInfo(fileName, this.configType);11         }12         /// 13         /// 加载配置文14         /// 15         /// 文件名16         /// ʵ实体类型17         /// 
18 internal IConfiger LoadConfig(string fileName, Type type)19 {20 return LoadConfig(fileName, type, true);21 }22 23 /// 24 /// 加载配置文件25 /// 26 /// 文件名27 /// 实体类型28 /// 是否要从缓存读取29 ///
30 internal IConfiger LoadConfig(string fileName, Type type, bool isCache)31 {32 if (!isCache)33 return LoadConfigFile(fileName, type);34 lock (lockHelper)35 {36 if (DataCache.GetCache(fileName) == null)37 DataCache.SetCache(fileName, LoadConfigFile(fileName, type));38 DateTime newfileChangeTime = File.GetLastWriteTime(fileName);39 if (!newfileChangeTime.Equals(fileChangeTime[fileName]))40 {41 DataCache.SetCache(fileName, LoadConfigFile(fileName, type));42 return LoadConfigFile(fileName, type);43 }44 else45 {46 return DataCache.GetCache(fileName) as IConfiger;47 }48 }49 }

实事上,使用cache使用的流程是:如果cache里没有文件的缓存,就向从文件缓存到cache,再判断是否文件被修改过,如果没有直接返回cache中的实体配置信息,如果文件已经被修改,就从文件中取回,并同时存入缓存。

以下是.net cache的操作功能类代码:

1 namespace ConfigCache 2 { 3     public class DataCache 4     { 5         ///  6         /// 得到cache键所对应的值 7         ///  8         ///  9         /// 
10 public static object GetCache(string CacheKey)11 {12 System.Web.Caching.Cache objCache = HttpRuntime.Cache;13 return objCache[CacheKey];14 }15 /// 16 /// 将指定值设置到cache键上17 /// 18 /// 键19 /// 值20 public static void SetCache(string CacheKey, object objObject)21 {22 System.Web.Caching.Cache objCache = HttpRuntime.Cache;23 objCache.Insert(CacheKey, objObject);24 }25 /// 26 /// 将指定值设置到cache键上27 /// 28 /// 键29 /// 值30 /// 绝对过期时间31 /// 相对过期时间32 public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)33 {34 System.Web.Caching.Cache objCache = HttpRuntime.Cache;35 objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);36 }37 38 /// 39 /// 移除指定cache键40 /// 41 /// 42 public static void RemoveCache(string CacheKey)43 {44 System.Web.Caching.Cache objCache = HttpRuntime.Cache;45 objCache.Remove(CacheKey);46 47 }48 49 }   }

这下子,应该有的都有了,业务分别了,性能也上去了,咱们的服务型配置文件的实现也就讲完了,呵呵,各位晚安了!

 

相关文章:

转载地址:http://gekaa.baihongyu.com/

你可能感兴趣的文章
apache中文url日志分析--php十六进制字符串转换
查看>>
浅谈代理
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
Spring.Net+WCF实现分布式事务
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>