銷售: 1-800-867-1380

從 Azure Shared Caching 移轉至角色中快取

更新日期: 2014年9月

note附註
如需為應用程式選擇正確 Azure 快取提供項目的相關指引,請參閱 我適合使用哪個 Azure 快取服務?

在應用程式更動最少的情況下,將使用 Microsoft Azure Shared Caching 的應用程式移轉至 角色中快取 快取。因為 角色中快取 使用與 Shared Caching 相同的 API,因此可重複使用利用 Shared Caching 存取快取的現有程式碼來存取 角色中快取 角色中快取。本主題顯示如何完成必要的設定變更和應用程式變更,以移轉 Shared Caching 應用程式來使用 角色中快取。

note附註
如需關於使用 角色中快取 的優點的資訊,請參閱 關於 Azure 快取的角色中快取

角色中快取 提供在 角色上主控 快取 服務的能力。在此模型中,快取是雲端服務的一部分。從雲端服務內選取一個角色來主控 角色中快取。該角色的執行中執行個體加入記憶體資源來形成「快取叢集」(Cache Cluster)。此私用快取叢集僅適用於相同部署中的角色。角色中快取 有兩個部署拓撲:專用和共置。

 

快取叢集部署拓撲 描述

專用角色快取

背景工作角色執行個體專用於快取。

共置角色快取

快取與角色所主控的主要應用程式會共用 VM 資源 (頻寬、CPU 和記憶體)。

如果您的應用程式在其現有角色中有未用的記憶體,則您可以在這些角色上設定共置角色快取叢集,並利用這額外的記憶體來進行快取。如果角色中沒有足夠的額外記憶體可支援快取叢集,您可以將角色向外擴充,或新增快取背景工作角色並設定專用角色快取 cluster.Azure

若要設定專用角色快取叢集,請將快取背景工作角色新增至專案。若要新增快取背景工作角色,請在 [方案總管] 中展開 (如果尚未展開的話)。

note附註
專用角色快取僅支援於背景工作角色,無法設定於 Web 角色。

在 專案中的 [角色] 資料夾上按一下滑鼠右鍵,然後選擇 [新增]、[新的背景工作角色專案] 及 [快取背景工作角色]。在 [名稱] 方塊中輸入所需的角色名稱,然後按一下 [新增]。

新增快取背景工作角色

專用角色快取已預先設定一個快取背景工作角色。若要檢視設定,請在  [角色] 資料夾中新增的角色上按一下滑鼠右鍵,然後選擇 [內容]。

快取背景工作角色屬性操作功能表

切換至 [Caching] 索引標籤,查看快取背景工作角色的快取內容。

快取背景工作角色屬性

因為此角色是快取背景工作角色,所以已勾選 [啟用 Caching] 核取方塊並選取 [專用角色] 快取。快取的設定是在 [具名快取設定] 區段中進行設定。角色中快取 和 Microsoft Azure Shared Caching 的快取設定有些不同。以下 設定快取叢集儲存體帳戶設定具名快取設定 章節說明這些設定。

切換至 [設定] 索引標籤。

角色執行個體 VM 大小與執行個體計數

預設 [執行個體計數] 為 [1],預設 [VM 大小] 為 [小]。請修改這些設定來符合您要的設定。角色中快取的容量規劃考量 (Azure 快取) 教學指南可以提供如何選擇符合您應用程式快取要求的設定。

新增快取背景工作角色並設定虛擬機器大小和執行個體計數後,就可以開始設定快取,如下一節設定具名快取設定所述。

若要設定共置角色快取叢集,請在  [角色] 資料夾中您要的角色上按一下滑鼠右鍵,然後選擇 [內容]。

Web 角色屬性

切換至 [Caching] 索引標籤、勾選 [啟用 Caching] 核取方塊,然後指定所需的快取選項。預設設定會在快取的角色執行個體中配置 30% 的記憶體。請調整 [快取大小 (%)] 滑動軸來設定所需的快取大小。

快取角色屬性

可使用一個非常基本的概算公式來決定快取大小,就是將角色執行個體數目乘以根據虛擬機器大小的記憶體數量,然後取用指定的百分比。請注意,此公式是非常基本的概算,如需佈建所需大小之快取所需的設定詳細資訊,請參閱 角色中快取的容量規劃考量 (Azure 快取)。如果需要更多角色執行個體或更大的虛擬機器大小才能順利主控快取叢集,請在 [設定] 索引標籤上設定。

角色中快取 需要一個 儲存體帳戶。此儲存體帳戶用於保存有關快取叢集的設定資料,可透過構成快取叢集的所有虛擬機器存取。您可以在快取叢集角色內容頁的 [Caching] 索引標籤 (位於 [具名快取設定] 上方) 中指定儲存體帳戶。

快取叢集儲存體帳戶
Important重要事項
若未設定儲存體帳戶,則無法啟動角色。

