适当的CloudTableClient实例生命周期?

时间:2013-01-05 07:08:18

标签: c# azure azure-storage

我正在使用新的WindowsAzure.Storage 2.0(可能不是一个重要的信息),我正在使用CloudTableClient实现数据访问。我见过的大多数样本都是在ASP MVC控制器的存储器中实现CloudTableClient(根据Web请求实例化)。 这样做有任何性能损失吗? 以单例样式保持长时间运行的实例是明智的吗?

4 个答案:

答案 0 :(得分:11)

您需要为每个请求创建一个新的CloudTableClient实例。 Instance members are not thread-safe,因此您无法共享单身人士。

答案 1 :(得分:1)

答案 2 :(得分:0)

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

  

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

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

答案 3 :(得分:0)

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

执行操作时,SDK使用的是HttpClientFactory,因此将重用HttpClient的单个静态实例。这样做很好,并且可以纠正Improper Instantiation antipattern,因此使用单例的常见原因已经为我们解决了。

相关代码可以在github上找到 During ExecutionHttpClient factory是通过静态Lazy<T>

实现的

值得注意的是Storage SDK doesn't support Table anymore(实际上是Cosmos SDK出现了来提供它-我正在学习更多内容),因此这可能是一个没有实际意义的观察。