通知 (Windows Azure Caching)
Windows Azure 提供快取通知,可讓您的應用程式接收快取叢集上發生之各種快取操作的非同步通知。快取通知也提供自動將本機快取物件判定為無效的功能。
若要接收非同步快取通知,請在您的應用程式中加入快取通知回呼。當您加入回呼時,必須定義觸發快取通知的快取操作類型,以及發生指定的操作時應呼叫您的應用程式中的哪個方法。具名快取需要選擇加入和啟用快取通知。
唯有在使用角色中的 Caching 時才支援通知。Shared Caching 不支援通知。這也表示您無法使用通知,在 Shared Caching 中讓本機快取失效。
觸發快取通知
這些快取操作是由 DataCacheOperations 類別的成員所定義。
區域操作
當區域上發生下列快取操作時,您的應用程式可以接收快取通知:
-
CreateRegion:在快取中建立區域時。
-
ClearRegion:清除快取中的區域時。
-
RemoveRegion:從快取移除區域時。
項目操作
當快取物件 (快取中的項目) 上發生下列快取操作時,您的應用程式可能會收到快取通知。
-
AddItem:項目被新增到快取時。
-
ReplaceItem:快取中的項目被取代時。
-
RemoveItem:項目從快取移除時。
附註 |
|---|
| 透過它們本身,這些項目操作不需依賴是否在區域中發生。您可以選擇將回呼的通知範圍限制到特定區域。這在本文件的<通知範圍>一節中討論。 |
通知範圍
視活動與您的應用程式需求而定,您可能不想收到快取中所有物件與區域的事件通知。您可以將通知範圍從快取等級縮小到區域等級和項目等級。加入回呼時選取的通知範圍會大幅影響您將收到的快取通知。
在快取等級,當快取中的任何物件或區域上發生快取操作時,您的應用程式可能都會收到快取通知。在區域等級,只有當單一區域及其中的物件上發生快取操作時,您的應用程式才會收到快取通知。在項目等級,只有當單一物件上發生快取操作時,您的應用程式才會收到快取通知。
若要指定快取範圍,請選擇下列三個方法的其中一個,來加入快取通知回呼:
-
AddCacheLevelCallback:若想要收到在所有區域與項目上發生之區域及項目相關快取操作的快取通知。
-
AddRegionLevelCallback:若想要收到在單一特定區域上發生之區域及項目相關快取操作的快取通知。
-
AddItemLevelCallback:若想要收到在單一特定項目上發生之項目相關快取操作的快取通知。
通知順序
在單一區域的範圍中,快取用戶端會收到依序傳來的通知。例如,假設您已建立名為 RegionA 的區域。因為放在該快取區域中的所有資料都限制為相同區域,與 RegionA 相關的所有快取操作(區域等級與通知範圍) 都會以適當的順序 (與彼此相關) 送達快取用戶端。在其他快取主機上發生的區域與項目快取操作,則不一定會以適當的順序 (與 RegionA 中發生的操作相關) 送達。
為考量效能,無法確保牽涉到未儲存在相同區域之多個區域或物件的通知順序。
項目事件的版本資訊 (格式為 DataCacheItemVersion 物件) 會透過 version 參數傳遞給快取通知叫用的方法。此 DataCacheItemVersion 物件對應到觸發項目事件之物件的版本。透過使用 CompareTo 方法,您可以比較版本以判斷哪個快取操作先發生。
附註 |
|---|
| 只有比較以相同索引鍵指定之相同項目的版本時,版本比較才有意義。無法透過比較不同索引鍵的版本來推算順序;CompareTo 方法可能會傳回結果,但只有對具有相同索引鍵的版本才有效。 |
輪詢間隔
當您使用快取通知時,應用程式會定期檢查快取叢集,判斷是否有新的通知可用。此檢查間隔稱為輪詢間隔,預設是 300 秒。頻繁寫入的應用程式可能想要為此間隔設定更小的值,但是對於為經常變更的快取而言,較大的間隔會比較好。300 秒的預設值對於大多數的一般快取而言是理想選擇。
輪詢間隔是在應用程式組態檔中指定,單位為秒。若要指定特定間隔,您可以使用應用程式組態檔之 clientNotifications 元素的 pollInterval 屬性。您也可以使用程式設計方式,以 DataCacheFactoryConfiguration 物件的 NotificationProperties 屬性來指定輪詢間隔。
當通知遺失時
快取主機只能在記憶體中保留特定數量的快取操作。在快取主機處理完佇列中的通知之前,某些快取用戶端可能不會收到通知。當資料因為快取伺服器失敗但叢集其他部分仍繼續執行而遺失時,快取用戶端可能也會漏接通知。在這些情況下,快取用戶端可以使用失敗通知來確認它已漏些某些快取通知。您的應用程式可以透過使用 AddFailureNotificationCallback 方法,來加入回呼以接收失敗通知。如需詳細資訊,請參閱作法:新增失敗通知回呼
當快取叢集遺失時
通知遺失與快取叢集遺失之間有很重要的差異。若應用程式遺失一或多個通知,它可以透過失敗通知得知該遺失情況。若整個快取叢集停止、重新啟動或遺失,將不會觸發任何通知。在這種情況下,當您下次嘗試使用快取時,您的快取用戶端無法連線到叢集,快取用戶端將會擲回例外狀況。通知不會報告快取建立或刪除此類快取叢集事件。如果在註冊快取之後從伺服器中刪除快取,則只會停止接收通知。系統不可能會區分快取不存在和操作無法在快取上執行的情況。
附註 |
|---|
| 快取通知只會報告叢集中區域與快取項目上發生的資料相關變更,而不會報告叢集本身的事件。 |
啟用快取通知
快取通知功能是在叢集組態設定的快取等級設定。做為快取的內容,您可以在第一次建立快取時加以啟用。根據預設值,當您建立新的快取時會停用快取通知功能。
不需要修改應用程式組態設定就可以加入回呼以接收快取通知。您可以使用應用程式組態設定來指定特定的輪詢間隔。根據預設值,輪詢間隔是 300 秒。若要指定不同的間隔,請在 XML 型應用程式組態檔中使用 clientNotification 元素來指定,或以程式設計方式使用 DataCacheFactoryConfiguration 物件的 NotificationsProperties 屬性來指定。
使用快取通知
啟用快取通知之後,有三個與使用快取通知相關的工作:加入快取通知回呼、加入失敗通知回呼、移除快取通知回呼。本文件的其餘部分將說明這些工作的程序。
另請參閱
建置日期:
附註