VENTAS: 1-800-867-1389

Migrar de Almacenamiento en caché compartido de Azure a Caché en rol

Actualizado: julio de 2010

noteNota
Si quiere que le guiemos a la hora de elegir la oferta de Caché de Azure que mejor se adapta a su aplicación, consulte ¿Cuál es la oferta de Caché de Azure más adecuada para mí?.

La migración de las aplicaciones que usan Shared Caching de Microsoft Azure al almacenamiento en caché de Caché en rol se puede llevar a cabo con cambios mínimos en la aplicación. Puesto que Caché en rol usa las mismas API que usa Shared Caching, el código existente que usa Shared Caching para acceder a una caché se puede reutilizar para acceder a una caché en rol de Caché en rol. En este tema se muestra cómo realizar los cambios de configuración y de aplicación necesarios para migrar su aplicación de Shared Caching para utilizar Caché en rol.

noteNota
Para obtener más información sobre las ventajas de usar Caché en rol, vea Acerca de Caché en rol para Caché de Azure.

Caché en rol ofrece la posibilidad de hospedar servicios de almacenar en memoria caché en roles de . En este modelo, la memoria caché forma parte del servicio en la nube. Se selecciona un rol del servicio en la nube para hospedar Caché en rol. Las instancias en ejecución de ese rol combinan recursos de memoria para formar un clúster de caché. Este clúster de caché privado solo está disponible para los roles dentro de la misma implementación. Hay dos topologías de implementación para Caché en rol: dedicada y colocada.

 

Topología de implementación del clúster de caché Descripción

Almacenamiento en caché de rol dedicado

Las instancias de rol de trabajo se usan exclusivamente para el almacenamiento en caché.

Almacenamiento en caché de rol colocado

La memoria caché comparte los recursos de la máquina virtual (ancho de banda, CPU y memoria) con la aplicación principal hospedada por el rol.

Si la aplicación tiene memoria sin usar en los roles existentes, se puede configurar un clúster de caché de rol colocado en dichos roles y usar esa memoria adicional para el almacenamiento en caché. Si no existe memoria adicional suficiente en los roles para admitir un clúster de caché, puede escalar los roles o agregar un rol de trabajo de caché y configurar un clúster de caché de rol dedicado.

Para configurar un clúster de caché de rol dedicado, agregue un rol de trabajo de caché al proyecto. Para agregar un rol de trabajo de caché, expanda en el Explorador de soluciones si aún no está expandido.

noteNota
El almacenamiento en caché del rol dedicado solo es compatible con roles de trabajo y no se puede configurar en los roles web.

Haga clic con el botón secundario en la carpeta Roles del proyecto y elija Agregar, Nuevo proyecto de rol de trabajador y elija Rol de trabajo de caché. Escriba el nombre deseado del rol en el cuadro Nombre y haga clic en Agregar.

Agregar rol de trabajo de caché

Se preconfigura un rol de trabajo de caché para el almacenamiento en caché del rol dedicado. Para ver la configuración, haga clic con el botón secundario en el rol agregado recientemente en la carpeta Roles de y elija Propiedades.

Menú contextual Propiedades del rol de trabajo de caché

Vaya a la pestaña Almacenamiento en caché para ver las propiedades de almacenamiento en caché del rol de trabajo de caché.

Propiedades del rol de trabajo de caché

Dado que este es un rol de trabajo de caché, la casilla Habilitar caché ya está seleccionada y el almacenamiento en caché del Rol dedicado está seleccionado. La sección Configuración de caché con nombre contiene la configuración que se aplica a la caché. Hay algunas diferencias en la configuración de caché entre Caché en rol y Shared Caching de Microsoft Azure. Estas configuraciones se describen en las secciones Configurar la cuenta de almacenamiento del clúster de caché y Configurar los valores de caché con nombre siguientes.

Vaya a la pestaña Configuración.

Tamaño de VM y recuento de instancias de rol

El Recuento de instancias es 1 y el Tamaño de VM predeterminado es Pequeño. Modifique esta configuración según desee. En la guía Consideraciones para la planeación de la capacidad para Caché en rol (Caché de Azure) puede encontrar pautas sobre qué configuración elegir para cumplir con los requisitos de caché de su aplicación.

Una vez que se ha agregado el rol de trabajo de caché y se han configurado el tamaño de la máquina virtual y el recuento de instancias, puede configurar la memoria caché como se describe en la sección Configurar los valores de caché con nombre a continuación.

