今天,内存中分布式缓存对于在多服务器环境中运行的应用程序非常流行,因为它有助于提高应用程序的可伸缩性和性能。 直到 .NET Framework 3.5 System.Web.Caching 命名空间下的 ASP.NET Cache 对象仅可用于 Web 应用程序。 但在 .NET Framework 4.0、.NET 4.0 Cache 被添加到所有类型的 .NET 应用程序的 System.Runtime.Caching 命名空间下。 .NET 4.0 缓存具有类似于 ASP.NET 缓存的功能。 但是,与 ASP.NET Cache 不同的是,它有一个抽象类 ObjectCache,可以根据需要以自定义的方式实现。 因此,本质上 .NET 4.0 缓存可以扩展,而 ASP.NET 缓存不能。 而且,MemoryCache 是 .NET 4.0 Cache 的默认内存缓存实现。 这是一个例子:
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); |
.NET 4.0 Cache 的默认实现 MemoryCache 的一个限制是它是一个独立的进程内缓存。 如果您的 .NET 应用程序在多服务器环境中运行,那么您不能使用它,因为您需要一个可以跨多个服务器同步缓存的分布式缓存。 但幸运的是,.NET 4.0 缓存架构允许我们插入第三方分布式缓存解决方案并对其进行扩展。
为了解决这个需求, Alachisoft 已经实现了一个易于使用的 .NET 4.0 缓存提供程序,可以解决数据同步、分发和可伸缩性问题,尤其是在网络农场/花园的情况下。 该提供商基本上集成了 NCache 使用 .NET 4.0 缓存。 NCache 是一个非常流行的.NET 企业级分布式缓存。 通过 NCache您可以插入的 .NET 4.0 Cache Provider NCache 与您的应用程序一起实现分布式缓存的好处。 让我告诉你它是多么容易完成 NCache 几步。
- 通过基于 GUI 创建集群(分布式)缓存 NCache 经理。 我创建了一个名为“我的集群缓存“。
- 启动缓存以使其可以使用。
- 添加参考文献 Alachisoft.NCache.ObjectCacheProvider 库从“NCache安装目录/NCache/integration/DotNet4.0 缓存提供程序“
- 在您的项目中包含以下命名空间。
1using Alachisoft.NCache.ObjectCacheProvider; - 初始化您的 CacheProvider(从 ObjectCache 继承)并将您的缓存名称传递给提供程序,如下所示。
1234ObjectCache _cache;string _cacheId = "MyClusterCache" ;_cache = new CacheProvider(_cacheId); - 现在,您可以使用 CacheProvider 命令对缓存执行所有与缓存相关的操作。
这是 .NET 4.0 扩展的完整示例 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 .NET 4.0 Cache 的实现还包括 ChangeMonitor 的自定义实现 NCache入口更改监视器, NCache文件更改监视器, NCacheSQLChangeMonitor 和 NCacheOracle变更监视器 分别用于条目、文件、SQL 和 Oracle 的更改。 通过 NCache.NET 4.0 Cache 接口的实现,您现在可以采用 .NET 4.0 Cache 作为您的标准,同时受益于在多服务器环境中运行的 .NET 应用程序的企业级分布式缓存。
哎嗨!
NCache .Net 4.0 Cache 的 ObjectCacheProvider 已正式停产,因此该程序集 Alachisoft.NCache.ObjectCacheProvider 不再附带 NCache 安装。 这是因为缓存应用程序块功能现在内置于 .NET Framework .Net 4.0 之后的版本中不推荐使用 5.0 和 Enterprise 库。 当前的 .NET 缓存支持不附带限制 3rd 方集成的提供程序模型,例如 NCache 插上。
您可以使用 NCache 对象缓存(应用程序数据缓存)API,用于缓存对象 NCache 按照以下链接中的指南进行操作:
https://www.alachisoft.com/resources/docs/ncache/help/basic-cache-operations.html?mw=MjQw&st=MQ==&sct=MA==&ms=QwAAEAAAAAAAAAACASgE
嗨伊克巴尔,
我正在尝试实现博客“如何配置 .NET 4.0 缓存以使用分布式缓存?”中提供的代码。
我下载了试用版 NCache Enterprise 4.6.
我必须添加参考 Alachisoft.NCache.ObjectCacheProvider 库从“NCache安装目录/NCache/integration/DotNet4.0 缓存提供程序“但我看不到 Alachisoft.NCache.ObjectCacheProvider.dll 在我的安装目录中的集成文件夹下。
请您进一步指导我在哪里可以找到 Alachisoft.NCache.ObjectCacheProvider.dll?
这个功能在 Ncache 4.6? 如果是,如何实现?
希望尽快收到您的来信。
谢谢,
塞贾尔