ASP.NET企業開發架構IsLine FrameWork系列之十一–HttpContentProvider 訪問緩衝

來源:互聯網
上載者:User

  今天我們來介紹 IsLine.HttpContent.HttpContentProvider命名空間:

  這個Provider主要封裝了對緩衝、Session與Cooike的操作,該空間下主要有三個類:CookieProvider、SessionProvider、CacheProvider。

  關於約束

  這三個類庫統一實現ICapability介面,ICapability繼承自IBaseCapability介面,IBaseCapability規範了HttpContentProvider的基礎能力,而ICapability則是對基礎能力的擴充,如下:

 

代碼

namespace IsLine.HttpContent.HttpContentProvider

{

public interface IBaseCapability

{

bool Remove(string Name);

bool IsExit(string Name);

}

public interface ICapability : IBaseCapability

{

object GetContent(string Name);

bool UpdateContent(string Name, object value);

}

}

 

  可以看出,介面主要約束了如何刪除、獲得與更新一個對象,即約束了Session、Cookie、Cache的行為。

  CacheProvider類

  首先來看看有關Cache的操作,CacheProvider支援.Net兩種類型的Cache:運行時Cache(HttpRuntime.Cache)與上下文Cache(HttpContext.Current.Cache),這兩種Cache有什麼區別呢?這裡簡單的解釋一下:

  HttpRuntime.Cache是Application層級的,而HttpContext.Current.Cache是僅對當前WEB頁面請求才有效。換句話說,HttpRuntime Cache所有的web與非web程式都可以調用,而HttpContext則只能用在WEB中。

  緩衝中的資料是易失的,資料並不是在整個應用程式生命週期中都儲存在記憶體中,由 ASP.NET 管理緩衝,它會在項到期、無效、或記憶體不足時移除緩衝中的項。還可以配置應用程式緩衝,以便在移除項時通知應用程式。所以,你並不知道緩衝在什麼時候會失效,即使你已經配置了依賴項。

  關於緩衝的到期有2種類型:

到期類型

說明

滑動視窗

指定某項自上次被訪問後多長時間到期。

絕對到期

指定某項在設定的時間到期,而不考慮訪問頻率。

    可以將緩衝中某一項的生存期配置為依賴於其他應用程式元素,如某個檔案或資料庫。當快取項目依賴的元素更改時,ASP.NET 將從緩衝中移除該項。

CacheProvider類支援以下2種依賴:

說明

檔案依賴項

緩衝中的項依賴於外部檔案。如果該檔案被修改或刪除,則快取項目也會被移除。

SQL 依賴項

緩衝中的項依賴於 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 資料庫中表的更改。對於 SQL Server 2005,緩衝中的項可依賴於表中的某一行。

 

  使用CacheProvider中的方法

方法

說明

CacheProvider()

建構函式

CacheProvider(string cacheName)

建構函式,參數指明了需要操作的緩衝名稱

CacheProvider(CacheType useCacheType, string cacheName, CacheDependencyType cdt,object depend)

建構函式,CacheType指明緩衝類型,可以是運行時或上下文Cache,預設為運行時Cache;cacheName為需要操作的緩衝名稱;CacheDependencyType為依賴項類型,可以是sql或檔案;

depend為具體依賴項

Object GetContent()

獲得預設緩衝內容

Object GetContent(string Name)

獲得緩衝內容,參數指明了需要操作的緩衝名稱

Bool UpdateContent(object o)

更新或建立預設緩衝內容

Bool UpdateContent(string Name,object o)

更新或建立緩衝內容,參數指明了需要操作的緩衝名稱

bool Remove()

移除預設緩衝

bool Remove(string Name)

移除緩衝,參數指明了需要操作的緩衝名稱

bool IsExit()

判斷預設緩衝是否存在

bool IsExit(string Name)

判斷緩衝是否存在,參數指明了需要操作的緩衝名稱

 

    緩衝依賴項可以以參數方式統一傳入,這樣方便了開發人員。SQL緩衝只針對SQL SERVER資料庫有效,指定使用檔案快取還是資料庫緩衝,可以通過CacheDependencyType參數達到目的,CacheDependencyType是一個枚舉值,在IsLine.HttpContent.HCDataTypeEnum命名空間下,IsLine.HttpContent.HCDataTypeEnum命名空間:

 

代碼

namespace IsLine.HttpContent.HCDataTypeEnum

{

public enum DateType

{

Days,

Hours,

Years,

Minutes

}


public enum CacheType

{

HttpRuntime,

HttpContext

}



public enum CacheDependencyType

{

Sql,

File,

None

}



public enum RemoveType

{

RemoveInput,

RemoveAllExcludeInput

}

}

 

 

    需要注意的是,即使使用CacheProvider(string cacheName)指明了需要操作的Cache,但是如果後面的代碼中,執行個體調用的方法中包含其他Cache的名稱,那麼以後使用不帶Cache名稱參數的方法時,將會操作那個新的Cache,而忽略建構函式中指明的Cache。

例如:

CacheProvider cp = new CacheProvider(“A”);

cp.GetContent(); //這一步將獲得Cache“A”的內容

cp.IsExit(“B”) //這一步檢測Cache“B”是否存在

cp.GetContent(); //這一步將獲得Cache“B”的內容,而不是建構函式中的Cahce“A”

 

我是李鳴 歡迎您關注我的下一篇文章。

 IsLine FrameWork是一個開源的企業級系統開發架構,目前已有以下系列:

 

IsLine FrameWork系列之一——第一次的親密接觸

IsLine FrameWork系列之二——命名空間與契約

IsLine FrameWork系列之三--七種武器

IsLine FrameWork系列之四--DataProvider 資料訪問(上)

IsLine FrameWork系列之五--DataProvider 資料訪問(中)

IsLine FrameWork系列之六--DataProvider 資料訪問(下)

IsLine FrameWork系列之七--AppLogProvider日誌架構(下)

IsLine FrameWork系列之八--ExceptionProcessProvider異常架構(上)

IsLine FrameWork系列之九--ExceptionProcessProvider異常架構(下)

IsLine FrameWork系列之十--HttpContentProvider 訪問緩衝

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.