实体框架二级缓存与 NCache

实体框架是 Microsoft 推出的流行的 .NET 对象关系映射框架。它使您能够通过域对象处理关系数据。而且,它消除了您原本需要编写的大部分数据库持久性代码的需要。

实体框架的流行导致它在性能和可扩展性至关重要的高事务应用程序中频繁使用。但是,在大多数高事务处理情况下,数据库很快就会成为瓶颈。这是因为与应用程序层不同,您可以根据需要扩展添加更多应用程序服务器,而数据库层则无法执行相同的操作。

实现这种可扩展性的唯一方法是使用分布式缓存,例如 NCache. NCache 是适用于 .NET 应用程序的速度极快且可扩展的分布式缓存。它允许您缓存应用程序数据,减少昂贵的数据库访问,并提高应用程序性能和可扩展性。

虽然Entity Framework没有提供Second Level(2nd Level)Cache提供者模型, NCache 已经为实体框架实现了一个自定义 ADO.NET 提供程序,使用该提供程序 NCache 可以插入并缓存实体框架查询的结果。这允许您开始在实体框架应用程序中使用分布式缓存,而无需进行任何代码更改。

查看文件

为何使用 NCache 作为实体框架二级缓存?

如果您的实体框架应用程序在多服务器环境中运行,那么您需要一个分布式缓存作为实体框架二级缓存。 和, NCache 是用于多服务器配置的理想实体框架二级缓存,您应该出于以下原因使用它:

  1. NCache 非常快: NCache 是一种速度极快的分布式缓存,可为您提供亚毫秒级的响应时间。
  2. NCache 提供线性可扩展性: NCache 永远不会成为可扩展性的瓶颈。 它允许您将服务器添加到缓存集群以实现线性可扩展性并处理极端事务负载。
  3. 缓存大小可以无限增长: NCache 提供缓存分区并将所有缓存服务器的内存池集中在一起。因此,您只需向缓存集群添加更多服务器即可增加缓存存储。
  4. NCache 智能复制数据: NCache 让您可以智能地复制缓存而不影响性能。因此,即使缓存服务器出现故障,您也不会丢失任何缓存数据。
  5. NCache 为您提供 100% 的正常运行时间: NCache 具有自我修复动态缓存集群,无单点故障。因此, NCache 允许您在运行时添加或删除缓存服务器,而无需停止应用程序或缓存。

使用 NCache 作为实体框架二级缓存,无需编程

关于使用的最好的事情 NCache 使用 Entity Framework 是您不需要编程。 您只需修改应用程序的配置文件并指定 NCache 作为您的二级缓存提供者。 以下是 app.config 更改的示例:

<interceptors>
	<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, 
	                   Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>

使用分析模式和缓存模式

自 NCache 实体框架二级缓存提供程序作为自定义 ADO.NET 提供程序插入,它允许您在分析模式下运行它,在该模式下它记录您的应用程序向实体框架发出的所有不同查询。 这些查询与在此分析模式期间调用此查询的次数一起记录在一个文件中。 下面是一个例子:

<analysis-report>
<!--Call-count = 21-->
 <query query-text="" ["SELECT FROM Products"] | 
        [stored-procedure-name = ""] 
        caching = "true"
        expiration-type="absolute" | 
        sliding = "" 
        expiration-time="180"
        dbsyncdependency = "true"/>
</analysis-report>

这使您可以确定要缓存哪些查询以及缓存多长时间。 您还可以为部分或全部查询指定数据库同步。

NCache 实体框架二级缓存的功能

通过插入 NCache 实体框架二级缓存提供程序通过 app.config 更改,您将为您的应用程序获得企业级分布式缓存。 这里有一些功能 NCache 提供实体框架应用程序。

  1. 将缓存与数据库同步: 缓存中的某些数据可能会在您的应用程序不知情或不参与的情况下在数据库中更改。并且,对于这些数据,您可以指定相应的类来实现数据库同步功能 NCache. 这允许 NCache 然后与数据库连接,监控数据变化,然后自动更新缓存,保证缓存中的数据始终与数据库同步。 NCache 为 SQL Server 提供 SqlDependency,为 Oracle 提供 OracleDependency,为任何 OLEDB 兼容的数据库提供 DbDependency。
  2. 绝对到期: 绝对到期 NCache 为每个缓存项目单独指定,并且是一个日期时间值 NCache 自动使该项目过期。对于实体框架, NCache 要求您指定一个“间隔”值,然后使用“Now() + 间隔”公式来计算绝对到期的日期时间值。
  3. 滑动到期: 滑动到期 NCache 为每个缓存项单独指定,并且是一个间隔值。 NCache 如果在此时间间隔内既未获取也未更新缓存项,则该缓存项将过期。您可以通过指定此间隔 NCache 实体框架二级缓存提供程序配置文件。
  4. 紧凑序列化: 每当任何 .NET 对象缓存在进程外或分布式缓存中时,都必须首先对其进行序列化。而且,常规 .NET 序列化速度很慢,因为它在运行时使用 .NET 反射。 NCache 为您提供了一种注册课程的方法 NCache 和 NCache 当您的应用程序连接到缓存时生成序列化代码。 NCache 然后在内存中编译此代码并将其用于序列化。这几乎比常规 .NET 序列化快 10 倍。并且,您可以将此功能与实体框架一起使用。只需注册您的实体框架实体类 NCache 用于紧凑序列化。

运用 NCache 直接来自实体框架应用程序

虽然,使用 NCache 由于实体框架二级缓存非常快速和简单,它只为您提供一组有限的 NCache 特征。这样做的原因是 NCache 受以下事实的约束:它作为自定义 ADO.NET 提供程序插入,并且必须在 SQL 查询级别进行处理。有无数 NCache 如果您决定使用您将无法使用的功能 NCache 作为实体框架二级缓存提供者。

您的替代方法是使用 NCache 直接从实体框架应用程序中进行 NCache 像所有其他非实体框架 .NET 应用程序一样进行 API 调用。尽管走这条路需要少量的编程工作,但您可能会认为好处超过了额外的编程工作。

NCache 实体框架二级缓存中缺少的功能

以下是如果您将其用作实体框架二级缓存与使用它时您会错过的功能列表 NCache 直接从您的应用程序。

  1. 批量操作
  2. 缓存依赖
    • 基于密钥
    • 基于文件
    • 定制版
  3. 组和子组
  4. 标签
  5. 命名标签
  6. 基于对象查询语言 (OQL) 和 LINQ 的搜索
  7. 缓存项目的锁定和解锁
  8. 缓存项版本控制
  9. 流媒体API
  10. 通读、通写和后写
  11. 活动通知
    • 基于项目(更新和删除)
    • 通用(添加、更新、删除)
    • 定制版
  12. 连续查询
  13. 运行时数据共享
  14. 缓存加载器

接下来做什么?

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。