Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Aspnet40 Cache Extensibility

  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Aspnet40 Cache Extensibility

  1. 1. Capacidad de ampliación de la memoria caché de ASP.NET 4.0 Christian Strevel Director de Servicios de Consultoría http://team.intellekt.ws/blogs/chris/ [email_address]
  2. 2. Objetivos de la sesión <ul><li>Conocer un poco de lo que viene en ASP.NET 4.0 y cache </li></ul><ul><li>Ver como podemos las nuevas características de cache nos pueden servir dentro de nuestras aplicaciones </li></ul><ul><li>Dar una vista rápida a la tecnología que viene </li></ul>
  3. 3. Requisitos de la sesión <ul><li>Conocer algo de C# es deseable. </li></ul><ul><li>Habilidades intermedias de XML. </li></ul><ul><li>Habilidades intermedias de ASP.NET </li></ul><ul><li>Conocimientos básicos de Visual Studio. </li></ul>
  4. 4. BETA BETA BETA <ul><li>Trabajando con Visual Studio 2010 y NET 4 Beta </li></ul><ul><li>Versión BETA </li></ul><ul><li>¡Código suceptible a cambios! </li></ul><ul><li>¡Tecnología suceptible a cambios! </li></ul>
  5. 5. Un poco de historia <ul><li>Output caching permitió a desarrolladores: </li></ul><ul><ul><li>Guardar la salida de páginas </li></ul></ul><ul><ul><li>De controles </li></ul></ul><ul><ul><li>Respuestas HTTP en memoria </li></ul></ul><ul><li>Se sirve el contenido más rápido obteniendo la información desde la memoria </li></ul>
  6. 6. Muchas características <ul><li>Varios switches de configuración </li></ul><ul><ul><li>Políticas de expiración </li></ul></ul><ul><ul><li>Comportamiendo de recolección automático </li></ul></ul><ul><ul><li>Callbacks (antes y después de recolección) </li></ul></ul><ul><ul><li>Dependiencias extensibles </li></ul></ul><ul><li>Contenidos a suceptibles </li></ul><ul><ul><li>Páginas </li></ul></ul><ul><ul><li>Controles de ASP.NET (fragment caching) </li></ul></ul><ul><ul><li>Respuestas de HTTP </li></ul></ul><ul><ul><li>Entre otros… </li></ul></ul>
  7. 7. Sin embargo… <ul><li>En sitios de alto tráfico la memoria se consume rápidamente </li></ul><ul><li>La memoria cache “se pelea” con la memoria de la aplicación </li></ul><ul><li>Se convierte en un problema el tráfico vs. la memoria </li></ul><ul><li>Caching es una caja negra </li></ul><ul><ul><li>¿Cómo los desarrolladores y ISV’s pueden añadir características? </li></ul></ul>
  8. 8. Nueva funcionalidad <ul><li>Un API extensible dentro de su propio nombre de espacio y ensamblado </li></ul><ul><ul><li>Que soporte aplicaciones de cliente y de servidor </li></ul></ul><ul><ul><li>Puede ser disponible para apps de escritorio </li></ul></ul><ul><ul><li>Una version factorizada del motor de ASP.NET </li></ul></ul><ul><li>Extensible </li></ul><ul><li>API consistente para el desarrollo de cache en: </li></ul><ul><ul><li>Disco </li></ul></ul><ul><ul><li>Personalizados </li></ul></ul><ul><ul><li>En la nube </li></ul></ul><ul><ul><li>Distribuidos </li></ul></ul>
  9. 9. Nueva funcionalidad Namespace System.Caching { } Disk based Windows Azure Distributed In-memory OutputCacheProvider Default.aspx Foo.ascx
  10. 10. Nueva funcionalidad Namespace System.Caching { } CacheDependency (Sql, Key-based, File) CacheItem CacheItemPolicy (expirations, priority, callbacks) CacheItem CacheItem Cache
  11. 11. ASP.NET 4.0 <ul><li>Se introduce el concepto de Custom Output-Cache provider usando System.Web.Caching.OutputCacheProvider </li></ul><ul><li>Se puede configurar en el web.config basado en el Provider Model </li></ul>
  12. 12. Conceptos <ul><li>CacheManager – clase estática que es el punto central a las nuevas características de caching </li></ul><ul><li>Cache Provider – Es la representacion del motor de cache. </li></ul><ul><li>BaseCache - es una fachada que representa un nivel mínimo de funcionalidad básica de cache. </li></ul><ul><li>ExtendedCache - extiende la clase BaseCache y es una fachada representando funcionalidad más avanzada. </li></ul>
  13. 13. Conceptos (cont.) <ul><li>CacheItem – Una clase que permite agrupar piezas de datos relacionados mediante un par (llave-valor) </li></ul><ul><li>CacheItemPolicy – Guarda la información de la política de expiración de un par. </li></ul><ul><li>CachingDependency – Te genera una dependencia de cache a un objeto </li></ul><ul><li>CacheItemVersion / CacheItemLockHandle – La representación base para bloqueos pesimistas y optimistas. </li></ul><ul><li>CacheRegion – Una representación de una región o una partición del cache. </li></ul>
  14. 14. Web.config <ul><li><caching> <outputCache defaultProvider=&quot;AspNetInternalProvider&quot;> <providers> <add name=&quot;DiskCache&quot; type=&quot;Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider&quot;/> </providers> </outputCache> </caching> </li></ul>
  15. 15. ASP.NET 4.0 defaults <ul><li>Por default, todas las respuestas del output cache son puestas a AspNetInternalProvider </li></ul><ul><li>Se puede cambiar utilizando defaultProvider </li></ul><ul><li>Se puede seleccionar diferente provider por control y por petición. </li></ul>
  16. 16. Por directiva <ul><li><%@ OutputCache Duration=&quot;60&quot; VaryByParam=&quot;None&quot; providerName=&quot;DiskCache&quot; %> </li></ul><ul><li>En el inicio de nuestra página ASPX </li></ul>
  17. 17. Por código <ul><li>public override string GetOutputCacheProviderName(HttpContext context) { if (context.Request.Path.EndsWith(&quot;Advanced.aspx&quot;)) return &quot;DiskCache&quot;; else return base.GetOutputCacheProviderName(context); } </li></ul><ul><li>Se hace un override del método GetOutputCacheProvider en el global.asax especifíca que provider usar para esa petición. </li></ul>
  18. 18. Core vs APIs opcionales <ul><li>El API del Cache es una unión de funcionalidad común </li></ul><ul><ul><li>No todos los proveedores de cache deben implementar todas las características </li></ul></ul><ul><li>Funcionalidad base para todos los proveedores </li></ul><ul><ul><li>Se representa en el tipo base CacheProvider </li></ul></ul><ul><ul><li>Almacena y obtiene un par llave </li></ul></ul><ul><ul><li>Métodos base Add/Get/Set/Contains/Remove </li></ul></ul><ul><ul><li>Particiones con nombre de cache </li></ul></ul><ul><li>Proveedores especializados se derivan de </li></ul><ul><ul><li>InMemoryCacheProvider </li></ul></ul><ul><ul><li>OutOfProcessCacheProvider </li></ul></ul>
  19. 19. InMemoryCacheProvider <ul><li>Representa un proveedor que corre exclusivamente en un app-domain </li></ul><ul><ul><li>Número de elementos de cache </li></ul></ul><ul><ul><li>Sliding expirations </li></ul></ul><ul><ul><ul><li>Caches distribuidos usualmente no pueden sincronizar expiración entre múltiples servidores </li></ul></ul></ul><ul><ul><li>Dependencias de cache (derivaciones de CacheDependency) </li></ul></ul><ul><ul><li>Callbacks para la recolección de elementos (antes y después de la recolección) </li></ul></ul><ul><ul><ul><li>Cache distribuido tal vez no deban llamar a nada </li></ul></ul></ul>
  20. 20. OutOfProcessCacheProvider <ul><li>Representa un proveedor que guarda los datos fuera de un app-domain </li></ul><ul><ul><li>Actualizaciones basadas en version (CacheItem.Version) </li></ul></ul><ul><ul><li>Actualizaciones basadas en updates (CacheItem.LockHandle) </li></ul></ul><ul><ul><li>Obtiene múltiples elementos </li></ul></ul><ul><ul><li>Obtiene metados (CacheItem.QueryTags) </li></ul></ul>
  21. 21. Integración con “Velocity” <ul><li>Cache distribuido creado por el equipo de SQL Server </li></ul><ul><li>Puntos de integración planeados: </li></ul><ul><ul><li>Implementación de OutOfProcessCacheProvider </li></ul></ul><ul><ul><li>Implementación base para SessionStateStoreProviderBase para sesiones </li></ul></ul><ul><ul><li>Implementación de OutputCacheProvider para ASP.NET output caching </li></ul></ul>
  22. 22. Migrando a lo nuevo <ul><li>ASP.NET control output caching <@OutputCache outputCacheProvider=“” /> </li></ul><ul><li>ASP.NET page output caching </li></ul><ul><ul><li>Programaticamente seleccionar entre los diferentes proveedores </li></ul></ul><ul><ul><li>Sobreescribir el método en HttpApplication </li></ul></ul><ul><ul><ul><li>httpApplication.GetOutputCacheProviderName </li></ul></ul></ul><ul><li>Output caching soporta </li></ul><ul><ul><li>Expiraciones absolutas </li></ul></ul><ul><ul><li>Dependencias basadas en archivos </li></ul></ul><ul><ul><li>Validaciones y substituciones (estáticas) </li></ul></ul>
  23. 23. Resumen <ul><li>Todo se trata sobre extensibilidad </li></ul><ul><li>Object Caching y ASP.NET Output Caching serán extensibles </li></ul><ul><li>Habrá un nuevo API para cliente y versiones completas del NET Framework </li></ul>
  24. 25. Recursos Relacionados <ul><li>Blog de Christian Strevel </li></ul><ul><li>http://team.intellekt.ws/blogs/chris/ </li></ul><ul><li>Sitio de Comunidad </li></ul><ul><li>http://gunet.com.mx </li></ul><ul><li>ASP.NET </li></ul><ul><li>http://www.asp.net </li></ul><ul><li>Visual Studio 2010 </li></ul><ul><li>http://www.microsoft.com/vstudio </li></ul>
  25. 27. © 2008 Microsoft Corporation. Todos los derechos reservados. Microsoft, Windows, Windows Vista y otros nombres de producto son y pueden ser marcas registradas y registros en Estados Unidos y en otros países. La información contenida en el presente es sólo para fines informativos y representa la visión actual de Microsoft Corporation a la fecha de esta presentación. Debido a que Microsoft debe responder a las cambiantes condiciones del mercado, no se debe interpretar como un compromiso por parte de Microsoft, y Microsoft no puede garantizar la precisión de ninguna información provista después de la fecha de esta presentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA PRESENTACIÓN.

×