Как отобразить список BLOB-объектов Azure контейнера в приложении Silverlight? - PullRequest
0 голосов
/ 26 января 2012

Как отобразить список BLOB-объектов Azure контейнера в приложении Silverlight?

Я знаю, как это сделать в обычном .Net, но мне нужно в Silverlight . Я могу загрузить, но хочу показать список уже загруженных .

Примерно так, но для Silverlight:

CloudStorageAccount account =
            CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

CloudBlobClient blobClient = account.CreateCloudBlobClient();

IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers()

Спасибо

Ответы [ 2 ]

1 голос
/ 27 января 2012

Существует два способа связи с хранилищем BLOB-объектов Azure:

  1. API на основе .NET - это тот, который вы использовали в обычном приложении .NET - однако его нельзя использовать из приложения Silverlight
  2. RESTfull HTTP API - это тот, который вы можете использовать непосредственно из Silverlight

Однако встроенной библиотеки нет. Вы должны будете написать HTTP-запросы самостоятельно. Это может быть немного сложно, и это будет выглядеть примерно так:

private void ListFiles()
    {
        var uri = String.Format("{0}{1}", _containerUrl, "?restype=container&comp=list&include=snapshots&include=metadata");

        _webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(uri));
        _webRequest.BeginGetResponse(EndListFiles, Guid.NewGuid().ToString());
    }

    private void EndListFiles(IAsyncResult result)
    {
        var doc = _webRequest.EndGetResponse(result);

        var xDoc = XDocument.Load(doc.GetResponseStream());
        var blobs = from blob in xDoc.Descendants("Blob")
                    select ConvertToUserFile(blob);
    //do whatever you need here with the blobs.


    }

Обратите внимание, что это предполагает, что контейнер является общедоступным. Если ваш контейнер не является общедоступным, у вас будет два варианта:

  1. Подпишите ваш HTTP-запрос с помощью ключа приложения - это, как правило, плохие идеи, когда вы даете свой ключ доступа к приложениям Silverlight (которые могут распространяться через Интернет).
  2. Использовать подписи общего доступа

Подробнее о параметрах можно прочитать здесь.

Надеюсь, это поможет.

0 голосов
/ 27 января 2012

Хорошо, никакой магии здесь. Я могу использовать API или (что я буду делать) использовать службу WCF для получения хранилища BLOB-объектов Azure и передать эту службу в моем приложении Silverlight для получения данных.
Не волшебство, но не сложное.

...