2017-10-02 3 views
-1

Ich habe ca. 6 Einstellungsdateien (xml oder json), die ich in Azure speichern, aber in meiner Windows-Client-Anwendung verwenden möchte. Ich plane, sie in Blob Speicher zu speichern und laden Sie sie mit dem folgenden Code:So speichern Sie azurblaue Blobspeicherdateien

var myWebClient = new WebClient(); 
myWebClient.DownloadFile(Address, file.FullName); 

Die Einstellungsdateien werden nicht sehr oft ändern. Wie kann ich die Dateien lokal zwischenspeichern, sodass sie nicht jedes Mal heruntergeladen werden?

Gibt es einen besseren Weg, dies zu tun? ein anderer Azure-Dienst, den ich verwenden sollte?

+0

Nicht sicher, ob ich Ihre Frage vollständig verstehe, aber ... wie werden Sie wissen, dass sich ein Blob geändert hat? Außerdem: Werden Ihre Konfigurationsdateien in öffentlichen oder privaten Blobs gespeichert? Soweit "einige andere Azure-Service" - nicht genau, was Sie suchen. –

Antwort

2

Die Einstellungsdateien ändern sich nicht sehr oft. Wie kann ich die Dateien lokal zwischenspeichern, sodass sie nicht jedes Mal heruntergeladen werden?

Per meinem Verständnis, könnten Sie die ETag Eigenschaft Ihrer Blob-Datei verwenden, die als Kennung verwenden könnte und es würde jedes Mal aktualisiert werden, wenn ein Aktualisierungsvorgang auf Ihrer Blob-Datei ausgeführt wird.

Bevor Sie die Einstellungsdateien in Ihrer Windows-Client-Anwendung laden, können Sie das ETag von Ihrer lokalen Seite aus überprüfen und mit dem entsprechenden Wert von der Serverseite vergleichen. Wenn ETag nicht übereinstimmt, können Sie die Einstellungen auf Ihre herunterladen lokale Seite für die Erneuerung, dann laden Sie die neuere (n) Einstellungsdatei (en).

Da Sie Windows-Client-Anwendung verwenden, können Sie Container öffentliche Zugriffsebene auf öffentlichen Zugang für Blobs nur lesen oder eine SAS-Token mit der begrenzten Erlaubnis gegen den Behälter erzeugen, dann könnten Sie Azure Storage Client Library for .NET verwenden und den Code folgen unten, um die ETag Eigenschaft aus dem Blobdienst wie folgt abrufen:

//access container with public access level to blobs 
//var container = new CloudBlobContainer(new Uri("https://{storage-name}.blob.core.windows.net/{container-name}")); 

//access container with SAS token 
var container = new CloudBlobContainer(new Uri("https://{storage-name}.blob.core.windows.net/{container-name}?{SAS-token}")); 

CloudBlob blockBlob = container.GetBlobReference("setting.json"); 
blockBlob.FetchAttributes(); 
string etag=blockBlob.Properties.ETag; 

Wenn WebClient mit den Einstellungsdateien herunterladen, können Sie den Etag Wert in der Datei gesetzt könnten Name Ihrer lokalen Einstellungsdatei (z. B. {filename}-{etag}.json).

Darüber hinaus können Sie Azure Storage Explorer nutzen, um Ihre Speicherressourcen zu verwalten. Darüber hinaus könnten Sie auch die Eigenschaft ContentMD5 nutzen, aber es hat einige Einschränkungen, für weitere Details können Sie sich auf here beziehen.