Ни для кого уже не секрет, что 6го июля компания Microsoft расширила российские возможности для работы с Windows Azure и предоставила доступ к Preview-технологиям. Об одной из этих технологий я хочу рассказать в этом посте.
Сразу хочу сказать, что большая часть информации взята из официального мануала и адаптирована к восприятию на собственном примере. Оригинал написан на английском, так что русская версия не помешает.
Шаг 1. Получение доступа
Для того, чтобы пользоваться новыми возможностями Windows Azure, вам необходимо сначала оформить обычную подписку. Сейчас есть возможность получить бесплатную подписку на 90 дней, в которую входит какое-то количество вычислительных мощностей и функций.
После получения подписки необходимо добавить к ней новые возможности. Делается это на странице вашей учетной записи в разделе Предварительный просмотр компонентов. На данный момент нас интересует возможность использования веб-сайтов, поэтому смело жмем кнопку Try It Now в соответствующем разделе, после чего вас попросят выбрать подписку, в которую необходимо добавить данную фичу. Выбираем нашу подписку, жмем галочку и на этом дело сделано — вам на почту придет подтверждение, а в панели управления облаком появится новый раздел.
Тут стоит сделать отступления и сказать немного про обновленный интерфейс панели управления подписками Windows Azure. Если вы пользовались им ранее, то вы наверняка были недовольны тем, что он был написан на Silverlight, который подтормаживал, был запутанный, некрасивый и т.п. (ну по крайней мере я был недоволен). Теперь это все в прошлом. Новый портал управления подписками написан с использованием современных веб-технологий и не требуюет никаких плагинов. Одним словом — HTML5 в массы :)
Шаг 2. Создание сайта
Итак, после того, как мы вошли в портал управления подписками, мы теперь можем выбрать раздел Web Sites в левой панели. Сейчас там будет пусто, что мы попытаемся исправить. Внизу страницы есть большая кнопка + New, при нажатии на которую откроется меню с выбором доступных для создания ресурсов. Переходим в раздел WEB SITE и выбираем пункт CREATE WITH DATABASE:
Нам откроется окно мастера, который предложит нам выбрать имя будущего сайта, а также параметры базы данных — использовать существующую или создать новую (SQL Server или MySQL):
На втором и третьем шаге мы должны будем указать параметры нашей будущей базы данных, дефолтную кодировку, логин и пароль и географическую зону, где будет размещена наша виртуальная машина. Я выбрал Western Europe, доступны еще варианты North Europe и US.
После того, как вы закончите вводить настройки для нового сайта и БД и нажмете галочку на последнем шаге мастера, вы вернетесь в панель управления подписками, которая теперь будет содержать информацию о ваших новых ресурсах:
Обратите внимание на колонку Status. Если все прошло успешно, то по истечении какого-то времени (у меня было пара минут) веб сайт будет иметь состояние Running, а база данных состояние Online. Это значит, что теперь можно смело публиковать свое приложение в облако.
Шаг 3. Публикация сайта
В официальной документации к публикации сайтов в Windows Azure Web Sites перед данным разделом есть еще довольно обширная инструкция по созданию ASP.NET MVC 4 приложений, которой отведено чуть ли не больше половины от всего текста. Я не буду подробно описывать процесс создания веб-приложения в Visual Studio, а ограничусь простым заклинанием:
File -> New -> Project -> Web -> ASP.NET MVC 4 Web Application -> Internet Application
Кто понял, тот понял, а кто не понял — в конце статьи будут ссылки на оригинальные материалы, где все это описано в картинках.
После того, как мы создали сайт, мы можем начать публиковать его в Azure. Для начала нам надо получить информацию о том, какие параметры подключения использовать в нашем проекте. Windows Azure заботливо предоставляет нам возможность импортировать все необходимые настройки в наше приложение в пару кликов. Переходим в панель управления подписками в раздел Web Sites и выбираем в списке наш новый сайт. Перед вами откроется панель управления, похожая на эту:
В правой части, там где написано Quick Glance, есть пункт Download publish profile. После нажатия на него нам предложат сохранить файл с расширением .PublishSettings, что мы и сделаем. Возвращаемся в Visual Studio и жмем правой кнопкой на проекте веб-приложения, пункт Publish:
В появившемся окне жмем кнопку Import и выбираем свежескачанный файл. Переходим далее. На следующем шаге менять настройки не надо, однако стоит нажать кнопку Validate Connection, чтобы убедиться, что все корректно подключается:
На следующем шаге мастера выбираем конфигурацию, которую хотим загрузить на сервер. Обычно это Release, хотя некоторые предпочитают использовать Debug. Если вы принадлежите к таким людям, не забудьте поменять настройку. Строку подключения к БД пока не будем трогать, так как в нашем приложении еще не используется БД.
Переходим на следующий и последний шаг мастера:
Если нажать на кнопку Start Preview, то можно увидеть список всех файлов, которые пойдут на публикацию в этот момент. Например, на скриншоте ниже видно, что изменен был только один файл и только он один будет отправлен на сервер:
Нажимаем кнопку Publish, после чего Visual Studio формирует необходимый пакет и передает его нашему серверу в Azure. Когда процесс завершится, автоматически должен будет открыться веб сайт с вашим приложением.
Шаг 4. Добавление БД
И снова в официальном руководстве данному разделу посвящено большое количество картинок и описания. Я же понадеюсь на то, что большинство из вас знает как работать с базами данных в .NET и знаком с Entity Framework (ибо его использовал я и Windows Azure тоже косвенно его подразумевает).
Будем считать, что вы добавили в ваше приложение функционал работы с БД на основе EF. Надо как-то теперь его пустить в ход. Помните, при публикации сайта мы пропустили секцию, отвечающую за работу с БД? Самое время к ней вернуться и рассмотреть поподробнее:
В разделе Databases вы можете увидеть все ваши строки подключения, которые объявлены в файле Web.config. У меня тут две строки. Первая является строкой подключения для EntityFramework. И здесь есть интересная опция под названием Apply Code First Migrations. Кто следит за обновлением EF знает, что в новой версии EF добавлена функция миграций, позволяющая в коде определять разницу между двумя версиями БД и применять необходимые изменения к уже существующей БД без ее пересоздания. Так вот, при публикации в Windows Azure у вас есть возможность воспользоваться миграциями и создать БД по образу и подобию сразу же в момент публикации вашего приложения. Для этого вам необходимо всего лишь разрешить миграции в своем приложении и отметить галку (у меня это не включено, поэтому галка неактивна).
В поле строки подключения вы можете выбрать необходимую строку, которая появится в опубликованном приложении. Windows Azure уже сам сформировал необходимую строку в профиле публикации, поэтому вам достаточно лишь выбрать ее в списке доступных строк подключения и пользоваться. Однако вы вправе каким угодно способом модифицировать ее или же выбрать любую другую строку, если вы решили использовать БД вне Azure.
Заключение
Вот все нехитрые и немногочисленные шаги, которые вам надо сделать для того, чтобы опубликовать свое ASP.NET MVC приложение в новом Windows Azure Web Sites. Абсолютно ничего сложного, вся процедура занимает не более 10-20 минут (если все прошло гладко и без багов).
Стоит сказать о некоторых ограничениях, которые существуют на данный момент в Windows Azure (переведено из документации):
- Приложение должно использовать только .NET 4. К сожалению, .NET 4.5 пока не поддерживается, а жаль (с этим пунктом я столкнулся лично и словил ошибку при публикации)
- Приложение будет работать в интегрированном режиме (не классическом)
- Приложение не должно использовать аутентификацию Windows
- Если вы хотите использовать различные provider-based возможности, то используйте ASP.NET Universal Providers (пакет System.Web.Providers из NuGet).
- Если приложение пишет в файлы, то эти файлы должны быть расположены в папке контента приложения
Вот пожалуй и все, что стоит сказать. Надеюсь статья окажется полезной и вы опубликуете свой сайт в облаке Windows Azure так же легко, как это сделал я.
Посмотреть, как работает приложение в облаке, можно по адресу http://prog-facts.azurewebsites.net/. Буду рад хабра-тестированию и пользованию сайтом (написал для тренировки, но неплохо было бы, если бы идея развивалась дальше).
Полезные ссылки
Официальный сайт Windows Azure
Информация о бесплатной подписке
Предварительный просмотр компонентов
Портал управления подписками Windows Azure
Материалы для .NET разработчиков для Windows Azure
Инструкция по публикации веб-приложений в Azure