匯出 (0) 列印
全部展開

從角色中快取移轉至 Azure 受管理的快取服務

更新日期: 2014年9月

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

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

受管理的快取服務 可在以下 3 個提供項目中取得。

  • 基本 - 大小介於 128MB 到 1GB,且以 128MB 為增量單位的快取,其中沒有預設的具名快取

  • 標準 - 大小介於 1GB 到 10GB 且以 1GB 為增量單位的快取,其中支援通知以及最多 10 個具名快取

  • 進階 - 大小介於 5GB 到 150GB 且以 5GB 為增量單位的快取,其中支援通知、高可用性以及最多 10 個具名快取

note附註
每個提供項目的價格和功能都不相同。如需詳細資訊,請參閱快取服務價格常見問題集Azure 受管理快取服務的快取提供項目。本移轉教學指南的Configure the Cache一節中也會提供其他的詳細資訊。

角色中快取 的所有快取功能都可在 受管理的快取服務 不同的快取提供項目中取得。若您的應用程式使用通知,您應該關閉標準版或基本版快取提供項目。若您的快取已啟用高可用性,您應該選擇進階版快取提供項目。首先挑選 受管理的快取服務 快取項目 (具備您的應用程式所需的快取功能) 做為移轉的起點,並符合您 角色中快取 應用程式的容量需求。

部署應用程式之後,您可以監控快取的效能,並依應用程式的需求進行調整。如需以下內容的詳細資訊 監控效能和調整,請參閱監控 Azure 受管理快取服務擴充 Azure 受管理快取服務的快取

受管理的快取服務 中的快取執行個體是使用 PowerShell 指令碼所建立的。

Important重要事項
一旦使用 PowerShell Cmdlet 建立 受管理的快取服務 執行個體,就可以在 Azure 管理入口網站中檢視並設定。

  1. 開啟 Azure PowerShell 命令視窗。

    note附註
    如需安裝及使用 Azure PowerShell 的詳細指示,請參閱 如何安裝及設定 Azure PowerShell

  2. 叫用 Add-AzureAccount Cmdlet,並輸入與您帳戶相關的電子郵件地址及密碼。

    note附註
    如果您使用憑證為您的帳戶設定了 Azure PowerShell,則您可以略過此步驟。如需以下內容的詳細資訊 連接 Azure PowerShell 及您 Azure 帳戶的相關資訊,請參閱如何安裝並設定 Azure PowerShell

  3. 叫用 New-AzureManagedCache Cmdlet 並指定名稱、區域、快取提供項目以及快取大小。如果是下列範例,基本的 128MB 快取會在 South Central US 地理區域中以 contosocache 的名稱建立。

    New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    
    note附註
    如需建立快取時可以使用的參數和值的完整清單,請參閱 New-AzureManagedCache Cmdlet 文件。

  4. 一旦叫用了 PowerShell Cmdlet,建立快取需花費數分鐘的時間。建立快取之後,您的新快取狀態為 [執行中] 且已經可以使用預設設定,也能在 Azure 管理入口網站中進行檢視及設定。

    您可以在 Azure PowerShell 視窗中監控建立程序。一旦快取可供使用,New-AzureManagedCache Cmdlet 會顯示快取資訊,如以下範例所示。

    PS C:\> Add-AzureAccount
    VERBOSE: Account "user@domain.com" has been added.
    VERBOSE: Subscription "MySubscription" is selected as the default subscription.
    VERBOSE: To view all the subscriptions, please use Get-AzureSubscription.
    VERBOSE: To switch to a different subscription, please use Select-AzureSubscription.
    PS C:\> New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    VERBOSE: Intializing parameters...
    VERBOSE: Creating prerequisites...
    VERBOSE: Verify cache service name...
    VERBOSE: Creating cache service...
    VERBOSE: Waiting for cache service to be in ready state...
    
    
    Name     : contosocache
    Location : South Central US
    State    : Active
    Sku      : Basic
    Memory   : 128MB
    
    
    
    PS C:\>
    

角色中快取 和 受管理的快取服務 均支援具名快取,其提供您為不同的資料集設定不同快取選項的靈活性。每個 受管理的快取服務 快取都有預設的具名快取,而在標準版和進階版快取提供項目中,最多可以設定 9 個額外的具名快取。每個具名快取都具有其自己的個別設定,例如高可用性、通知、以及自訂收回和到期原則。具名快取設定會在快取的 [設定] 索引標籤中的 [管理入口網站] 中設定。

