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

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

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

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

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

1.2 Создаем Storage Account

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

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

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

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

Для работы нам потребуется 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.

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