ASP.. NET Web Api:跨请求公开大型静态集合

本文关键字:大型 静态 集合 请求 NET Web Api ASP | 更新日期: 2023-09-27 17:50:00

我们有一个API (ASP。. NET Web Api 2,具体来说),它需要以某种算法的方式遍历一个非常大的实体集合,以便研究所需的结果。

这个集合对于执行的每个查询都是相同的。它构成了每次调用的数据源。

集合的属性:

  • 命令
  • 大(数十万个对象)
  • 只读
  • 必须能够被来自应用程序池的并发线程独立地遍历。
  • 集合中的项是仅由少数值类型组成的对象。

每次向API发出请求时从磁盘或数据库读取此集合会导致大量开销。我们静态地持久化它,就像单例一样。这似乎是有效的,因为静态对象在对应用程序的所有请求之间共享,并且具有与应用程序域相同的生存期。这将导致来自API的请求几乎是即时的。

是否有更好的模式、实践或框架来解决这样的问题?

ASP.. NET Web Api:跨请求公开大型静态集合

您可以使用Redis或mecmached等缓存服务器。

在这个SO中,你有一个它们之间的比较,这也将解释它们是关于什么的,以及与你当前的实现有什么不同:Memcached与Redis?

当然,这里有每个网站的官方网站:

  • 复述,
  • memcached

甚至还有第三个竞争者:hazelcast。

如果您真的不需要刷新您的数据,您的解决方案是好的。

但只有当你必须扩展到多个web服务器时才会这样。在这一点上,你可能需要确保所有的web服务器都有相同的数据,这取决于你的环境和架构,这可能是棘手的。也许当你到达这一点时,你会问另一个问题关于SO…