Para configurar un clúster de caché de rol colocalizado, haga clic con el botón secundario en el rol deseado en la carpeta Roles de y elija Propiedades.

Propiedades de rol web

Cambie a la pestaña Almacenamiento en caché, marque la casilla Habilitar caché y especifique las opciones de caché deseadas. La configuración predeterminada asigna un 30 % de la memoria de la instancia de rol para el almacenamiento en caché. Ajuste el control deslizante Tamaño de caché (%) para configurar el tamaño de caché deseado.

Propiedades de rol de Caching

Una aproximación muy básica de la fórmula usada para establecer el tamaño de caché es multiplicar el número de instancias de rol por la cantidad de memoria según el tamaño de la máquina virtual y luego calcular el porcentaje especificado. Tenga en cuenta que esta fórmula es una aproximación muy básica. Para obtener más información sobre la configuración necesaria para aprovisionar una memoria caché del tamaño deseado, vea Consideraciones para la planeación de la capacidad para Caché en rol (Caché de Azure). Si se requieren instancias de rol adicionales o un tamaño de máquina virtual mayor para hospedar el clúster de caché correctamente, se pueden configurar en la pestaña Configuración.

Caché en rol requiere una cuenta de almacenamiento de . Esta cuenta de almacenamiento se usa para conservar datos de configuración sobre el clúster de caché al que se accede desde todas las máquinas virtuales que componen el clúster de caché. Esta cuenta de almacenamiento se especifica en la pestaña Almacenamiento en caché de la página de propiedades del rol de clúster de caché, encima de la Configuración de caché con nombre.

Cuenta de almacenamiento del cluster de caché
ImportantImportante
Si no configura esta cuenta de almacenamiento, los roles no se iniciarán.

Las opciones de caché se configuran en la sección Configuración de caché con nombre.

Configuración de memoria caché con nombre

Hay algunas diferencias en la configuración de caché entre Caché en rol y Shared Caching de Microsoft Azure.

 

Característica Compatibilidad con Caché en rol Compatibilidad con Shared Caching de Microsoft Azure

Nombre

Existe una caché predeterminada configurada y se pueden configurar cachés con nombre adicionales.

Solo caché predeterminada.

ante desastres

Proporciona alta disponibilidad de los elementos de la caché. Si se interrumpe un rol, tiene a su disposición una copia de seguridad de los elementos de la caché.

Sin alta disponibilidad.

Notificaciones

Las notificaciones permiten que su aplicación reciba notificaciones asincrónicas cuando tienen lugar varias operaciones de almacenamiento en caché en el clúster de caché.

Para obtener más información, vea Notificaciones (Caché en rol para Caché de Azure)

No compatible.

Directiva de expulsión

Las opciones son LRU (últimos usados recientemente) o Ninguno. La opción predeterminada es LRU.

Solo LRU.

Tiempo en vivo (min)

La expiración predeterminada de los elementos de la caché es de 10 minutos, aunque se puede configurar. El tiempo de expiración de los elementos individuales agregados a la caché también se puede especificar mediante las sobrecargas de Add y Put cuando se agregan elementos a la caché.

La expiración predeterminada es de 24 horas y no se puede configurar. El tiempo de expiración de los elementos individuales agregados a la caché se puede configurar mediante las sobrecargas de Add y Put cuando se agregan elementos a la caché.

Tipo de caducidad

Hay tres tipos de Tipo de expiración: Ninguno, Absoluto y Ventana deslizante. Si se especifica Absoluto, el intervalo de expiración especificado en Período de vida (min) comienza cuando se agregan elementos a la memoria caché. Si se especifica Ventana deslizante, el intervalo se restablece cada vez que se accede a un elemento de la memoria caché. Si se especifica Nunca, Período de vida (min) debe definirse en 0 y los elementos no expirarán. El valor predeterminado es Absoluto.

Para obtener más información, vea Expiración y expulsión (Caché en rol para Caché de Azure).

La directiva de expiración es absoluta. El intervalo de expiración comienza cuando se agregan elementos a la caché.

Una vez configurado el clúster de caché, el siguiente paso es agregar la configuración y las referencias necesarias para que los clientes de caché puedan acceder a la memoria caché. En Caché en rol, los clientes pueden tener cualquiera de los roles en la misma implementación que el clúster de caché. Al acceder a un clúster de caché de rol colocalizado, el cliente puede ser el propio rol que hospeda el clúster de caché. Para configurar los clientes de caché, cumpla los pasos siguientes para cada rol que acceda a la memoria caché.