快取設定是在 [具名快取設定] 區段中進行設定。

具名快取設定

角色中快取 和 Microsoft Azure Shared Caching 的快取設定有些不同。

 

功能 角色中快取 支援 Microsoft Azure Shared Caching 支援

名稱

已設定 [預設] 快取,如有需要,可設定其他具名快取。

只有預設快取。

高可用性

對快取中的項目提供高可用性。如果有一個角色當機,快取中仍有項目的備份副本可用。

沒有高可用性。

通知

當快取叢集上發生各種快取作業時,通知可讓應用程式接收非同步通知。

如需詳細資訊,請參閱 通知 (Azure 快取的角色中快取)

不支援。

收回原則

選項為 [LRU] (最近使用) 或 [無]。預設值為 [LRU]。

只有 LRU。

存留時間 (分)

項目在快取中的預設到期時間為 10 分鐘,但可設定。當將項目新增至快取時,也可使用 AddPut 的多載,為新增至快取的個別項目指定到期時間。

預設到期時間為 24 小時,且不可設定。當將項目新增至快取時,可使用 AddPut 的多載,為新增至快取的個別項目設定到期時間。

到期類型

有三種 [到期時間類型]:[無]、[絕對] 及 [滑動視窗]。指定 [絕對] 時,[存留時間 (分鐘)] 指定的到期間隔會在將項目新增至快取時開始計算。指定 [滑動視窗] 時,每次在快取中存取項目就會重設間隔。指定 [無] 時,[存留時間 (分鐘)] 必須設為 0,項目將不會過期。預設值為 [絕對]。

如需詳細資訊,請參閱 到期與收回 (Azure 快取的角色中快取).

到期原則為絕對。到期間隔是從項目新增至快取時開始計算。

設定快取叢集後,下一步是新增必要的設定和參考,讓快取用戶端可存取快取。在 角色中快取 中,用戶端可以是與快取叢集相同之部署中的任何角色。存取共置角色快取叢集時,用戶端可以是主控快取叢集的角色本身。若要設定快取用戶端,請對存取快取的每一個角色執行下列步驟。

在為 角色中快取 設定用戶端角色之前,必須先移除現有的 Shared Caching 設定和組件參照。若使用 Shared Caching NuGet 封裝設定 Shared Caching,則可以透過解除安裝 Shared Caching NuGet 封裝的方式來移除設定,否則必須手動移除。

若要解除安裝 Shared Caching NuGet 封裝,請在 [方案總管] 中按一下滑鼠右鍵,接著選擇 [管理 NuGet 封裝]。選擇 [已安裝封裝] 節點,並在 [搜尋已安裝封裝] 方塊中輸入 [Caching]。選擇 [Azure Shared Caching],按一下 [解除安裝],再按一下 [關閉]。

解除安裝 Shared Caching NuGet 封裝
note附註
若清單中沒有 Microsoft Azure Shared Caching NuGet 封裝,則按一下 [關閉] 並依照 手動移除 Shared Caching 設定 中的步驟進行。

解除安裝 Shared Caching NuGet 封裝會移除用戶端角色的 app.configweb.config 中的 Shared Caching 組件和 Shared Caching 項目。由於部分自訂設定在解除安裝 NuGet 封裝時不會加以移除,請開啟 web.configapp.config,並確定已完全移除以下元素。

  • 確定 dataCacheClients 項目已從 configSections 元素中移除。請勿移除整個 configSections 元素,只需移除 dataCacheClients 項目 (如果有)。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 確定已移除 dataCacheClients 區段。dataCacheClients 區段必須與下列範例類似。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

一旦移除了 Shared Caching 設定,您可以如以下 使用快取 NuGet 封裝來設定 Cache Client 一節之所述,設定 Cache Client。

若要手動移除 Shared Caching 設定,您必須從 app.configweb.config 移除 Shared Caching 組件參照以及 Shared Caching 設定。

若要移除 Shared Caching 組件參照,請在 [方案總管] 中選擇希望的用戶端角色,再展開 [參照] 資料夾。在以下清單中的每個組件上,在 [方案總管] 中的 [參照] 資料夾上按一下滑鼠右鍵,再選擇 [移除]。若用戶端角色為網路角色,也請一併移除 [Microsoft.Web.DistributedCache]。

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

若要移除 Shared Caching 設定,請開啟用戶端角色的 web.configapp.config,再移除以下兩個項目。

  • configSections 元素中移除 dataCacheClients 項目。請勿移除整個 configSections 元素,只需移除 dataCacheClients 項目 (如果有)。

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • 移除的 dataCacheClients 區段必須與下列範例類似。

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

一旦移除了這些項目,您就可以遵循下一節中的步驟來設定您的快取用戶端。

角色中快取 提供 NuGet 封裝來新增必要的設定和組件參考,讓用戶端角色可存取快取叢集。

