Поделиться праздничными фото с помощью службы Photo Sharing

Грэг Дункан

У вас куча фотографий после праздников? Хотя вы всё знаете о различных сервисах и сайтах, позволяющих публиковать фотографии и делиться ими с друзьями, как разработчик вы хотите свой собственный сервис, не так ли? И, возможно, использовать этот шанс сыграть в мобильное приложение, которое подцепить к Windows Azure?

Познакомьтесь с этой продолжающейся серией, чтобы сделать именно это!

Теория приложений фотохостинга в облаке для WindowsPhone и Azure

В следующей паре постов мы собираемся коснуться того, как можно соединить ваше приложение для Windows Phone и облако. Хотя большинство этих концепций можно применить к любому провайдеру облачных сервисов, в этой статье мы сбираемся сфокусироваться на Windows Azure.

Пример, который мы собираемся рассмотреть, это приложение для фотохостинга, Capture TechEd, которое было создано при подготовке к моему выступлению на сессии Phone+Cloud на последних конференциях TechEd NZ и TechEd Australia. Вкратце, приложение позволяет пользователю сделать снимок и поделиться им с другими пользователями приложения Capture TechEd. Последовательность событий такова:

  • Пользователь делает снимок с помощью приложения Capture TechEd
  • Он добавляет комментарий и назначает фото определенный трек TechEd
  • Фото загружается в хранилище BLOB
  • URL, комментарии и информация о треке загруженного фото добавляется к очереди обработки
  • Фото извлекается из очереди и масштабируется к размеру 173×173 (размер начальной ячейки (Start tile) Windows Phone)
  • Всем пользователям приложения рассылается уведомление о том, что надо обновить начальную ячейку для просмотра нового фото

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

Шаг 1: Делаем снимок камерой

Шаг 2: Загружаем фото в хранилище Blob

Шаг 3: Загружаем задачу обработки

Шаг 4: Добавляем задачу в очередь

Шаг 5: Обработка изображения

Шаг 6: Обновление начальной ячейки через уведомление

Шаг 7: Получение последних фотографий

Практическое руководство по приложениям разделения фотографий с использованием WindowsPhone и Azure

Предыдущее сообщение серии называлось «Теория приложений фотохостинга в облаке для Windows Phone и Azure» Мы рассмотрим архитектуру простого приложения разделения фотографий. Шаги с первого по пятый в этом процессе касаются фотографирования с помощью камеры и загрузки фотографий в хранилище Blob. Чтобы следовать за статьей, вам надо установить как Windows Phone SDK, так и Windows Azure SDK for Visual Studio.

Шаг 1: Создание приложения для телефона

clip_image002

 private CameraCaptureTask camera = new CameraCaptureTask();
private string filename;
public MainPage() {
    InitializeComponent();
    camera.Completed += CameraCompleted;
}
private void CameraCompleted(object sender, PhotoResult e)  {
    var bmp = PictureDecoder.DecodeJpeg(e.ChosenPhoto);
    filename = Guid.NewGuid() + ".jpg";
    using (var file = IsolatedStorageFile.GetUserStoreForApplication().OpenFile(filename, FileMode.Create, FileAccess.Write)) {
        bmp.SaveJpeg(file, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
    }
    CaptureImage.Source = bmp;
}
private void CaptureClick(object sender, RoutedEventArgs e) {
    camera.Show();
}

Шаг 2: Создание облачного приложения

Следующий шаг – создание облачного проекта, который может быть добавлен в то же решение, которое содержит приложение для телефона. Щелкните правой клавишей мыши на узле Решение в проводнике решений и выберите Добавить-> Новый проект, и в диалоговом окне выберите шаблон Windows Azure Project из раздела Облако.

clip_image004

Шаг 3 : Генерация подписи разделяемого доступа

Для того чтобы загрузить фото из нашего приложения Windows Phone напрямую в хранилище Blob Windows Azure нам понадобиться один из двух ключей доступа, полученных через консоль управления Windows Azure для учетной записи хранилища, в которое вы хотите загрузить фото. Эти ключи спроектированы для использования в веб-сайтах или сервисах, расположенных на серверах, а не в клиентских приложениях. Если для построения настольных приложений или приложений для Windows Phone используется клиентская технология Silverlight, то вы не должны включать ключи доступа в такие приложения.

clip_image006

Шаг 4: Получение подписи общего доступа

Теперь, когда у нас есть служба, генерирующая подпись общего доступа, нам нужно вызвать ее из нашего приложения Windows Phone. Чтобы сделать это нам нужно добавить ссылку на UploadService в проекте Windows Phone. Убедитесь, что собрали решение и можете посмотреть UploadService ( правой клавишей мыши на UploadService.svc и выбрать пункт Просмотр в браузере.

Шаг 5: Завершение загрузки

Последним шагом станет вызов метода UploadUriWithSharedAccessSignature для получения SAS, который затем применяется для загрузки фото в хранилище Blob. Следующий код начинается вызовом этого метода, затем, после получения ответа, фото загружается в хранилище с помощью класса CloudBlobUploader. Полный код для класса приведен в конце сообщения.

clip_image008

Это лишь начало серии статей, в котором вы только что загрузили свои фотографии в Azure. Следите за будущими статьями, описывающими конец истории…

Вот несколько ссылок, которые могут оказаться интересными: