Windows Azure ne propose pas le concept de conteneurs hiérarchiques, mais il fournit un mécanisme permettant de traverser l'hiérarchie par convention et par API. Tous les conteneurs sont stockés au même niveau. Vous pouvez obtenir une fonctionnalité similaire en utilisant des conventions de dénomination pour vos noms de blob.
Par exemple, vous pouvez créer un conteneur nommé "content" et y créer des blobs portant les noms suivants :
content/blue/images/logo.jpg
content/blue/images/icon-start.jpg
content/blue/images/icon-stop.jpg
content/red/images/logo.jpg
content/red/images/icon-start.jpg
content/red/images/icon-stop.jpg
Nota que ces blobs sont une liste plate par rapport à votre conteneur "content". Cela dit, l'utilisation de "/" comme délimiteur conventionnel vous offre la possibilité de les parcourir de manière hiérarchique.
protected IEnumerable<IListBlobItem>
GetDirectoryList(string directoryName, string subDirectoryName)
{
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
CloudBlobClient client =
account.CreateCloudBlobClient();
CloudBlobDirectory directory =
client.GetBlobDirectoryReference(directoryName);
CloudBlobDirectory subDirectory =
directory.GetSubdirectory(subDirectoryName);
return subDirectory.ListBlobs();
}
Vous pouvez alors l'appeler comme suit :
GetDirectoryList("content/blue", "images")
Nota l'utilisation de GetBlobDirectoryReference y GetSubDirectory et les CloudBlobDirectory au lieu de CloudBlobContainer . Ceux-ci fournissent la fonctionnalité de traversée que vous recherchez probablement.
Cela devrait vous aider à démarrer. Faites-moi savoir si cela ne répond pas à votre question :
[ Merci à Neil Mackenzie pour l'inspiration ]