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

ASP.NET Web Api: Exposing a large, static collection across requests

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

此集合对于执行的每个查询都是相同的。它为每次调用形成数据"source"。

集合属性:

每次向 API 发出请求时都从磁盘或数据库中读取此集合会导致大量开销。所以,我们静态地坚持它,几乎作为一个单身人士。这似乎是有效的,因为静态对象在对应用程序的所有请求之间共享,并且具有与应用程序域相同的生命周期。这导致来自 API.

的几乎即时请求

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

如果您真的永远不需要刷新数据,您的解决方案就可以了。

但前提是您必须扩展到多个 Web 服务器。达到这一点,您可能需要确保所有 Web 服务器都具有相同的数据,并且 - 根据您的环境和体系结构 - 这可能很棘手。也许如果你达到这一点,你会问另一个关于 SO 的问题...

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

在此 SO 中,您对它们进行了比较,这也将解释它们的全部内容,以及与您当前的实现有何不同:Memcached vs. Redis?

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

还有第三个参赛者:hazelcast