2014-03-27 37 views
5

我有一種方法可以在寫入或查詢表存儲之前調用CloudTable的引用。可以長時間保持對Azure CloudTable的引用嗎?

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

是否可以將它放在我的表處理類的構造函數中?在每個表插入上運行此代碼是否需要額外的開銷?在我看來,我正在增加我正在運行的交易數量。

回答

10

您的代碼段不會將任何消息發送到存儲服務。僅當您使用「表」變量實際創建,查詢或對存儲執行任何CRUD操作時纔會發送實際消息。因此,「我是否通過在每張表上插入代碼來增加事務數量?」沒有。

這就是說,CloudStorageAccount.Parse和CloudConfigurationManager.GetSetting(代碼片段中的第一行)確實會產生一些開銷(字符串解析和配置項檢索)。所以我建議你只執行一次,然後在每個表操作中重用它們的結果(是的,把它放在構造函數中是一個選項)。

但是,由CreateCloudTableClient()返回的CloudTableClient對象不保證是線程安全的。因此,如果線程問題在你的evnvironment中是一個問題(即你使用的是來自多線程的同一個類的實例),那麼我建議在你需要的時候創建一個新的CloudTableClient實例。

+0

代碼片段是我每次要查詢或插入表格存儲時調用的代碼片段。編輯這個問題,使其更清晰。 –

+0

好的,那麼我建議你只將第一行移動到靜態構造函數。 –

相關問題