学习之路三十四:再一次重构缓存设计

距离上一篇:“学习之路十九:模仿ASP.NET的缓存依赖自定义缓存机制” 已经有很长时间了,这段时间正好在做项目优化,所以对缓存这块做了重构。

重构的内容包括:轮询+XML+特性,通过这三种方式来使得缓存变的简单。

一丶XML管理SQL

  项目中DAL层可以看到到处分散的SQL语句,所以这次我统一通过XML来集中管理SQL语句,然后读取XML获取相应的SQL。

  当然如果你不想每次读取,也可以把这些SQL都缓存起来,也是一个不错的选择。

  示例:

  1 <?xml version="1.0" encoding="utf-8" ?>
  2 <!--
  3     1. &lt;      ==    < 
  4     2. &gt;     ==    >
  5     3. &amp;   ==   &
  6     4. &apos;  ==    '
  7     5. &quot;  ==    "
  8 -->
  9 <CacheSQL>
 10   <PC>
 11         //对应的SQL -- 通过节点读取对应的SQL 18   </PC>
 35   <ICON>
 36         //对应的SQL
 37   </ICON>
193 </CacheSQL>

 

二丶通过Attribute来标记该数据需要缓存

  通过自定义特性来灵活控制该数据时候要缓存。

 1     [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
 2     public class CacheAttribute : Attribute
 3     {
 4         private bool _isCache = true;
 5 
 6         public CacheAttribute(bool isCache)
 7         {
 8             _isCache = isCache;
 9         }
10 
11         public bool IsCache
12         {
13             get { return _isCache; }
14         }
15     }
16 
17     public enum CacheType
18     {
19         [Cache(true)]
20         Tax = 0,
21         [Cache(true)]
22         ProductClass = 1,
70     }

  那么我就可以在程序启动的时候去检查每个Type是否添加了缓存特性,如果有则缓存该数据

 

三丶总结

  这次重构的特点:让缓存数据变的更加灵活了。

  如果下次有新的想法,小菜会继续重构的,加油。

 

以同步至:个人文章目录索引 

posted @ 2013-08-17 14:33  TimYang  阅读(467)  评论(0编辑  收藏  举报