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

时间:2015-05-20 06:12:35

标签: c# asp.net .net .net-4.5 asp.net-web-api2

我们有一个API(ASP.NET Web Api 2,具体而言)需要以某种算法方式遍历大量实体,以便研究所需的结果。

对于每个执行的查询,此集合都是相同的。它形成了数据"来源"每次通话。

集合的属性:

  • 大(数十万个物体)
  • 只读
  • 必须可以通过应用程序池中的并发线程独立遍历
  • 集合中的项目是仅包含少量值类型的对象。

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

对于这样的问题,是否有更好的模式,实践或框架?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

在这个SO中你可以对它们进行比较,这也可以解释它们的全部内容,以及与当前实现的区别:Memcached vs. Redis?

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

甚至还有第三个竞争对手:hazelcast