Windows Azure 快取服務中的具名快取

由於 角色中快取 和 受管理的快取服務 具有相同的快取功能,兩者的些微不同之後列於下表。

 

功能 受管理的快取服務 支援 角色中快取 支援

名稱

已設定 [預設] 快取,若需要,在標準版和進階版快取提供項目中,最多可以設定 9 個額外的具名快取。

已設定 [預設] 快取,可設定其他具名快取。

高可用性

高可用性只能用於進階版快取提供項目,無法用於基本版或標準快取提供項目。如需詳細資訊,請參閱 Azure 受管理快取服務的快取提供項目.

全部 角色中快取 拓撲均可啟用高可用性。

通知

標準版和進階版快取提供項目中包括通知,而基本版中則未包括。如需詳細資訊,請參閱 Azure 受管理快取服務的快取提供項目.

全部 角色中快取 拓撲均可啟用通知。

收回原則

選擇已啟用,其使用 LRU (最近最少使用) 演算法來判斷要收回或停用的項目。預設值為 [已啟用]。

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

時間 (分鐘)

在 受管理的快取服務 中,設定命名為時間 (分鐘)

在 角色中快取 中,設定命名為存留時間 (分鐘)。

到期原則

此設定命名為到期原則,且有三個可能的值:對應至 角色中快取 的 [到期原則] 設定的 [永不]、[絕對] 以及 [滑動]。

此設定命名為到期原則,且有三個可能的值:[無]、[絕對] 及 [滑動視窗]。

若要從 角色中快取 移轉至 受管理的快取服務,在您的新 受管理的快取服務 快取的 角色中快取 快取叢集中重新建立所有具名快取。

設定新的 受管理的快取服務 快取之後,下一步是從裝載 角色中快取 的角色中移除快取。這些步驟依 角色中快取 的快取叢集拓撲而有所不同。

若要移除專用的角色快取叢集,您必須從 Visual Studio 解決方案和雲端服務專案中的 [角色] 資料夾中移除快取背景工作角色專案。

  1. 在 [方案總管] 的雲端服務專案的 [角色] 資料夾中的快取背景工作角色按一下滑鼠右鍵,並選擇 [移除]。

    移除快取背景工作角色
  2. 在 [方案總管] 中的背景工作角色專案上按一下滑鼠右鍵,並選擇 [移除]。

若要停用 Web 或背景工作角色中的共置角色快取,您必須取消勾選角色屬性中的 [快取] 索引標籤上的 [快取] 設定。

  1. 在 [方案總管] 中的雲端服務專案角色上按一下滑鼠右鍵,並選擇 [屬性]。

    快取角色屬性功能表項目
  2. 切換至 [快取] 索引標籤,並取消勾選 [啟用快取] 核取方塊,再按 CTRL+S 儲存。

    停用共存角色快取設定

建立並設定快取後,下一步是新增必要的設定和參考,讓快取用戶端可存取快取。受管理的快取服務 支援下列用戶端。

  • Azure 網站

  • Azure 雲端服務 Web 角色和工作角色

  • Azure 虛擬機器

note附註
若 角色中快取 專案已使用最新的 SDK,則您只需更新快取用戶端設定,方法是略過下步驟並遵循更新快取用戶端設定以使用快取服務中說明的程序。

若 角色中快取 專案正在使用 SDK 1.8 - 2.0,則您需要移除快取 NuGet 封裝、移除任何剩餘的快取用戶端設定,並安裝最新的 Azure SDK (目前版本為 2.1)。升級 SDK 之後,安裝並設定最新的快取 NuGet 封裝。若要設定快取用戶端,請對每個快取用戶端執行下列步驟。

在為 受管理的快取服務 設定用戶端應用程式之前,必須先移除現有的 角色中快取 設定和組件參照。這可以透過解除安裝快取 NuGet 封裝來完成。

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

note附註
在下列快照中,NuGet 封裝版本為 2.1.0.0。若您有此版本或更高版本,可以略過此步驟。若 NuGet 封裝版本為 1.8.*2.0.*,您僅需執行此步驟。

