正确的CloudTableClient实例生命周期

本文关键字:生命 周期 实例 CloudTableClient | 更新日期: 2023-09-27 17:50:48

我正在使用新的WindowsAzure。存储2.0(可能不是相关信息),我正在使用CloudTableClient实现数据访问。我见过的大多数示例都是在asp.net MVC控制器的实例化CloudTableClient(每个web请求实例化)。这样做会有性能损失吗?以单例方式保持长时间运行的实例是明智的吗?

正确的CloudTableClient实例生命周期

您需要为每个请求创建一个CloudTableClient的新实例。实例成员不是线程安全的,所以你不能共享一个单例。

我遇到了这个问题/答案想知道同样的事情,同时通过查看SDK的源代码(其他东西)我遇到了一些有用的东西:

当执行一个操作时,SDK正在使用HttpClientFactory,因此HttpClient的单个静态实例被重用。这很好,并且纠正了不当实例化反模式,因此使用单例的常见原因已经为我们排序好了。

相关代码可以在github上找到在执行期间HttpClient工厂是通过静态Lazy<T>

实现的。

值得注意的是,Storage SDK不再支持Table了(相反,Cosmos SDK 出现提供它-我正在了解更多),所以这可能是一个没有实际意义的观察。

我认为在2020年你应该重复使用。

https://azure.microsoft.com/en-us/blog/performance-tips-for-azure-documentdb-part-1-2/

看CloudTableClient文档,我意识到它不是线程安全的。

此类型的任何公共静态(在Visual Basic中共享)成员都是线程安全的。不能保证任何实例成员都是线程安全的。

因此可能需要为每个请求实例化它。