Windows Azure. Быстрый старт. Разработка приложений. Часть 1. ASP.NET и ASP.NET MVC 3

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

Подготовка

Для создания приложений для Windows Azure нам потребуется:

  • Доступ к Windows Azure - учетная запись вычислительных сервисов и, в ряде примеров, учетная запись сервисов хранения (Windows Azure Storage Services)
  • Средство разработки – Visual Web Developer 2010или Visual Studio 2010
  • Windows Azure SDK и набор расширений для Visual Studio - Windows Azure Tools for Microsoft Visual Studio

Все необходимые для разработки средства можно установить через утилиту Web Installer, которая еще и настроит IIS и прочие необходимые для работы сервисы, а также установит необходимые обновления операционной системы (подробнее см. http://www.microsoft.com/windowsazure/sdk/).

01-00

Рис. Установка средств разработки

Если у вас нет доступа к Windows Azure, можно использовать средства локальной эмуляции (как вычислительных сервисов, так и сервисов хранения), описанные в серии публикаций «Windows Azure. Быстрый старт. Локальная разработка для «облака».

Часть 1. Создание ASP.NET-приложения

В этой части мы рассмотрим шаги по созданию веб-роли, выполняемой в Windows Azure. Веб-роль выполняется внутри виртуальной машины, которая располагается на платформе Windows Azure. Инфраструктура этой платформы управляет и виртуальными машинами, и серверами. Задача разработчика заключается в создании приложений, все остальные задачи берет на себя Windows Azure.

Запустим Visual Studio 2010 с административными привилегиями – это требуется во избежание возможных ошибок из-за отсутствия необходимых привилегии при использовании ряда сервисов, например, сервисов локальной эмуляции Windows Azure.

Выполним команду File | New | Project и в списке Installed Templates выберем раздел Visual C# , затем – Cloud.

01-01

Рис. Создание нового проекта

Выберем Windows Azure Project и, при необходимости, изменим его название и местоположение. Нажмем кнопку «Ок» для создания проекта.

В диалоговой панели New Windows Azure Project выберем элемент ASP.NET Web Role и нажмем кнопку с символом «>». Диалоговая панель должна выглядеть следующим образом:

image

Рис. Добавление элемента проекта

Мы добавили к нашему проекту веб-роль, которая обеспечивает среду для выполнения веб-приложений и сайтов в Internet Information Services (IIS) 7.0. Нажмем кнопку Ok для создания проекта.

В целом, наше базовое приложение готово к развертыванию и запуску. Но перед тем как выполнить этот шаг, давайте изменим содержимое файла Default.aspx. Выберем этот файл в Solution Explorer, перейдем в режим редактирования исходного текста и после тэга < h2> введем текст: «Running in Windows Azure». Удалим два последующих параграфа, содержащих ссылки на справочную информацию по ASP.NET. Содержимое файла Default.aspx должно теперь выглядеть так:

01-02

Рис. Модифицированный файл Default.aspx

Выполним команду Debug | Start Without Debugging (или нажмем комбинацию клавиш Ctrl+ F5). После компиляции, наше приложение будет запущено под локальным эмулятором Windows Azure.

01-03

Рис. ASP.NET-приложение

Тот факт, что приложение работает под локальным эмулятором, отражается в адресной строке браузера:

01-04

Рис. Работа под локальным эмулятором

В Solution Explorer обратим внимание на два конфигурационных файла - ServiceDefinition. csdef и ServiceConfiguration. cscfg. Расширение .csdef указывает на то, что этот файл, описывает «облачный» сервис (cloud service definition), расширение .cscfg – на то, что этот файл описывает конфигурацию «облачного» сервиса (cloud service configuration). Файл ServiceDefinition. csdef содержит метаданные, используемые Windows Azure для хостинга приложений, а файл ServiceConfiguration. cscfg – конфигурационные настройки приложения и число экземпляров для выполнения каждой роли, включенной в приложение. Откроем файл ServiceDefinition. csdef и изменим размер виртуальной машины для нашей веб-роли. По умолчанию используется размер «Small», который мы заменим на «ExtraSmall». Для этого найдем в файле элемент <Web Role> и в атрибуте vmsize заменим значение «Small», который мы заменим на «ExtraSmall». Измененный файл будет выглядеть так:

01-05

Рис. Измененный файл ServiceDefinition. csdef

Отладка приложения

Перед тем как развернуть наше приложение в «облаке», давайте посмотрим, как его можно отладить локально.

  • В Solution Explorer в проекте WebRole1 найдем и откроем файл WebRole.cs.
  • Нажмем правую кнопку «мыши» на строке

return base.OnStart();

  • и выполним команду Breakpoint | Insert Breakpoint

01-06

Рис. Вставка точки останова

Нажмем клавишу F5 для запуска отладчика, встроенного в Visual Studio 2010. Так как точка останова была установлена на методе base.OnStart(), для нашего приложения будет запущен браузер, а затем выполнение приложения приостановится. Этот простой пример показывает, что при локальном запуске приложений для Windows Azure мы можем использовать штатные средства Visual Studio для отладки приложений.

01-07

Рис. Отладка в Visual Studio

Как мы отметили выше, наше приложение выполняется под управлением локального эмулятора. Чтобы увидеть это, выполним следующие действия:

  • В панели задач Windows перейдем в раздел уведомлений (обычно располагается в правой части панели задач)
  • В разделе уведомлений найдем значок Windows Azure

clip_image019

Рис. Доступ к эмулятору Windows Azure

  • Нажмем на значке правую кнопку «мыши» и выберем команду «Show Compute Emulator UI»
  • В результате описанных выше действий будет отображен пользовательский интерфейс эмулятора Windows Azure

01-09

Рис. Пользовательский интерфейс эмулятора Windows Azure

Обратим внимание на диагностические сообщения типа:

  • [fabric] Role Instance: deployment(2).WA_ASPNET.WebRole1.0
  • [fabric] Role state Busy
  • [MonAgentHost] Output: Monitoring Agent Started
  • [runtime] Role entrypoint . CALLING OnStart()
  • [runtime] Role entrypoint . COMPLETED OnStart()
  • [runtime] Role entrypoint . CALLING Run()
  • [fabric] Role state Started

Эти сообщения отображают различные этапы жизненного цикла роли, отслеживаемые сервисами Windows Azure (в данном примере – сервисами локально эмулятора Windows Azure). Использование средств мониторинга позволяет следить за работоспособностью нашего сервиса, развернутого в Windows Azure.

Подробнее о локальном эмуляторе см. серию публикаций «Windows Azure. Быстрый старт. Локальная разработка для «облака».

Развертывание приложения

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

Для развертывания приложения в Windows Azure следует выбрать в Solution Explorer наш проект и нажать правую кнопку «мыши». Среди списка доступных команд следует выбрать команду «Publish». Далее – выполнить шаги по публикации приложения, подробно описанные в цикле «Windows Azure. Быстрый старт. Развертывание приложений», в частях 1 и 2.

Удаление приложения

После того как мы убедились в том, что наше приложение успешно работает в Windows Azure, его можно удалить, чтобы не оплачивать лишние ресурсы. Для этого, на портале Windows Azure следует выбрать раздел Hosted Services, затем – развернутый проект и выполнить команды Stop и Delete. Если просто остановить проект без удаления, он все-равно будет занимать ресурсы Windows Azure, что приведет к необходимости их оплаты.

Более подробно о портале Windows Azure см. «Знакомимся с порталом Windows Azure».

Создание ASP.NET MVC 3-приложения

Выше мы рассмотрели основные шаги, требуемые для создания ASP.NET-приложения, выполняющегося в веб-роли на платформе Windows Azure. Ниже мы рассмотрим, как создать базовое приложение на ASP.NET MVC 3 и перенести его в «облако» с использованием Windows Azure.

Запустим Visual Studio 2010 с административными привилегиями – это требуется во избежание возможных ошибок из-за отсутствия необходимых привилегии при использовании ряда сервисов, например, сервисов локальной эмуляции Windows Azure.

Выполним команду File | New | Project и в списке Installed Templates выберем раздел Visual C# , затем – Web.

01-10

Рис. Создание нового проекта

Выберем ASP. NET MVC3 Web Application и, при необходимости, изменим его название и местоположение. Нажмем кнопку «Ок» для создания проекта. В панели New ASP. NET MVC 3 Project выберем шаблон Internet Application и нажмем кнопку «Ok».

01-11

Рис. Панель New ASP.NET MVC 3 Project

В Visual Studio автоматически откроет файл HomeController. cs. Изменим текст, отображаемый на экране, например, на надпись «Running in Windows Azure» и сохраним файл. Наше приложение на ASP.NET MVC 3 готово.

01-12

Рис. Измененное содержимое файла HomeController.cs

Выполним команду Debug | Start Without Debugging (или нажмем комбинацию клавиш Ctrl+ F5) и убедимся в том, что наше приложение работает.

01-13

Рис. Работа ASP.NET MVC 3-приложения

Следующий шаг – модификация приложения для работы в Windows Azure. Начнем с того, что добавим к нашему приложению новый проект на Windows Azure. В Visual Studio выполним команду File | New | Project. В диалоговой панели New Project выберем Installed Templates, Visual C# , затем – Cloud. Выберем Windows Azure Project , затем, в опции SolutionAdd to solution и нажмем кнопку «Ok». В диалоговой панели New Windows Azure Project не выбирая никаких ролей нажмем кнопку «Ok».

В Solution Explorer выберем новый проект на Windows Azure, в нем – элемент Roles и нажмем правую кнопку «мыши».

01-14

Рис. Новый проект на Windows Azure

Выполним команду Add | Web Role Project in solution. В диалоговой панели Associate with Role Project выберем ASP.NET MVC 3 и нажмем кнопку «Ok».

01-15

Рис. Ассоциация веб-проекта с веб-ролью

Наше приложение готово к запуску в Windows Azure. Мы можем повторить описанные выше шаги для запуска приложения под локальным эмулятором Windows Azure, а также, при наличии доступа к Windows Azure, развернуть наше приложение на «облачной» платформе Microsoft.

Рекомендуется использовать обновленную версию Windows Azure Tools for Microsoft Visual Studio, в которой реализована поддержка ASP.NET MVC 3 Web Role. В этом случае все необходимые динамические библиотеки копируются в пакет развертывания и разворачиваются в Windows Azure, так что MVC 3-приложение будет готово к использованию сразу же после его развертывания в «облаке». В противном случае необходимо выполнить следующие действия:

  • В SolutionExplorer выбрать элемент References и убедиться в том, что в проект включены ссылки на следующие модули:
    • Microsoft.Web.Infrastructure
    • System.Web.Helpers
    • System.Web.Mvc
    • System.Web.Razor
    • System.Web.WebPages
    • System.Web.WebPages.Deployment
    • System.Web.WebPages.Razor
  • Если какой-то из модулей не включен, его необходимо включить прямо из SolutionExplorer, нажав правую кнопку «мыши» на элементе References, выбрать команду AddReference и выбрать необходимые модули на вкладке . NET диалоговой панели AddReference.

01-16

Рис. Ссылочные модули проекта

· Для каждого модуля, перечисленного выше, следует выполнить следующие действия:

  • Выбрать модуль в Solution Explorer
  • Нажать комбинацию клавиш Alt+Enter для отображения панели свойств модуля
  • Присвоить свойству Copy Local значение true

После этого перейти к развертыванию приложения. По завершении данного упражнения не забудьте удалить приложение из Windows Azure чтобы не оплачивать использование лишних ресурсов.

В следующей части мы обсудим создание WCF-сервиса и его размещение в Windows Azure.

/АФ