学习之路三十四:再一次重构缓存设计
距离上一篇:“学习之路十九:模仿ASP.NET的缓存依赖自定义缓存机制” 已经有很长时间了,这段时间正好在做项目优化,所以对缓存这块做了重构。
重构的内容包括:轮询+XML+特性,通过这三种方式来使得缓存变的简单。
一丶XML管理SQL
项目中DAL层可以看到到处分散的SQL语句,所以这次我统一通过XML来集中管理SQL语句,然后读取XML获取相应的SQL。
当然如果你不想每次读取,也可以把这些SQL都缓存起来,也是一个不错的选择。
示例:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <!-- 3 1. < == < 4 2. > == > 5 3. & == & 6 4. ' == ' 7 5. " == " 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是否添加了缓存特性,如果有则缓存该数据
三丶总结
这次重构的特点:让缓存数据变的更加灵活了。
如果下次有新的想法,小菜会继续重构的,加油。
以同步至:个人文章目录索引