我有一个使用昂贵后端资源的 WebAPI 项目 - 在设置时间、内存使用等方面都很昂贵(在我的实现中它是 Azure 存储队列和表连接)。
显然,多个 API 调用可以通过使用锁来共享同一个连接(如果它们这样做就好了),从而避免了每次的启动成本。
我的问题是:构建此架构的最佳模式是什么?
我知道使用 WebAPI 您不能真正依赖任何运行的代码 - 因为它会对传入的请求作出 react ..并且每个调用都有自己的 Controller 实例。我考虑过有一个静态类,可能在 global.ascx 中创建它——但是否保证它会留在那里而不被收集?或者有更好的方法吗?
请您参考如下方法:
静态字段不会被收集(静态类是托管内 stub 之一),因此除非您手动删除引用,否则它只会随着进程(可能还有应用程序域)重启而消亡。当然,这可能会经常发生,具体取决于您的服务器配置,但这取决于配置:)
不过,请确保不要在该静态对象上使用事件 - 这是导致大量内存泄漏的好方法之一:)
