是否可以长时间保存对Azure CloudTable的引用?



我有一个方法,我们调用它来获取对CloudTable的引用,然后我写或查询表存储

private static CloudTable GetCloudTable() {
   var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
   var tableClient = storageAccount.CreateCloudTableClient();
   var table = tableClient.GetTableReference("TheTableName");
   return table;
}

是可以接受的,把这个在我的表处理类的构造函数?在每个表插入上运行这段代码是否会增加额外的开销?在我看来,我正在增加正在运行的事务的数量。

您的代码片段不会发送任何消息到存储服务。只有当您使用"table"变量实际创建、查询或对存储执行任何CRUD操作时,才会发送实际的消息。因此,对于"是否通过在每个表插入上运行此代码来增加事务数量?"的答案是否定的。

也就是说,CloudStorageAccount。解析和CloudConfigurationManager。GetSetting(代码片段中的第一行)确实会产生一些开销(字符串解析和配置项检索)。所以我建议你只执行一次,然后在每个表操作中重用它们的结果(是的,把它放在构造函数中是一个选项)。

然而,CreateCloudTableClient()返回的CloudTableClient对象不能保证线程安全。因此,如果线程是一个问题在你的环境(即你是你使用你的类的多个线程的相同实例),我建议创建一个CloudTableClient的新实例,每次你需要。

相关内容

  • 没有找到相关文章

最新更新