Hoy en día, la caché distribuida en memoria se ha vuelto muy popular para las aplicaciones que se ejecutan en un entorno de varios servidores porque ayuda a mejorar la escalabilidad y el rendimiento de las aplicaciones. Hasta .NET Framework 3.5 había un objeto ASP.NET Cache disponible solo para la aplicación web en el espacio de nombres System.Web.Caching. Pero en .NET Framework 4.0, .NET 4.0 Cache se agrega en el espacio de nombres System.Runtime.Caching para todos los tipos de aplicaciones .NET. .NET 4.0 Cache tiene una funcionalidad similar a ASP.NET Cache. Pero, a diferencia de ASP.NET Cache, tiene una clase abstracta ObjectCache que se puede implementar de forma personalizada según sea necesario. Entonces, en esencia, .NET 4.0 Cache se puede extender, lo que ASP.NET Cache no puede. Y MemoryCache es la implementación de caché en memoria predeterminada de .NET 4.0 Cache. Aquí hay un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
private static ObjectCache cache = MemoryCache.Default; private CacheItemPolicy policy = null; private CacheEntryRemovedCallback callback = null; // Registering callbacks and policies… callback = new CacheEntryRemovedCallback(this.MyCachedItemRemovedCallback); policy = new CacheItemPolicy(); policy.Priority = (MyCacheItemPriority == MyCachePriority.Default) ? CacheItemPriority.Default : CacheItemPriority.NotRemovable; policy.RemovedCallback = callback; HostFileChangeMonitor changeMonitor = new HostFileChangeMonitor(FilePath); policy.ChangeMonitors.Add(changeMonitor); // Add inside cache… cache.Set(CacheKeyName, CacheItem, policy); |
Una limitación de la implementación predeterminada de .NET 4.0 Cache MemoryCache es que es una caché en proceso independiente. Si su aplicación .NET se ejecuta en un entorno de varios servidores, entonces no puede usar esto porque necesita un caché distribuido que pueda sincronizar el caché en varios servidores. Pero, afortunadamente, la arquitectura de caché .NET 4.0 nos permite conectar una solución de caché distribuida de terceros y ampliarla.
Para abordar esta necesidad, Alachisoft ha implementado un proveedor de caché .NET 4.0 fácil de usar que puede resolver problemas de sincronización, distribución y escalabilidad de datos, especialmente en el caso de una granja/jardín web. Este proveedor básicamente integra NCache con caché .NET 4.0. NCache es un caché distribuido de nivel empresarial muy popular para .NET. A través de NCacheProveedor de caché de .NET 4.0 que puede conectar NCache con su aplicación para lograr los beneficios de un caché distribuido. Déjame mostrarte lo fácil que se puede hacer con NCache por unos pocos pasos.
- Cree un caché agrupado (distribuido) a través de una GUI basada NCache Gerente. Creé un caché agrupado llamado "MiClusterCache.
- Inicie el caché para que esté listo para usar.
- Añadir referencias de Alachisoft.NCache.ObjectCacheProvider biblioteca a su aplicación desde "NCacheInstalarDir/NCache/integration/DotNet4.0 Proveedor de caché"
- Incluya el siguiente espacio de nombres en su proyecto.
1using Alachisoft.NCache.ObjectCacheProvider; - Inicialice su CacheProvider (heredado de ObjectCache) y pase su nombre de caché al proveedor como se muestra a continuación.
1234ObjectCache _cache;string _cacheId = "MyClusterCache" ;_cache = new CacheProvider(_cacheId); - Ahora puede realizar todas las operaciones relacionadas con el caché en su caché usando los comandos CacheProvider.
Aquí hay un ejemplo completo de .NET 4.0 extendido para NCache:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
ObjectCache _cache; string _cacheId = "MyClusterCache" ; // Initialize with NCache’s .NET 4.0 Cache Provider. _cache = new CacheProvider(_cacheId); // Registering callbacks and policies… NCacheFileChangeMonitor changeMonitor = new NCacheFileChangeMonitor(fileNames); CacheItemPolicy ciPolicy = new CacheItemPolicy(); ciPolicy.ChangeMonitors.Add(changeMonitor); ciPolicy.RemovedCallback += new CacheEntryRemovedCallback(onCacheEntryRemoved); //Add the dependent items in the cache. _cache.AddItems(ciPolicy, 0, totalKeys); |
NCache La implementación de .NET 4.0 Cache también incluye la implementación personalizada de ChangeMonitor como NCacheEntradaCambiarMonitor, NCacheMonitorear cambio de archivo, NCacheSqlChangeMonitor y NCacheOracleChangeMonitor para cambios basados en entrada, archivo, SQL y Oracle respectivamente. A través de NCacheCon la implementación de la interfaz .NET 4.0 Cache, ahora puede adoptar .NET 4.0 Cache como estándar y, al mismo tiempo, beneficiarse de una caché distribuida de nivel empresarial para sus aplicaciones .NET que se ejecutan en un entorno de varios servidores.
¡Eh, Hola!
NCache ObjectCacheProvider para .Net 4.0 Cache se suspendió oficialmente y, por lo tanto, el ensamblado Alachisoft.NCache.ObjectCacheProvider ya no se envía con NCache instalación. Esto se debe a que la función Caching Application Block ahora está integrada en .NET Framework 4.0 y la biblioteca Enterprise están obsoletas en las versiones posteriores a .Net 5.0. La compatibilidad actual con el almacenamiento en caché de .NET no viene con un modelo de proveedor que limite las integraciones de terceros, como NCache Enchufar.
Puede utilizar el NCache almacenamiento en caché de objetos (almacenamiento en caché de datos de la aplicación) API para almacenar en caché objetos en NCache siguiendo las instrucciones en el siguiente enlace:
https://www.alachisoft.com/resources/docs/ncache/help/basic-cache-operations.html?mw=MjQw&st=MQ==&sct=MA==&ms=QwAAEAAAAAAAAAACASgE
Hola Iqbal,
Estoy tratando de implementar el código provisto en el blog '¿Cómo configurar .NET 4.0 Cache para usar un caché distribuido?'
Descargué la versión de prueba de NCache Enterprise 4.6.
Tengo que agregar referencias de Alachisoft.NCache.ObjectCacheProvider biblioteca a la aplicación desde “NCacheInstalarDir/NCache/integration/DotNet4.0 Cache Provider“ pero no puedo ver Alachisoft.NCache.ObjectCacheProvider.dll en la carpeta de integración en mi directorio de instalación.
¿Puede por favor guiarme más dónde puedo encontrar Alachisoft.NCache.ObjectCacheProvider.dll?
¿Esta funcionalidad está disponible en Ncache 4.6? En caso afirmativo, ¿cómo lograrlo?
Espero tener noticias tuyas lo antes posible.
Gracias,
sejal