AppFabric (代號 Velocity) 提供企業級分佈式內存緩存,透明提升 .NET 應用性能、擴展性與可用性。本文覆蓋叢集部署、命名緩存/區域/標籤建模、緩存預熱併發控制、ASP.NET 會話/輸出緩存提供者集成、NHibernate/EF 二級緩存適配,構建完整落地知識體系。
DataCacheFactory → DataCache,操作語義同 Dictionary (Put/Get/Remove)。
// 客戶端初始化
var endpoints = new[] { new DataCacheServerEndpoint("Server1", 22233) };
var factory = new DataCacheFactory(endpoints);
var cache = factory.GetCache("Catalog");
// 基礎操作
cache.Put("Product:100", product);
var p = (Product)cache.Get("Product:100");
CreateRegion (運行時創建),**區域內數據保證同節點**,支援標籤搜索。Put(key, value, tags, region) 附加標籤,GetObjectsByTag(tag, region) / GetByAllTags(tags, region) 多維檢索 (如 "LED-Panel" + "46-inch")。applicationHost.config 註冊 IProcessHostPreloadClient 實現 Preload(),應用啟動前完成緩存填充。cache.Add(key, value, lockTimeout) (讀取器鎖) — 僅首個獲取鎖的實例執行 DB 查詢並填充,其它實例等待鎖釋放後直接讀取緩存,避免「緩存擊穿」。Parallel.ForEach (NET 4) 多線程併發 Put,最大化預熱吞吐。web.config:sessionState mode="Custom" customProvider="Velocity",註冊 DataCacheSessionStoreProvider。OutputCacheProvider 實現 Add/Get/Set/Remove 委託 AppFabric。web.config 註冊:... 。nhibernate.caches.velocity (NHibernate.Caches.Velocity) 插件,配置 cache.provider_class 即可透明將實體/集合/查詢結果放入 AppFabric。EFCachingProvider (Jaroslav Kowalski) 包裝 EF Provider,攔截查詢/保存,實現二級緩存。New-Cache -CacheName Catalog 創建命名緩存。AppFabric 將分佈式緩存從「基礎設施難題」轉化為「透明基礎設施」。關鍵在於:**識別正確緩存候選、設計區域/標籤拓撲、建立預熱與失效機制、整合現有 ASP.NET/ORM 棧** — 而非單純調用 Put/Get。