我想在 ASP.NET MVC 应用程序中维护一个对象/连接池。池的目的是通过重用与第三方 Web 服务的连接来提高性能。第三方 Web 服务需要返回会话 ID 的登录调用 - 池保存这些会话 ID。
我的问题是,我在哪里实例化这个对象池,以便它可以在所有请求中使用?它只会被 1 个控制器使用,但如果我在控制器中实例化它,我相信即使它是单例,也会为每个用户请求实例化一个新的对象池?将其存储在Application状态是否合理?
我想在 ASP.NET MVC 应用程序中维护一个对象/连接池。池的目的是通过重用与第三方 Web 服务的连接来提高性能。第三方 Web 服务需要返回会话 ID 的登录调用 - 池保存这些会话 ID。
我的问题是,我在哪里实例化这个对象池,以便它可以在所有请求中使用?它只会被 1 个控制器使用,但如果我在控制器中实例化它,我相信即使它是单例,也会为每个用户请求实例化一个新的对象池?将其存储在Application状态是否合理?
您所说的对象池有一个名称:它通常称为缓存。
您可以使用ObjectCache
该类,更具体地说是MemoryCache类,它是它的一种实现。
我不知道您如何实现对象/连接池,但如果您遵循对象池模式,您可以简单地应用单例模式并在 global.asax 的 Application_Start 中执行一些初始化代码(早期加载)。