Microsoft Azure
Облачный бизнес
Вам понадобится

Microsoft Azure

Попробуйте платформу Microsoft Azure совершенно бесплатно.

Visual Studio

Бесплатная версия Visual Studio, позволяющая создавать приложения для платформы Microsoft Azure.

SDKs и дополнительные
инструменты

Инструменты разработки приложений для платформы Microsoft Azure.

Как мы используем платформу Microsoft Azure для обработки и хранения картинок для мобильных приложений. Часть 2

Как и обещал пишу технические детали в продолжении к первой части своей статьи  "Как мы используем платформу Microsoft Azure для обработки и хранения картинок для мобильных приложений".

Итак, приступим. В этой части напишу как работать с Blob Storage в Azure и добавлять в него изображения.

Шаг №1. Создаем хранилище данных Blob Storage в Microsoft Azure.

1.1 Входим в портал  manage.windowsazure.com

1.2 Создаем Storage Account

azure storage

В качестве Url выбираем название, которое в дальнейшем будем использоваться в качестве первой части внешней ссылки для изображений. Указываем местонахождение данных, выбираем ближайшее местонахождение Data центра от нас. Можно также включить Geo-Replication для бекапа данных в другом Data центре (Отмечу, что эта опция увеличивает стоимость тарифа Microsoft Azure)

1.3 Нажимаем CREATE STORAGE ACCOUNT. Наше хранилище создано.

Шаг №2. Получаем ключи для удаленного доступа к Blob Storage.

Для этого переходим к нашем  в Blob Storage  и нажимаем MANAGE ACCESS KEYS

azure storage access key

Для работы нам потребуется PRIMARY ACCESS KEY

Шаг №3. Подключаем Blob Storage к нашему проекту. 

Для удобства работы я создал отдельный проект для Microsoft Azure. Первое, что необходимо сделать - это настроить строку подключения к нашему хранилищу:

Строку подключения указываем в файле config:

<configuration>
  <connectionstrings>
    <add name="StorageConnectionString" 
connectionstring="DefaultEndpointsProtocol=https;AccountName=AccountName;
AccountKey= PRIMARY ACCESS KEY"></add>
  </connectionstrings>
</configuration>
///Шаг №4. Прописываем в коде доступ к нашему хранилищу.
/// Метод доступа к Blob
/// 
public static CloudBlobContainer GetCloudBlobContainer()
        {
            var connectionString =
                ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
 
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
 
            // Получаем ссылку на контейнер images.
            CloudBlobContainer container = blobClient.GetContainerReference("images");
 
            //Если контейнер не существует, то создаем его
            if (container.CreateIfNotExists())
            {
                //Создаем тип доступа Public, чтобы картинки были доступны извне.
                container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
            }
 
            return container;
        }
///Шаг №5. Загружаем изображение в Blob.
/// Метод для загрузки изображений в Blob
/// 
///название файла картинки
///картинка
///формат картинки
public static string UploadImage(string fileName, Bitmap image, ImageFormat imageFormat)
        {
            //Запрашиваем наш контейнер
            CloudBlobContainer cloudBlobContainer = GetCloudBlobContainer();
            //Запрашиваем картинку по имени и если есть удаляем, чтобы перезаписать изображение
            CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(fileName);
            blob.DeleteIfExists();
            //Загружаем картинку в Blob
            using (MemoryStream mstream = new MemoryStream())
            {
                var format = GetContextType(blob, imageFormat);
                image.Save(mstream, format);
                mstream.Position = 0;
                blob.UploadFromStream(mstream);
            }
 
            //Возвращаем http ссылку на картику в Blob Storage
            return blob.Uri.OriginalString;
        }

С помощью таких несложных действий мы организовали хранение изображений в облачном сервисе для удобного и быстрого доступа к ним с наших мобильных приложений. Кому скорости отклика от Blob Storageнедостаточно (например, сервис используется во всем мире), можно включить CDN для хранения изображений на серверах максимально близких к пользователям. Эта функция также доступна среди многообразия сервисов Microsoft Azure.

Автор статьи: Денис Кретов.

 

Данный материал написан участником сообщества. В статье представлено мнение автора, которое может не совпадать с мнением корпорации Microsoft. Microsoft не несет ответственности за проблемы в работе аппаратного или программного обеспечения, которые могли возникнуть после использования материалов данной статьи.