2014-03-27 7 views
5

Ich habe eine Methode, die wir aufrufen, um den Verweis auf CloudTable zu erhalten, bevor ich Tabellenspeicher schreibe oder abfrage.Ist es in Ordnung, einen Verweis auf eine Azure CloudTable für einen längeren Zeitraum zu halten?

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

Ist es akzeptabel, dies in den Konstruktor meiner Tabelle Handling Klasse zu setzen? Ist es ein zusätzlicher Aufwand, diesen Code für jede Tabelleneinfügung auszuführen? Es scheint mir, dass ich die Anzahl der Transaktionen, die ich betreibe, erhöht habe.

Antwort

10

Ihre Code-Snippets lassen keine Nachricht an den Storage Service senden. Die tatsächliche Nachricht wird nur gesendet, wenn Sie die Variable "table" zum tatsächlichen Erstellen, Abfragen oder Ausführen einer CRUD-Operation für den Speicher verwenden. Also die Antwort auf "werde ich die Anzahl der Transaktionen erhöhen, indem Sie diesen Code auf jedem Tisch einfügen?" ist NEIN.

Das heißt, CloudStorageAccount.Parse und CloudConfigurationManager.GetSetting (die erste Zeile in Ihrem Code-Snippet) erstellen einige Overhead (String Parsing und Configuration Item Retrieving). Ich schlage also vor, dass Sie sie nur einmal ausführen und dann ihr Ergebnis in jeder Tabellenoperation wiederverwenden (ja, dies ist eine Option im Konstruktor IS).

Das von CreateCloudTableClient() zurückgegebene CloudTableClient-Objekt ist jedoch nicht garantiert threadsicher. Wenn IF-Threading in Ihrer Umgebung ein Problem darstellt (d. H. Sie verwenden dieselbe Instanz Ihrer Klasse aus mehreren Threads), empfehle ich, bei Bedarf eine neue Instanz von CloudTableClient zu erstellen.

+0

Das Code-Snippet ist das, was ich jedes Mal anrufe, wenn ich etwas abfrage oder in den Tabellenspeicher einfüge. Bearbeitet die Frage, um das klarer zu machen. –

+0

ok, dann schlage ich vor, nur die erste Zeile in den statischen Konstruktor zu verschieben. –

Verwandte Themen