解除安裝角色中快取 NuGet 封裝

解除安裝 角色中快取 NuGet 封裝會移除用戶端應用程式的 app.configweb.config 中的 角色中快取 組件和 角色中快取 項目。由於部分自訂設定在解除安裝 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" channelOpenTimeout="0">
        <autoDiscover isEnabled="true" identifier="CacheWorker" />
      </dataCacheClient>
    </dataCacheClients>
    

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

受管理的快取服務 提供 NuGet 封裝來新增必要的設定和組件參考,讓快取用戶端可存取快取。

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

Important重要事項
這些步驟需要最新的 NuGet 封裝管理員 (版本 2.2 或更高)。若要安裝最新的 NuGet 封裝管理員,請參閱 NuGet 封裝管理員

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

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

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

Windows Azure 快取 NuGet 封裝

當 受管理的快取服務 NuGet 封裝安裝到用戶端專案時,它會新增必要的設定和組件參考,讓用戶端應用程式可存取所需的快取。

在專案的 web.configapp.config 中會新增數個項目。

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

    <!-- Non-cache sections omitted for space -->
      <configSections>
        <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 區段。

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="[Cache role name or Service Endpoint]" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    
    以在管理入口網站的快取儀表板中顯示的端點 URL 取代 [Cache role name or Service Endpoint]

    Windows Azure 快取服務的端點 URL
    在此範例中,快取命名為 applicationcache,而端點 URL 為 applicationcache.cache.windows.net

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    
    取消註解 securityProperties 區段,並以主要驗證金鑰來取代 [Authentication Key]

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    
    
    在快取儀表板中按一下 [管理金鑰],可以在管理入口網站中找到驗證金鑰。與 sslEnabled 屬性通訊的 如需以下內容的詳細資訊 存取金鑰和安全快取,請參閱 Azure 受管理快取服務的資訊安全模型

    為 Windows Azure 快取服務管理存取金鑰
    Warning警告
    必須適當設定這些設定,否則用戶端無法存取快取。

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

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for space... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
note附註
如需 如需以下內容的詳細資訊 快取診斷層級的相關資訊,請參閱 有關 Azure 受管理快取服務的 ClientDiagnosticLevel

除了新增必要的設定,受管理的快取服務 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附註
受管理的快取服務 和 角色中快取 共用同一個 API,雖然組件名稱相同,但組件本身不同且位於不同位置。受管理的快取服務 NuGet 封裝會移除 角色中快取 組件參考並新增正確的 受管理的快取服務 組件參考。受管理的快取服務 組件位於 C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.1\ref\Caching 資料夾中。

若 角色中快取 專案已使用最新的 SDK,則您只需更新快取用戶端設定並指向新的 受管理的快取服務 快取。

  1. 開啟快取用戶端專案的 web.config 或 app.config,並尋找 dataCacheClients 區段。

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Windows Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Windows Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="MyCacheWorkerRole" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    
  2. autoDiscover 區段中,以 identifier 屬性中的 受管理的快取服務 快取端點 URL 名稱取代 角色中快取 叢集角色名稱。在管理入口網站的快取儀表板中顯示的端點 URL。

    Windows Azure 快取服務的端點 URL
    在此範例中,快取命名為 applicationcache,而端點 URL 為 applicationcache.cache.windows.net

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    
  3. 取消註解 securityProperties 區段,並以驗證金鑰來取代 [Authentication Key]

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    
    
    按一下快取儀表板中的 [存取金鑰],可以在管理入口網站中找到驗證金鑰。

    為 Windows Azure 快取服務管理存取金鑰

Configure the Cache Clients中所述將當 ASP.NET Web 專案從 角色中快取 移轉至 受管理的快取服務 後,還需要的一個小變更就是將 ASP.NET 工作階段狀態或頁面輸出快取儲存在快取中。若要將 ASP.NET 工作階段狀態儲存在快取中,請將下列區段新增至 web.config 中的 system.web

<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>
note附註
如果 ASP.NET Web 角色已設定為使用 快取 的工作階段狀態提供者,則此區段已存在,無需任何變更。

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

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

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>
note附註
如果 ASP.NET Web 角色已設定為使用 快取 的輸出快取提供者,則此區段已存在,無需任何變更。

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

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

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

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

另請參閱

顯示:
© 2014 Microsoft