Antes de configurar los roles de cliente para Caché en rol, deben quitarse la configuración y las referencias de ensamblado actuales de Shared Caching. Si Shared Caching se configuró con el paquete NuGet de Shared Caching, la configuración se puede quitar desinstalando el paquete de NuGet de Shared Caching; de lo contrario, debe quitarse manualmente.

Para desinstalar el paquete NuGet de Shared Caching, haga clic con el botón secundario en el rol de cliente deseado en el Explorador de soluciones y elija Administrar paquetes de NuGet. Seleccione el nodo Paquetes instalados y escriba Almacenamiento en caché en el cuadro Buscar paquetes instalados. Seleccione Almacenamiento en caché compartido de Azure, haga clic en Desinstalar y, a continuación, en Cerrar.

Desinstalar paquete NuGet de Shared Caching
noteNota
Si no hay ningún paquete NuGet de Shared Caching de Microsoft Azure en la lista, haga clic en Cerrar y siga los pasos que se describen en Suprimir manualmente la configuración de Almacenamiento en caché compartido.

Al desinstalar el paquete NuGet de Shared Caching, se quitan los ensamblados de Shared Caching y las entradas de Shared Caching en el archivo app.config o web.config del rol de cliente. Puede que algunas opciones personalizadas no se supriman al desinstalar el paquete NuGet, por lo que es recomendable abrir web.config o app.config y comprobar que los elementos siguientes se hayan suprimido por completo.

  • Compruebe que la entrada dataCacheClients se haya suprimido del elemento configSections. No suprima todo el elemento configSections; suprima únicamente la entrada dataCacheClients, si está presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Compruebe que la sección dataCacheClients se haya suprimido. La sección dataCacheClients será similar a la del ejemplo siguiente.

    <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>
    

Después de suprimir la configuración de Shared Caching, puede configurar el cliente de caché como se describe en la siguiente sección Configurar un cliente de caché mediante el paquete NuGet de Caching.

Para suprimir manualmente la configuración de Shared Caching, debe suprimir las referencias de ensamblado de Shared Caching y la configuración de Shared Caching de app.config o web.config.

Para quitar las referencias de ensamblado de Shared Caching, seleccione el rol de cliente que desee en el Explorador de soluciones y expanda la carpeta Referencias. Para cada uno de los ensamblados de la lista siguiente, haga clic con el botón secundario en la carpeta Referencias del Explorador de soluciones y seleccione Suprimir. Si el rol de cliente es un rol web, quite también Microsoft.Web.DistributedCache.

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

Para quitar la configuración de Shared Caching, abra el archivo web.config o app.config del rol de cliente y quite los dos elementos siguientes.

  • Suprima la entrada dataCacheClients del elemento configSections. No suprima todo el elemento configSections; suprima únicamente la entrada dataCacheClients, si está presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Suprima la sección dataCacheClients, que será similar a la del ejemplo siguiente.

    <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>
    

Después de suprimir estos elementos, puede seguir los pasos que se describen en la siguiente sección para configurar el cliente de caché.

Caché en rol proporciona un paquete NuGet para agregar la configuración y las referencias de ensamblado necesarias a fin de permitir que los roles de cliente accedan al clúster de caché.

ImportantImportante
Antes de configurar el cliente de caché con el paquete NuGet de Caché en rol, asegúrese de que la configuración de Shared Caching se haya suprimido por completo de web.config o app.config del rol de cliente, tal y como se describe en la sección anterior.

Para usar el paquete NuGet de Caché en rol, haga clic con el botón secundario en el rol de cliente deseado en el Explorador de soluciones y elija Administrar paquetes de NuGet.

Administrar paquetes NuGet

Seleccione Caching de Azure, haga clic en Instalar y, a continuación, en Acepto. Una vez que haya instalado el paquete en el rol, haga clic en Cerrar para cerrar la ventana Administrar paquetes de NuGet.

noteNota
Si Caching de Azure no aparece en la lista, escriba WindowsAzure.Caching en el cuadro de texto Buscar en línea.

Habilitar Caching usando NuGet

Cuando el paquete NuGet de Caché en rol se instala en un rol de cliente, agrega la configuración y las referencias de ensamblado necesarias para que el rol de cliente pueda acceder al clúster de caché deseado.