Important重要事項
在使用 角色中快取 NuGet 封裝設定快取用戶端之前,請確定 Shared Caching 設定已完全從用戶端角色的 web.configapp.config 移除,如上一節所述。

若要使用 角色中快取 NuGet 封裝,請在 [方案總管] 中按一下滑鼠右鍵,接著選擇 [管理 NuGet 封裝]。

管理 NuGet 封裝

選取 [Azure Caching],並依序按一下 [安裝] 與 [我接受]。當封裝安裝到角色後,按一下 [關閉] 即可關閉 [管理 NuGet 封裝] 視窗。

note附註
如果 [Azure Caching] 未出現在清單中,請在 [線上搜尋] 文字方塊中輸入 WindowsAzure.Caching

使用 NuGet 啟用快取

當 角色中快取 NuGet 封裝安裝到用戶端角色時,它會新增必要的設定和組件參考,讓用戶端角色可存取所需的快取叢集。

在角色的 web.configapp.config 中會新增數個項目。

  1. 會新增兩個區段到 configSections,名為 dataCacheClientscacheDiagnostics

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
      <section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  2. 新增至 configuration 區段的 dataCacheClients 區段。

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    
    以主控快取叢集的角色名稱來取代 [cache cluster role name]。在下列範例中,[cache cluster role name] 已取代為 CacheWorkerRole1

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    
    Warning警告
    必須適當設定此設定,否則用戶端無法存取快取。如果識別碼未對應至角色,則存取快取時會擲回 TargetInvocationException,並傳回內部 DataCacheException,含有類似如下的訊息:The role [cache cluster role name] was not found in the current deployment。如果識別碼對應至部署中未主控快取叢集的角色,則會擲回 InvalidOperationException 並傳回下列訊息:No Endpoints found.

  3. cacheDiagnostics 區段也新增到 configuration 區段。

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    
    note附註
    預設會停用快取用戶端的損毀傾印,並由此區段控制。如需 如需以下內容的詳細資訊 快取診斷,請參閱 角色中快取疑難排解和診斷 (Azure 快取)

角色中快取 NuGet 封裝也會將 ClientDiagnosticLevel 設定新增到 ServiceConfiguration.cscfg 中快取用戶端角色的 ConfigurationSettings。以下範例是層級 1 的 ClientDiagnosticLevelServiceConfiguration.cscfg 檔案的 WebRole1 區段,該層級為預設 ClientDiagnosticLevel

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
note附註
如需 如需以下內容的詳細資訊 快取診斷層級的相關資訊,請參閱 角色中快取疑難排解和診斷 (Azure 快取)

除了新增必要的設定,角色中快取 NuGet 封裝也會新增下列組件參考。

  • Microsoft.ApplicationServer.Caching.Client.dll

  • Microsoft.ApplicationServer.Caching.Core.dll

  • Microsoft.ApplicationServer.Caching.AzureCommon.dll

  • Microsoft.ApplicationServer.Caching.AzureClientHelper.dll

  • Microsoft.WindowsFabric.Common.dll

  • Microsoft.WindowsFabric.Data.Common.dll

如果角色是 Web 角色,則也會新增下列組件參考。

  • Microsoft.Web.DistributedCache.dll

note附註
角色中快取 和 Microsoft Azure Shared Caching 共用同一個 API,雖然組件名稱相同,但組件本身不同且位於不同位置。角色中快取 NuGet 封裝會移除 Shared Caching 組件參考並新增正確的 角色中快取 組件參考。角色中快取 組件位於 C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching 資料夾中。

設定 Cache Clients中所述將當 ASP.NET Web 角色用戶端從 Microsoft Azure Shared Caching 移轉至 角色中快取 後,還需要的一個小變更就是將 ASP.NET 工作階段狀態或頁面輸出 Shared Caching 儲存在角色中快取。若要將 ASP.NET 工作階段狀態儲存在快取中,請將下列區段新增至 web.config 中的 system.web

note附註
如果 ASP.NET Web 角色已設定為使用 Microsoft Azure 快取 的工作階段狀態提供者,則此區段已存在。

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
  </providers>
</sessionState>

更新 cacheName 來指定快取叢集中保存工作階段狀態的快取。使用 default 來指定預設快取。

若要將頁面輸出 Caching 儲存在快取中,請將下列區段新增至 system.web

note附註
如果 ASP.NET Web 角色已設定為使用 Microsoft Azure 快取 的輸出快取提供者,則此區段已存在。

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

更新 cacheName 來指定快取叢集中保存工作階段狀態的快取。使用 default 來指定預設快取。

在您要快取輸出的每一個頁面中加入 OutputCache 指示詞。

<%@ OutputCache Duration="60" VaryByParam="*" %>

在此範例中,快取的頁面資料在快取中保留 60 秒,而每一個參數組合會快取不同版本的頁面。如需 如需以下內容的詳細資訊 可用的選項,請參閱 OutputCache 指示詞

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft