Entity Framework 是一个对象-关系映射引擎,它提供了对底层关系数据库的抽象,因此极大地简化了开发。 由于这些好处,越来越多的以数据为中心和高事务性的应用程序和服务是使用实体框架开发的。
但是,这些高流量应用程序面临着可扩展性问题。 尽管应用层级别是可扩展的,但它们的数据库或数据存储无法跟上不断增长的事务数量。
这是一个 分布式缓存 之所以出现,是因为它允许您缓存数据并减少那些导致可伸缩性瓶颈的昂贵的数据库访问。 但是,Entity Framework 不提供允许您在应用程序中使用分布式缓存的开箱即用解决方案。 然而,有两种方法可以将分布式缓存合并到实体框架应用程序中。 一种是修改您的实体框架应用程序代码并对分布式缓存进行直接 API 调用。 其次,是使用一个分布式缓存,该缓存实现了一个自定义 ADO.NET 提供程序,该提供程序包含了后台缓存。
实体框架有 ADO.NET 的公共提供者模型 供应商 您可以在其中为 3 编写提供程序rd 党的数据库。 NCache 已经实施了 自定义实体框架 ADO.NET 提供程序 它可以通过它自己的分布式缓存调用 NCache API。 此自定义实体框架 ADO.NET 提供程序拦截所有数据库查询调用,并将这些查询的结果集放在分布式缓存中。 然后, NCache 自定义实体框架提供程序拦截所有后续查询调用,并简单地从其分布式缓存中返回结果,而不是进行昂贵的数据库之旅。 如果分布式缓存中不存在查询的结果集,则对数据库执行查询,然后将其结果集放入分布式缓存中。
而且, NCache 自定义实体框架提供者还需要确保分布式缓存中的数据始终与数据库保持一致和同步。 而且,为此 NCache 使用 SqlCacheDependency 在 .NET 中提供。 SqlCacheDependeny 向 SQL Server 注册一个 SQL 查询,因此如果该查询表示的数据集中的任何行在数据库中发生更改,SQL Server 将向 NCache. NCache 捕获此 .NET 事件并从分布式缓存中删除相应的结果集。
图 1 显示了如何 NCache 实体框架提供程序插入实体框架应用程序。
图1 NCache 正在使用的实体框架提供程序
你可以整合 NCache 只需四个简单的步骤,即可在您的应用程序中自定义实体框架 ADO.NET 提供程序:
- 替换默认提供者: 将您的应用程序默认提供程序替换为 NCache app.config/web.config 和 .edmx 文件中的实体框架提供程序。
- 注册 NCache 提供者: 注册您的应用程序 NCache 实体框架配置 (efcaching.conf)。 在 efcaching.config 中,您可以轻松地为您的实体框架应用程序指定日志级别和过期策略等。
- 在分析模式下运行应用程序: 在分析模式下运行您的应用程序。 在分析模式下, NCache 实体框架提供程序,记录您的应用程序执行的实体框架查询及其频率。 根据日志,您可以仔细检查要缓存的实体框架查询。
- 正常运行应用程序: 切换到缓存模式并运行您的应用程序。
因此,通过使用 NCache 实体框架缓存提供者可以轻松实现线性可伸缩性,而无需更改实体框架应用程序代码。
因此,请下载完整的 60 天试用版 NCache Enterprise 并亲自尝试一下。
是的,它适用于任何实体框架连接器驱动程序,例如 SQL、Oracle、MySQL、PostreSQL 等。 NCache 缓存提供程序在 ADO.NET 实体框架提供程序和原始数据提供程序之间起作用,以缓存查询响应。
这仅适用于 SQL 服务器或任何实体框架连接器驱动程序吗?