好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

全局配置文件也面向服务了~再续(引入Cache机制)

全局配置文件也面向服务了~再续(引入Cache机制)

在写完 面向服务架构~全局配置文件也面向服务了 与 面向服务架构~全局配置文件也面向服务了~续(对性能的优化) 之后,觉得程序还是有可以优化的地方,在我 上一篇文章 中也提到了cache,所以今天这一篇主要把cache加入到项目中来,以便最大程度上提高程序的性能。

  1        ///   <summary> 
  2           ///   从文件中反序列化到实体
   3           ///   </summary> 
  4           ///   <param name="fileName"></param> 
  5           ///   <param name="type"></param> 
  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           ///   <summary> 
 13           ///    加载配置文 
  14           ///   </summary> 
 15           ///   <param name="fileName">  文件名  </param> 
 16           ///   <param name="type">  ?  实体类型    </param> 
 17           ///   <returns></returns> 
 18           internal  IConfiger LoadConfig( string   fileName, Type type)
  19           {
  20               return  LoadConfig(fileName, type,  true  );
  21           }
  22  
 23           ///   <summary> 
 24           ///   加载配置文件
  25           ///   </summary> 
 26           ///   <param name="fileName">  文件名  </param> 
 27           ///   <param name="type"> 实体类型   </param> 
 28           ///   <param name="isCache">  是否要从缓存读取  </param> 
 29           ///   <returns></returns> 
 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                   else 
 45                   {
  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           ///   <summary> 
  6           ///   得到cache键所对应的值
   7           ///   </summary> 
  8           ///   <param name="CacheKey"></param> 
  9           ///   <returns></returns> 
 10           public   static   object  GetCache( string   CacheKey)
  11           {
  12              System.Web.Caching.Cache objCache =  HttpRuntime.Cache;
  13               return   objCache[CacheKey];
  14           }
  15           ///   <summary> 
 16           ///   将指定值设置到cache键上
  17           ///   </summary> 
 18           ///   <param name="CacheKey">  键  </param> 
 19           ///   <param name="objObject">  值  </param> 
 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           ///   <summary> 
 26           ///    将指定值设置到cache键上
  27           ///   </summary> 
 28           ///   <param name="CacheKey">  键  </param> 
 29           ///   <param name="objObject">  值  </param> 
 30           ///   <param name="absoluteExpiration">  绝对过期时间  </param> 
 31           ///   <param name="slidingExpiration">  相对过期时间  </param> 
 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           ///   <summary> 
 39           ///   移除指定cache键
  40           ///   </summary> 
 41           ///   <param name="CacheKey"></param> 
 42           public   static   void  RemoveCache( string   CacheKey)
  43           {
  44              System.Web.Caching.Cache objCache =  HttpRuntime.Cache;
  45               objCache.Remove(CacheKey);
  46  
 47           }
  48  
 49      }
  }

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

相关文章:

面向服务架构~全局配置文件也面向服务了

面向服务架构~全局配置文件也面向服务了~续(对性能的优化)

面向服务架构~全局配置文件也面向服务了~再续(引入Cache机制)

 

分类:  C# ,  面向服务

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于全局配置文件也面向服务了~再续(引入Cache机制)的详细内容...

  阅读:43次