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

Ara*_*and 5 c# azure azure-table-storage

我有一个方法,我们调用以获取对CloudTable写入或查询表存储之前的引用.

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

可以接受将它放在我的表处理类的构造函数中吗?在每个表插入上运行此代码是一个额外的开销吗?在我看来,我正在增加我正在运行的交易数量.

小智 11

您的代码段不会将任何消息发送到Storage Service.仅当您使用"table"变量实际创建,查询或对存储执行任何CRUD操作时,才会发送实际消息.所以答案是"我是否通过在每个表插入上运行此代码来增加事务数量?" 没有.

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

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