asp.net SAF 中緩存服務(wù)的實(shí)現(xiàn)第4/5頁
更新時(shí)間:2008年08月08日 21:28:49 作者:
對(duì)緩存的興趣源于張子陽寫的一篇文章《SAF 中緩存服務(wù)的實(shí)現(xiàn)》中的一個(gè)例子:
最后的兩個(gè)方法,GetItem()和GetList()分別用于從緩存中獲取單個(gè)或者多個(gè)對(duì)象。值得注意的是當(dāng)使用GetList()方法時(shí),Xpath應(yīng)該為到達(dá)一個(gè)組結(jié)點(diǎn)的路徑。
復(fù)制代碼 代碼如下:
// 根據(jù) XPath 獲取對(duì)象
// 先根據(jù)Xpath獲得對(duì)象的Key,然后再根據(jù)Key獲取實(shí)際對(duì)象
public virtual object GetItem(string xpath) {
object obj = null;
xpath = PrepareXPath(xpath);
XmlNode node = rootMap.SelectSingleNode(xpath);
if (node != null) {
// 獲取對(duì)象的Key
string key = node.Attributes["key"].Value;
// 獲取實(shí)際對(duì)象
obj = cacheStrategy.GetItem(key);
}
return obj;
}
// 獲取一組對(duì)象,此時(shí)xpath為一個(gè)組結(jié)點(diǎn)
public virtual object[] GetList(string xpath) {
xpath = PrepareXPath(xpath);
XmlNode group = rootMap.SelectSingleNode(xpath);
// 獲取該結(jié)點(diǎn)下的所有子結(jié)點(diǎn)(使用[@key]確保子結(jié)點(diǎn)一定包含key屬性)
XmlNodeList results = group.SelectNodes(xpath + "/*[@key]");
ArrayList objects = new ArrayList();
string key;
foreach (XmlNode result in results) {
key = result.Attributes["key"].Value;
Object obj = cacheStrategy.GetItem(key);
objects.Add(obj);
}
return (object[])objects.ToArray(typeof(object));
}
至此,SAF 的緩存服務(wù)的設(shè)計(jì)和代碼實(shí)現(xiàn)都完成了,現(xiàn)在我們來看看如何使用它。
程序測(cè)試
復(fù)制代碼 代碼如下:
static void Main(string[] args) {
CacheService.Cache cache = CacheService.Cache.Instance;
// 添加對(duì)象到緩存中
cache.AddItem("/WebApplication/Users/Xin", "customer xin");
cache.AddItem("/WebApplication/Users/Jimmy", "customer jimmy");
cache.AddItem("/WebApplication/Users/Steve", "customer other");
cache.AddItem("/WebApplication/GlobalData", "1/1/2008");
cache.AddItem("/Version", "v10120080401");
cache.AddItem("/Site", "TraceFact.Net");
// 獲取所有User
object[] objects = cache.GetList("/WebApplication/Users");
foreach (object obj in objects) {
Console.WriteLine("Customer in cache: {0}", obj.ToString());
}
// 刪除所有WebApplication下所有子孫結(jié)點(diǎn)
cache.RemoveItem("/WebApplication");
// 獲取單個(gè)對(duì)象
string time = (string)cache.GetItem("/WebApplication/GlobalData");
string name = (string)cache.GetItem("/WebApplication/Users/Xin");
Console.WriteLine("Time: {0}", time);// 輸出為空,WebApplication下所有結(jié)點(diǎn)已刪除
Console.WriteLine("User: {0}", name);// 輸出為空, WebApplication下所有結(jié)點(diǎn)已刪除
// 獲取根目錄下所有葉結(jié)點(diǎn)
objects = cache.GetList("/");
foreach (object obj in objects) {
Console.WriteLine("Object: {0}", obj.ToString());
}
Console.ReadLine();
}
輸出的結(jié)果為:
Customer in cache: customer xin
Customer in cache: customer jimmy
Customer in cache: customer other
Time:
User:
Object: v10120080401
Object: Trace
相關(guān)文章
Excel自定義關(guān)閉按鈕實(shí)現(xiàn)代碼
這篇文章主要介紹了Excel自定義關(guān)閉按鈕實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
.net開發(fā)微信公眾平臺(tái)實(shí)例教程
這篇文章主要介紹了.net開發(fā)微信公眾平臺(tái)的方法,對(duì)微信公眾平臺(tái)開發(fā)的原理與相應(yīng)的.net實(shí)現(xiàn)方法都做了較為詳細(xì)的講述,非常實(shí)用,需要的朋友可以參考下2014-10-10
.Net 調(diào)用存儲(chǔ)過程取到return的返回值
存儲(chǔ)過程只能返回 int 類型,如果返回一個(gè)字符串 ,將會(huì)報(bào)類型轉(zhuǎn)化錯(cuò)誤,下面以示例介紹下如何取到return的值,需要的朋友可以參考下2014-08-08
ASP.NET C#生成下拉列表樹實(shí)現(xiàn)代碼
下拉列表樹很方便且時(shí)尚的一個(gè)導(dǎo)航,貌似很多的朋友都想實(shí)現(xiàn)這樣一個(gè)列表樹,本文將滿足你們的設(shè)想,通過本文你們可以學(xué)到如何使用c#生成下拉列表樹,感興趣的你可不要錯(cuò)過了啊2013-02-02
ASP.NET數(shù)據(jù)綁定之DataList控件
這篇文章主要為大家介紹了ASP.NET數(shù)據(jù)綁定中的DataList控件,DataList控件以表的形式呈現(xiàn)數(shù)據(jù),通過該控件,您可以使用不同的布局來顯示數(shù)據(jù)記錄,對(duì)DataList控件感興趣的小伙伴們可以參考一下2016-01-01
ASP.NET Core 3.0輕量級(jí)角色API控制授權(quán)庫
這篇文章介紹了ASP.NET Core 3.0輕量級(jí)角色API控制授權(quán)庫,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
ASP.NET Core中如何實(shí)現(xiàn)重定向詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何實(shí)現(xiàn)重定向的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
用Html5與Asp.net MVC上傳多個(gè)文件的實(shí)現(xiàn)代碼
Html 5 的有一些File API,對(duì)Form表單增強(qiáng)的特性,讓我們輕松支持多文件上傳,看下面的Html片斷代碼2012-08-08
ASP.NET DataTable去掉重復(fù)行的2種方法
這篇文章主要介紹了ASP.NET DataTable去掉重復(fù)行的2種方法,本文直接給出去重代碼,需要的朋友可以參考下2015-02-02

