天天看點

學習之路三十四:再一次重構緩存設計

距離上一篇:“學習之路十九:模仿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是否添加了緩存特性,如果有則緩存該資料

三丶總結

  這次重構的特點:讓緩存資料變的更加靈活了。

  如果下次有新的想法,小菜會繼續重構的,加油。

以同步至:個人文章目錄索引