我有一个WebAPI项目,该项目使用昂贵的后端资源-设置时间,内存使用情况等都很昂贵(在我的实现中,这是Azure存储队列和表连接)。
显然,多个API调用可以通过使用锁来共享同一连接(如果这样做,则将是很好的选择),从而避免了每次启动的成本。
我的问题是:构建此架构的最佳模式是什么?
我知道使用WebAPI时,您不能真正依靠任何运行的代码-因为它对传入的请求做出反应。而且每个调用都有其自己的控制器实例。我考虑过要有一个静态类,可能在global.ascx中创建它-但是可以保证它在那里并不会被收集吗?还是有更好的方法呢?
最佳答案
不会收集静态字段(静态类是托管内存根之一),因此,除非您手动删除该引用,否则它只会在进程(可能是应用程序域)重新启动时消失。当然,这可能经常发生,具体取决于您的服务器配置,但这取决于配置:)
不过,请确保不要在该静态对象上使用事件-这是获得大量内存泄漏的好方法之一:)
关于c# - 如何在Web API中共享昂贵的资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23054729/