Se han agregado varios elementos al archivo web.config o app.config del rol.

  1. Se han agregado dos secciones a configSections, dataCacheClients con nombre y cacheDiagnostics.

    <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. Se ha agregado una sección dataCacheClients a la sección configuration.

    <dataCacheClients>
      <dataCacheClient name="default">
        <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
        <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      </dataCacheClient>
    </dataCacheClients>
    
    Reemplace [cache cluster role name] por el nombre del rol que hospeda el clúster de caché. En el ejemplo siguiente, se ha reemplazado [cache cluster role name] por CacheWorkerRole1.

    <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    
    WarningAdvertencia
    Esta opción debe configurarse correctamente; de lo contrario, los clientes no podrán acceder a la memoria caché. Si el identificador no se asigna a un rol, se lanzará una TargetInvocationException cuando se acceda a la caché con una DataCacheException interna que contenga un mensaje similar al siguiente: The role [cache cluster role name] was not found in the current deployment. Si el identificador se asigna a un rol en la implementación que no hospeda ningún clúster de caché, se lanza una InvalidOperationException con el mensaje siguiente: No Endpoints found.

  3. También se ha agregado una sección cacheDiagnostics a la sección configuration.

    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
    
    noteNota
    Los volcados de memoria para los clientes de caché están deshabilitados de forma predeterminada y están controlador por esta sección. Para obtener más información sobre los diagnósticos de caché, vea Diagnóstico y solución de problemas de Caché en rol (Caché de Azure).

El paquete NuGet de Caché en rol agrega también una opción ClientDiagnosticLevel a la sección ConfigurationSettings del rol de cliente de cache en ServiceConfiguration.cscfg. El ejemplo siguiente es la sección de WebRole1 de un archivo ServiceConfiguration.cscfg con un valor de ClientDiagnosticLevel de 1, que es el valor predeterminado de ClientDiagnosticLevel.

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for clarity... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>
noteNota
Para obtener más información sobre niveles de diagnóstico de caché, vea Diagnóstico y solución de problemas de Caché en rol (Caché de Azure).

Además de agregar la configuración necesaria, el paquete NuGet de Caché en rol también agrega las siguientes referencias de ensamblado.

  • 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

Si se trata de un rol web, se agrega también la siguiente referencia de ensamblado.

  • Microsoft.Web.DistributedCache.dll

noteNota
Caché en rol y Shared Caching de Microsoft Azure comparten la misma API y, aunque los nombres de ensamblado son iguales, los ensamblados en sí son diferentes y se encuentran en distintas ubicaciones. El paquete NuGet de Caché en rol suprime las referencias de ensamblado de Shared Caching y agrega las referencias de ensamblado de Caché en rol correctas. Los ensamblados de Caché en rol se encuentran en la carpeta C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching.

Después de migrar sus clientes de rol web de ASP.NET de Shared Caching de Microsoft Azure a Caché en rol como se explica en Configurar los clientes de caché, solo son necesarios algunos cambios mínimos para almacenar el estado de sesión o la caché de resultados de página de ASP.NET en una caché en rol. Para habilitar el almacenamiento del estado de la sesión de ASP.NET en la memoria caché, agregue la sección siguiente a system.web en web.config.

noteNota
Si su rol web de ASP.NET estaba ya configurado para usar el proveedor de estado de sesión para Caché de Microsoft Azure, esta sección ya existe.

<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>

Actualice cacheName para especificar la caché en el clúster de caché que hospeda el estado de sesión. Utilice default para especificar la memoria caché predeterminada.

Para habilitar el almacenamiento en caché de los resultados de la página en la caché, agregue la sección siguiente a system.web.

noteNota
Si su rol web de ASP.NET estaba ya configurado para usar el proveedor de caché de salida para Caché de Microsoft Azure, esta sección ya existe.

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

Actualice cacheName para especificar la caché en el clúster de caché que hospeda el estado de sesión. Utilice default para especificar la memoria caché predeterminada.

Agregue una directiva OutputCache a cada página cuyos resultados desee almacenar en caché.

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

En este ejemplo, los datos de la página en caché permanecen en la memoria caché durante 60 segundos y, por cada combinación de parámetros, se almacena en caché una versión diferente de la página. Para obtener más información sobre las opciones disponibles, vea Directiva OutputCache.

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft