Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Разработка приложений Облако/Azure Windows Azure Web Sites: хостинг как сервис RSS

Windows Azure Web Sites: хостинг как сервис

Текущий рейтинг: 0 (проголосовало 0)
 Посетителей: 1139 | Просмотров: 1313 (сегодня 0)  Шрифт: - +

Windows Azure Web Sites (WAWS) — очень привлекательная функциональность облачной платформы Microsoft. Это сервис, который создан поверх инфраструктуры Platform as a Service (PaaS) в Windows Azure и который упрощает задачи развертывания, управления и масштабирования, связанные с размещенными облачными приложениями. Если вы сочли, что WAWS — очередное чрезмерно восхваляемое решение хостинга, подумайте еще разок. Чем он отличается, так это уровнем масштабируемости и доступности, поддерживаемым множеством информационных центров по всему миру и механизмами восстановления после сбоев (failover mechanisms), унаследованными от компонентов PaaS. Более того, платформа Windows Azure предлагает множество дополнительных средств и возможностей помимо WAWS, что позволяет разработчикам расширять свои приложения по мере роста нагрузки и, в том числе, поддерживать большие объемы данных, идентификацию, мобильные сервисы и т. д.

Модели развертывания в информационном центре

Таксономия на рис. 1 иллюстрирует различные модели, связанные с развертыванием веб-приложения в общедоступном информационном центре. Количество уровней, делегируемых платформе или поставщику, позволяет различать Infrastructure as a Service (IaaS), PaaS и Software as a Service (SaaS).

*

Рис. 1. Таксономия моделей развертывания в облаке

Infrastructure (as a Service)Инфраструктура (как сервис)
ApplicationsПриложения
DataДанные
RuntimeИсполняющая среда
MiddlewareПромежуточное ПО
OSОС
VirtualizationВиртуализация
ServersСерверы
StorageХранилище
NetworkingСетевые средства
Platform (as a Service)Платформа (как сервис)
Software (as a Service)Программное обеспечение (как сервис)
You ManageПод вашим управлением
Vendor ManagesПод управлением поставщика


Чем больше уровней вы делегируете поставщику, тем легче развертывать решение, хотя, в целом, уровень управления настройками делегированных уровней уменьшается. Windows Azure предлагает модели развертывания как IaaS, так и PaaS, которые в сочетании с другими сервисами позволяют компаниям создавать очень сложные и высокомасштабируемые облачные архитектуры. Исходя из этого, где же размещается WAWS?

Почему вам понравится Windows Azure Web Sites

Как мы упоминали, WAWS построен поверх инфраструктуры Windows Azure PaaS, а это значит, что вам придется заботиться только о поддержке приложения и уровней данных в стеке развертывания. Большая разница в сравнении с традиционной моделью PaaS, предлагаемой Windows Azure, заключается в том, что некоторые из задач развертывания и конфигурирования значительно упрощаются. Это возможно благодаря процессу подготовки нижележащего WAWS, который основан на комбинации рабочих ролей без состояний, хранилища Binary Large Objects (BLOB) и реляционных баз данных.

Архитектура поддержки WAWS показана на рис. 2. Это элегантный и надежный подход к предоставлению мультитенантной среды для хостинга веб-приложений. Работает он весьма просто.

  1. Клиент выдает запрос на размещение http://foo.azurewebsites.net.
  2. Запрос проходит через Windows Azure Network Load Balancer и попадает в соответствующее развертывание.
  3. Модуль Application Request Routing (ARR) получает информацию от базы данных исполняющей среды о foo.com, определяет, какие веб-серверы должны использоваться (или уже используются) для хостинга данного веб-сайта, а затем пересылает запрос соответствующему веб-серверу.
  4. Запрос обрабатывается веб-сервером; при этом контроллер хранилища помогает ему обратиться к нужному экземпляру SQL Server в том случае, если данные требуется считать или записать.
  5. После обработки запроса клиенту посылается ответ.

*

Рис. 2. «За кулисами» Windows Azure Web Sites

Windows Azure Network Load BalancerWindows Azure Network Load Balancer
IIS APP (Sites Load Balancer)IIS APP (Sites Load Balancer)
Runtime DatabaseБаза данных исполняющей среды
API Front EndКлиентская часть API
Deployment ServersСерверы развертывания
Web ServerВеб-сервер
W3WP.exe IIS Application Pool ProcessПроцесс пула приложений W3WP.exe (IIS)
MeteringМониторинг
Dynamic Web Activation ServiceDynamic Web Activation Service
Storage ControllerКонтроллер хранилища
Web Sites DatabaseБаза данных веб-сайтов
Cloud DriveОблачное хранилище
PaaS Worker RoleРабочая роль PaaS
Windows Azure SQL DatabaseWindows Azure SQL Database
Windows Azure StorageWindows Azure Storage


Внутри каждого веб-сервера размещаются несколько процессов W3WP.exe (или сайтов), отслеживаемых специальным процессом, который ведет мониторинг ресурсов, ошибок и обеспечивает протоколирование. Кроме того, Dynamic Web Activation Service отвечает за активацию и деактивацию сайта, введение квот и развертывание файлов приложения. Завершают картину два дополнительных компонента: на серверах развертывания размещаются механизмы FTP и Web Deploy, а клиентская часть API предоставляет интерфейс для целей автоматизации.

Эта архитектура обеспечивает почти мгновенное развертывание с возможностью горизонтального масштабирования по мере необходимости.

Подумать об использовании WAWS стоит по нескольким важным причинам. Одна из них заключается в том, что этот сервис обеспечивает отличную поддержку разметки и скриптов на клиентской стороне, включая возможность соединения с базами данных SQL Server и MySQL. Это означает, что вам не придется заботиться о реализации серверной части веб-сервисов и серверной логики. Другая веская причина — способность WAWS к автоматическому масштабированию поддержки веб-пользователей как в моменты пиковой нагрузки, так и в периоды затишья.

Поскольку вы платите только за то, что используете, вы можете обеспечить отзывчивую среду своим пользователям при любой нагрузке и в то же время свести расходы к минимуму. Сервис WAWS также поддерживает методологии непрерывной разработки, что позволяет осуществлять развертывание напрямую из репозитариев исходного кода, применяя Git на клиенте, GitHub, CodePlex, Bitbucket или Team Foundation Server (TFS). Можно мгновенно загружать новый код или обеспечить постоянную интеграцию с онлайновым репозитарием. Благодаря модели подготовки сервис WAWS предлагает встроенную поддержку WordPress, Joomla!, Drupal, DotNetNuke, Umbraco и др. Эти шаблоны разбиты на категории в галерее WAWS и включают блоги, управление контентом, электронную коммерцию, форумы и вики-сайты.

Ограничения

Как и в любой другой технологии, упрощающей решение какой-либо проблемы, в WAWS тоже пришлось ввести свои ограничения. Например, WAWS не поддерживает промежуточную среду для тестирования или изоляцию сетей для создания моста между облачными приложениями и корпоративными сетями (в том числе Windows Azure Connect и Windows Azure Virtual Networks). Однако пользователи могут задействовать сервис Service Bus Relay для связи с корпоративными ресурсами. Кроме того, нельзя выполнять средство доступа к удаленному рабочему столу в вычислительных экземплярах (compute instances) или запускать стартовую задачу при развертывании. Но даже при таких ограничениях WAWS является отличным решением для разработки и развертывания веб-приложений, не требующих высокого уровня адаптации.

Практикум

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

Мы исследуем базовые элементы сервиса WAWS, создав простое, но практичное приложение на основе ASP.NET MVC 4 и использовав SQL Server в качестве серверной части. Это приложение будет поддерживать CRUD-операции (Create, Read, Update and Delete) и вряд ли потребует написания какого-либо кода. Пройдя подготовку WAWS и создание приложения ASP.NET MVC 4, мы развернем его с помощью Web Deploy из Visual Studio 2012. Единственное, на что придется потратиться, — это SQL Database; выполнение приложения ASP.NET MVC 4 в рамках WAWS бесплатно. Вы можете бесплатно запускать до десяти сайтов без даты окончания обслуживания.

Запустите Visual Studio и создайте проект MVC

Для начала откройте Visual Studio 2012 как администратор и щелкните File | New | Project. Выберите Web from the Installed Templates, а затем ASP.NET MVC 4 Web Application. Назовите проект MVCAzure.Website и щелкните OK (рис. 3). Далее вам понадобится выбрать Project Template. В данном случае укажите Internet Application. В качестве View Engine будет использоваться Razor.

*

Рис. 3. Создание нового проекта веб-приложения ASP.NET MVC 4

Code First

Подход Code First означает, что создаваемые вами в Visual Studio классы будут определять нижележащие таблицы в SQL Server. В приложении ASP.NET MVC 4 это подразумевает, что мы добавим некоторые модули классов в папку Models в Visual Studio Solution Explorer, как показано на рис. 4. Свойства, определенные в модулях классов, станут структурами таблицы SQL Database. Это весьма продуктивный подход, так как вам не приходится заботиться о сопоставлении своих объектов C#/Visual Basic с реляционными структурами данных. Для упрощения этого объектно-реляционного сопоставления мы задействуем Entity Framework. Эта инфраструктура является средством объектно-реляционного сопоставления (object-relational mapper), которая значительно облегчает взаимодействие с реляционной базой данных. Она позволяет выполнять CRUD-операции над объектами без сложных SQL-выражений.

*

Рис. 4. Добавление класса в папку Models

Начнем с выбора папки Models в Solution Explorer. Из меню Project выберите Add Class. Присвойте классу имя Person. Вставьте следующие свойства в этот класс (данные свойства станут полями таблицы Person в SQL Server):

public class Person
{
  public int PersonID { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

Приложениям ASP.NET MVC 4 нужен класс контроллера, который выступает в роли моста между представлением и моделью. Представление можно рассматривать как UI, а модель — как данные. После добавления контроллера Visual Studio автоматически генерирует необходимые классы представления.

Однако, прежде чем добавлять класс контроллера, нужно собрать решение, чтобы добавить в проект соответствующую информацию о типах, которая понадобится на последующих этапах. Выберите из меню Build команду Build Solution. В Solution Explorer щелкните правой кнопкой мыши папку Controllers и выберите Add | Controller. Появится диалог Add Controller (рис. 5), и вам нужно будет задать параметры Scaffolding со следующими значениями.

  1. В раскрывающемся списке Template укажите «MVC Controller with read/write actions and views, using Entity Framework».
  2. В раскрывающемся списке Model class выберите класс Person.
  3. В списке Data context class выберите <New data context...>. В появившемся диалоговом окне присвойте имя PersonContext и щелкните OK.
  4. В раскрывающемся списке Views убедитесь, что выбран Razor.
  5. Щелкните Add, чтобы завершить процедуру.

*

Рис. 5. Добавление класса контроллера MVC

Добавление контроллера в проект приводит к генерации всего необходимого веб-каркаса (Web scaffolding), чтобы можно было выполнять CRUD-операции с базой данной SQL Server; этот процесс добавляет несколько файлов, перечисленных в табл. 1. Если вы откроете класс PersonController, то сможете увидеть все методы, поддерживающие операции Create, Edit, Delete и List.

Табл. 1. Добавленные файлы

Папка ControllerPersonController.cs
Папка Models

Person.cs

PersonContext.cs

Папка Views/Person

Create.cshtml

Delete.cshtml

Details.cshtml

Edit.cshtml

Index.cshtml

Следующий шаг: развертывание

Как упоминалось ранее, вы можете развертывать Web Sites, используя инфраструктуры непрерывной доставки (continuous delivery frameworks), такие как Git или TFS, либо простые средства вроде FTP или Web Deploy. В этой статье мы задействуем Web Deploy из Visual Studio, а информацию по остальным методологиям развертывания вы найдете в Windows Azure Training Kit (bit.ly/Wb0EKZ).

Первый шаг — регистрация в Windows Azure Management Portal. Для этого подпишитесь на бесплатный период пробного использования (90 дней) по ссылке bit.ly/azuretestdrive. Получив учетную запись, войдите под этой записью по следующему URL: manage.windowsazure.com. Затем щелкните ссылку Web Sites на левой стороне окна браузера. Далее выберите NEW | COMPUTE | WEB SITE | QUICK CREATE и введите нужный URL, как показано на рис. 6. Мы использовали «msdnmagazine», т. е. наш сайт будет находиться по адресу http://msdnmagazine.azurewebsites.net/. Вы также должны выбрать регион.

*

Рис. 6. Быстрая подготовка веб-сайта к развертыванию в Windows Azure

К этому моменту ваш сайт почти готов для развертывания контента. Процесс подготовки (provisioning process) осуществляется чрезвычайно быстро. Как только состояние меняется на «running», вы можете щелкнуть имя веб-сайта и приступить к управлению им. Кроме того на портале имеется информационная панель, показывающая время использования процессора (CPU time), запросы (Requests), объем исходящих данных (Data Out) и входящих (Data In), а также ошибки HTTP-сервера (HTTP Server Errors).

Ключевой этап в развертывании приложения — получение файла с профилем публикации, который содержит параметры, используемые Visual Studio при выполнении развертывания. В зависимости от браузера вам будет так или иначе предоставлена возможность скачать этот файл. Вы должны сохранить его копию на локальном компьютере, чтобы впоследствии его можно было использовать из Visual Studio.

Конфигурирование сервера базы данных

Перед запуском своего приложения ASP.NET MVC 4 вы должны сконфигурировать базу данных, как показано на рис. 7. Вспомните: этот проект использует парадигму Code First из Entity Framework, а значит, вам нет нужды заботиться обо всех командах управления данными, которые обычно требуются для создания и инициализации реляционных структур данных. Эту часть работы берет на себя Entity Framework.

*

Рис. 7. Добавление сервера для хостинга базы данных SQL

Щелкнув ADD, вы увидите приглашение ввести логин и пароль, а также указать регион, где вы хотите разместить развернутую Windows Azure SQL Database. Настоятельно рекомендуется выбирать тот же информационный центр, где работает ваш WAWS, чтобы свести к минимуму задержки и избежать лишних расходов на передачу данных по сетям. В нашем случае логин — DBAdministrator. Это может оказаться важным впоследствии, если вам потребуется удаленный вход или если вы захотите сформировать строку подключения. Кроме того, заметьте, что имя сервера было подготовлено за вас (в нашем случае это ccek4yihqf). Щелкните имя сервера, чтобы получить более подробные сведения с портала (табл. 2).

Табл. 2. Подробные сведения о сервере

Имя сервераccek4yihqf
Состояние сервераStarted
Логин администратораDBAdministrator
URLhttps://ccek4yihqf.database.windows.net

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

Запуск Web Deploy из Visual Studio

Теперь мы готовы закончить этот проект, развернув его и одновременно создав базу данных на только что подготовленном сервере. Вернитесь в Visual Studio и выберите View | Solution Explorer. Щелкните правой кнопкой мыши MVCAzure.WebSite и выберите Publish. Появится диалоговое окно Publish Web. Процесс основан на применении мастера, и первый шаг — загрузка файла с профилем публикации в Visual Studio, что кардинально упрощает процесс развертывания. Вы пройдете несколько шагов, указывая детали профиля публикации для приложения ASP.NET MVC 4 и сообщая информацию о том, как вы предпочли бы развернуть свое приложение в информационном центре Microsoft, в том числе задав URL и месторасположение вашего сервера Windows Azure SQL Database.

Вы можете указать сервер Windows Azure SQL Database, который будет использоваться вашим приложением ASP.NET MVC 4, щелкнув сначала Settings на левой стороне диалогового окна, а затем многоточие рядом с PersonContext, как показано на рис. 8.

*

Рис. 8. Настройка соединения с базой данных

Теперь вам понадобится информация, которую вы получили с портала, когда создавали сервер базы данных. В нашем случае сервер — tcp:siqxqgihiy.database.windows.net, как показано на рис. 9. Заметьте, что мы включили «tcp» перед именем сервера. Вам также потребуется ввести имя администратора (мы ранее указали DBAdministrator) и пароль.

*

Рис. 9. Подключение к серверу и создание базы данных

После щелчка OK на указанном сервере физически создается база данных SQL. Вам будет предложено подтвердить этот этап. Создав базу данных, можно выбрать Publish из диалогового окна Publish Web Application. Чтобы видеть, что именно происходит в процессе развертывания, можно открыть окно View | Output в Visual Studio.

Теперь приложение полностью закончено, и вы найдете нашу версию по ссылке msdnmagazine.azurewebsites.net/Person. Заметьте, что нам вообще не пришлось писать какой-либо код: потребовалось всего несколько минут на то, чтобы создать нечто практичное и целостное.

Что дальше после развертывания?

После развертывания приложения легко выполнять такие задачи, как мониторинг, масштабирование или обновление веб-сайта. Один из подходов — работа с порталом Windows Azure, который предоставляет информационную панель, простую в использовании и доступную со многих устройств. Windows Azure SDK, начиная с версии 1.8, также позволяет автоматизировать некоторые из этих задач, в том числе управление строками подключения и параметрами приложения, изменение количества экземпляров или загрузку самого последнего журнала, за счет применения командлетов Windows PowerShell или прямых вызовов REST API.

Заключение

WAWS дает возможность почти мгновенно развертывать веб-приложения, при этом от вас требуются минимальные познания в сфере облачных технологий (а иногда они вообще не нужны). По мере роста потребностей вы можете подключать другие аспекты облачных технологий Windows Azure, например кеширование, Service Bus, хранилища и другие сервисы. Благодаря поддержке PaaS-компонентов Windows Azure трудно найти более простой способ хостинга масштабируемых, высокодоступных веб-приложений в облаке. Эти средства в сочетании с готовыми инфраструктурами вроде WordPress, Drupal, DotNetNuke и Umbraco позволяют разработчикам сосредоточить все внимание на создании веб-приложений с богатой функциональностью и репозитариев данных, делегируя инфраструктурные задачи платформе Windows Azure.

Автор: Бруно Теркали, Рикардо Виллалобос  •  Иcточник: MSDN Magazine  •  Опубликована: 26.04.2013
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   windows azure web sites.


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.