2016-04-22 8 views
1

Wir haben ein Multi-Tenant-System, das aus einer Azure-Webrolle, einer Mitarbeiterrolle und Desktop/Mobile-Apps besteht. Jede Client-App ermöglicht das Hochladen von Bildern, die an ein mandantenspezifisches Azure Blob Storage-Konto weitergeleitet werden.Temporäre Dateien in einer Azure-Worker-Rolle lesen/schreiben

Die Azure Worker-Rolle fragt diese Dateien ab und verarbeitet sie. Wir verwenden SDKs von Drittanbietern für die Verarbeitung, die entweder einen Dateisystempfad oder einen Stream erfordern. Die Bereitstellung eines Streams direkt aus dem Blob-Speicher ist trivial, aber das SDK erwartet auch, physische Metadatendateien auszuspucken, die von unserer App konsumiert werden.

Dies ist ein Problem, da das SDK eine Blackbox ist und keine Alternative bietet. Gibt es eine Möglichkeit, lokalen Speicher in Worker-Rollen für temporäre Dateien zu haben? Dieser Speicher wird nur für einige Sekunden pro Workerolleniteration benötigt und kann wiederverwendet/verworfen werden, wenn die Rolle wiederverwendet oder heruntergefahren wird. Außerdem sind die Dateien ziemlich groß (500 MB +), so dass eine Blob-Latenz nicht erwünscht ist.

Die Suche ergab einige hacky Problemumgehungen, von denen die beste scheint, etwas Blob Storage Wraps, um unsere Rolle als Dateisystem zugreifen zu lassen.

Gibt es eine Möglichkeit, einfach Zugriff auf ein Dateisystem zu haben, das Web Role App_Data-Ordnern ähnlich ist?

Antwort

3

Sie verwenden RoleEnvironment.GetLocalResource() innerhalb einer Azure Worker Role einen benannten Griff zu lokalen Dateispeicher zu erhalten:

RoleEnvironment.GetLocalResource()

Diese Hardcoding spezifischer Dateipfade vermeiden, die im Laufe der Zeit ändern können usw.

Viel Glück!

+0

Danke. Ich werde das ausprobieren und zurückgehen. –