Цель лекции: изучение последовательности развертывания приложений Silverlight в облачной среде. А также порядок создания и настройки основных облачных служб и сервера баз данных SQL Azure.
Приложение Silverlight может быть размещено в Microsoft Azure. C точки зрения разработчика использование облачной платформы значительно упрощает механизмы развертывания Silverlight приложений. Так в Azure пропадает необходимость в установке и настройке сервера и настройке доменов на использование из внешней сети, а оплата аппаратных ресурсов осуществляется по факту их реального использования. Для Silverlight особое значение имеет служба хостинга, которая позволяет размещать Silverlight приложения, хранилище, которое используется для размещения различных ресурсов приложения, таких как изображения, видео и файлы, а служба SQL Azure позволяет размещать базу данных приложений.
Первый сценарий заключается в использовании облака для развертывания уже существующего Silverlight бизнес-приложения, которое состоит из следующих компонентов:
На первом этапе развертывания переносится база данных. На рисунке 4.1 представлена схема базы данных которая должна бать размещена в облаке.
(рис 4.1) Схема базы данных
В SQL Azure необходимо создать пустую базу данных, для этого необходимо иметь учетную запись в Windows Azure. База данных рассчитана на обработку не очень большого объема информации, то для нее устанавливается тип Web (рис 4.2).
(рис 4.2) Портал Windows Azure
После создания базы данных с помощью инструмента http://sqlazuremw.codeplex.com/) можно импортировать существующую схему базы данных и данные в облачную базу (рис 4.3).
(рис 4.3) Мастер миграции баз данных
В ходе импорта мастер миграции выполнит анализ существующей базы данных, так как не все элементы базы данных SQL Server могут быть перенесены в облако и анализ выявляет эти проблемы. После определения проблем необходимо вручную внести рекомендуемые исправлению в базу SQL Server и затем можно произвести миграцию.
В заключении необходимо изменить строку подключения в файле web.config нашего приложений, чтобы она ссылалась на облачную версию базы данных и база данных будет готова к использованию.
<connectionStrings> <add name="CityHotelsEntities" connectionString="metadata=res://*/CityHotelModel.csdl|res://*/CityHotelModel.ssdl|res: //*/CityHotelModel.msl;provider=System.Data.SqlClient;provider Connectionstring=quot;data source=vextmrs0m2.database.windows.net;initial catalog=CityHotels;user id=gillcleeren; password=SOMEPASSWORD;multipleactiveresultsets=True;App=EntityFrameworkquot;" providerName="System.Data.EntityClient" /> </connectionStrings>
После создания базы данных следующим шагом будет перенос служб доступа к данным и реализация их в облаке. В существующем приложение службы реализованы в виде отдельного проекта ServiceHostingSite.
Для переноса этого проекта в облако необходимо добавить новый Windows Azure Project (с именем CityHotelBrowserCloud). Для этого в существующем решении создается проект ASP.Net Role (рис 4.4).
(рис 4.4) Создание проекта Windows Azure
Затем в инспекторе созданного проекта необходимо выполните щелчок на папке Roles и выбирать Add Web Role проект и в нем указать ServiceHostingSite (рис 4.5).
(рис 4.5) Добавление роли
Создав новую роль мы выполнили конфигурацию нашего экземпляра для выполнения заданного кода.
Выполнив щелчок правой кнопкой мы можем настроить поведение роли. Например, на приведённом рисунке сконфигурировано два экземпляра, что означает создание двух виртуальных машин выполняющих код независимо. Если в одной произойдет сбой, то будет использована другая, пока сбой не будет ликвидирован, также здесь указывается размер виртуальных машин. Следует помнить, что стоимость использования Azure прямо зависит и от количества виртуальных машин и от используемого ими дискового пространства (рис 4.6).
(рис 4.6) Настройка Azure
Затем мы можем опубликовать нашу службу в облаке, для этого правой кнопкой по названию проекта в инспекторе и выбрать ).
(рис 4.7) Окно развертывания приложения в Azure
Затем выполняется возврат на портал Azure и выбирается вкладка ).
(рис 4.8) Создание новой службы развертывания
После размещения приложения необходимо обновить ссылки в Silverlight приложении на действующие службы данных.
На данный момент выполнена вся подготовка для переноса самого Silverlight приложения в Azure. Необходимо создать новую веб роль в облачном проекте и установить для нее Silverlight hosting site (CityHotelBrowser.Web). Также можно создать новый облачный проект и добавить соответствующую веб роль в него, что является более грамотным решением, но более дорогостоящее с точки зрения использования ресурсов (рис 4.9).
(рис 4.9) Список ролей
После создания второй интернет роли ClientBin будет содержать файл XAP, который был загружен как часть службы хостинга. Таким образом, когда пользователь будет подключаться к приложению через вебсайт, то Silverlight XAP файл будет загружен с облачного сервиса и не с нашего сервера.
Такой подход приводит к ряду проблем, в частности, когда мы хоти обновить приложение невозможно просто изменить XAP файл, а необходимо выполнять повторную публикацию всего проекта.
Когда мы рассматривали использование
(рис 4.10) Подключение службы WCF RIA
Для использования служб
System.ServiceModel.DomainServices.EntityFramework System.ServiceModel.DomainServices.Hosting System.ServiceModel.DomainServices.Server System.ComponentModel.DataAnnotations
Однако, когда мы развертываем приложение в Azure используется виртуальная машина с Windows 2008. с запущенным IIS, но на машине в кэше сборок нет необходимых для описанных классов сборок.
Поэтому, когда развертываемое приложение использует службы
(рис 4.11) Установка свойства
Других особенностей использования служб
Хранилище Azure обеспечивают удобный и масштабируемый механизм хранения данных, для Silverlight в первую очередь можно использовать возможности хранилища больших бинарных объектов. Бинарное хранилище может использоваться для хранения двоичных или текстовых файлов. Каждый добавляемый в облако файл реплицируется, что значительно снижает вероятность его потери или повреждения.
Для того, чтобы сохранить файл в бинарном хранилище и использовать их затем в приложениях Silverlight следует сначала создать с использованием портала Azure учетную запись. У каждой учетной записи Windows Azure может быть несколько учетных записей для хранилища и в каждой такой учётной записи может сохранятся до 100 Тб информации (рис 4.12).
(рис 4.12) Создание учётной записи хранилища
После создания новой учетной записи разработчик получает три (для каждого из типов служб) URL хранилища (рис 4.13).
(рис 4.13) Ссылки на Url хранилища
Портал Azure не позволяет загружать файлы в облачное хранилище, а необходимо использовать специальные инструменты, например ). Для группировки файлов в Azure используются контейнеры, которые можно сравнить с папками в обычной системе. Контейнер может содержать в себе другие контейнеры или файлы (рис 4.14).
(рис 4.14) Создание контейнеров
Для контейнера определяются права доступа. Файл может быть либо публично доступным, либо приватным. Для публичных файлов и их контейнеров необходимо установить уровень доступа ).
(рис 4.15) Ссылка на файл в хранилище
Например, если у нас в приложении сохраняется файл содержащий медиа контент (изображении, видео, аудио) то для его использования можно воспользоватся следующим кодом.
<Grid x:Name="LayoutRoot"> <MediaElement Width="300" Height="200" Stretch="Uniform" Source="http://gillcleeren.blob.core.windows.net/test/Butterfly.wmv" AutoPlay="True"></MediaElement> </Grid>
При сохранении XML файлов в облачном хранилище возникают сложности, если затем попытаемся прочитать сохраненный файл из приложения Silverlight. Это связано с нарушением ограничений на межтеменные взаимодействия. Для решения данной проблемы необходимо поместить в корневой каталог хранилища файл clientaccesspolicy.xml.
Корневой контейнер не может содержать файлов, а содержит только другие контейнеры. Выход заключается в том, чтобы создать специальный контейнер с именем ).
(рис 4.16) Файл сохраненный в корневой папке
После этих манипуляций из приложения Silverlight можно использовать XML файл по ссылке на него в хранилище. Сам код стандартный.
private void LoadTrendingTopics()
{
WebClient client = new WebClient();
client.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri("http://gillcleeren.blob.core.windows.net/test/trendingtopics.xml",
UriKind.Absolute));
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
XDocument document = XDocument.Parse(e.Result);
List<Trend> twitterData = (from status in ocument.Descendants("trend")
select new Trend
{
TrendingTopic = status.Value,
Url = status.LastAttribute.Value
}).ToList();
TrendingTopicListBox.ItemsSource = twitterData;
}
else
{
MessageBox.Show(e.Error.ToString());
}
}
Ранее указывалось, что невозможно просто обновить XAP файл в службе хостинга, так как это приведет к обновлению проекта и созданию его новой версии. Решение данной проблемы состоит в том, что можно поместить этот файл в хранилище blob. Для этого необходимо сделать следующее:
(рис 4.17) Созданный контейнер
(рис 4.18) Файл помещенный в контейнер<div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="http://gillcleeren.blob.core.windows.net/xap/RemoteXap.xap" /> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50826.0" />
В заключении следует отметить, что Silverlight является одной из платформ, которая может использоваться для создания приложений Windows Phone. Возможность размещения указанных приложений в Azure является удобным и эффективным механизмом размещения приложения для телефона
Цель лекции: изучение последовательности развертывания приложений Silverlight в облачной среде. А также порядок создания и настройки основных облачных служб и сервера баз данных SQL Azure.
Приложение Silverlight может быть размещено в Microsoft Azure. C точки зрения разработчика использование облачной платформы значительно упрощает механизмы развертывания Silverlight приложений. Так в Azure пропадает необходимость в установке и настройке сервера и настройке доменов на использование из внешней сети, а оплата аппаратных ресурсов осуществляется по факту их реального использования. Для Silverlight особое значение имеет служба хостинга, которая позволяет размещать Silverlight приложения, хранилище, которое используется для размещения различных ресурсов приложения, таких как изображения, видео и файлы, а служба SQL Azure позволяет размещать базу данных приложений.
Первый сценарий заключается в использовании облака для развертывания уже существующего Silverlight бизнес-приложения, которое состоит из следующих компонентов:
На первом этапе развертывания переносится база данных. На рисунке 4.1 представлена схема базы данных которая должна бать размещена в облаке.
(рис 4.1) Схема базы данных
В SQL Azure необходимо создать пустую базу данных, для этого необходимо иметь учетную запись в Windows Azure. База данных рассчитана на обработку не очень большого объема информации, то для нее устанавливается тип Web (рис 4.2).
(рис 4.2) Портал Windows Azure
После создания базы данных с помощью инструмента http://sqlazuremw.codeplex.com/) можно импортировать существующую схему базы данных и данные в облачную базу (рис 4.3).
(рис 4.3) Мастер миграции баз данных
В ходе импорта мастер миграции выполнит анализ существующей базы данных, так как не все элементы базы данных SQL Server могут быть перенесены в облако и анализ выявляет эти проблемы. После определения проблем необходимо вручную внести рекомендуемые исправлению в базу SQL Server и затем можно произвести миграцию.
В заключении необходимо изменить строку подключения в файле web.config нашего приложений, чтобы она ссылалась на облачную версию базы данных и база данных будет готова к использованию.
<connectionStrings> <add name="CityHotelsEntities" connectionString="metadata=res://*/CityHotelModel.csdl|res://*/CityHotelModel.ssdl|res: //*/CityHotelModel.msl;provider=System.Data.SqlClient;provider Connectionstring=quot;data source=vextmrs0m2.database.windows.net;initial catalog=CityHotels;user id=gillcleeren; password=SOMEPASSWORD;multipleactiveresultsets=True;App=EntityFrameworkquot;" providerName="System.Data.EntityClient" /> </connectionStrings>
После создания базы данных следующим шагом будет перенос служб доступа к данным и реализация их в облаке. В существующем приложение службы реализованы в виде отдельного проекта ServiceHostingSite.
Для переноса этого проекта в облако необходимо добавить новый Windows Azure Project (с именем CityHotelBrowserCloud). Для этого в существующем решении создается проект ASP.Net Role (рис 4.4).
(рис 4.4) Создание проекта Windows Azure
Затем в инспекторе созданного проекта необходимо выполните щелчок на папке Roles и выбирать Add Web Role проект и в нем указать ServiceHostingSite (рис 4.5).
(рис 4.5) Добавление роли
Создав новую роль мы выполнили конфигурацию нашего экземпляра для выполнения заданного кода.
Выполнив щелчок правой кнопкой мы можем настроить поведение роли. Например, на приведённом рисунке сконфигурировано два экземпляра, что означает создание двух виртуальных машин выполняющих код независимо. Если в одной произойдет сбой, то будет использована другая, пока сбой не будет ликвидирован, также здесь указывается размер виртуальных машин. Следует помнить, что стоимость использования Azure прямо зависит и от количества виртуальных машин и от используемого ими дискового пространства (рис 4.6).
(рис 4.6) Настройка Azure
Затем мы можем опубликовать нашу службу в облаке, для этого правой кнопкой по названию проекта в инспекторе и выбрать ).
(рис 4.7) Окно развертывания приложения в Azure
Затем выполняется возврат на портал Azure и выбирается вкладка ).
(рис 4.8) Создание новой службы развертывания
После размещения приложения необходимо обновить ссылки в Silverlight приложении на действующие службы данных.
На данный момент выполнена вся подготовка для переноса самого Silverlight приложения в Azure. Необходимо создать новую веб роль в облачном проекте и установить для нее Silverlight hosting site (CityHotelBrowser.Web). Также можно создать новый облачный проект и добавить соответствующую веб роль в него, что является более грамотным решением, но более дорогостоящее с точки зрения использования ресурсов (рис 4.9).
(рис 4.9) Список ролей
После создания второй интернет роли ClientBin будет содержать файл XAP, который был загружен как часть службы хостинга. Таким образом, когда пользователь будет подключаться к приложению через вебсайт, то Silverlight XAP файл будет загружен с облачного сервиса и не с нашего сервера.
Такой подход приводит к ряду проблем, в частности, когда мы хоти обновить приложение невозможно просто изменить XAP файл, а необходимо выполнять повторную публикацию всего проекта.
Когда мы рассматривали использование
(рис 4.10) Подключение службы WCF RIA
Для использования служб
System.ServiceModel.DomainServices.EntityFramework System.ServiceModel.DomainServices.Hosting System.ServiceModel.DomainServices.Server System.ComponentModel.DataAnnotations
Однако, когда мы развертываем приложение в Azure используется виртуальная машина с Windows 2008. с запущенным IIS, но на машине в кэше сборок нет необходимых для описанных классов сборок.
Поэтому, когда развертываемое приложение использует службы
(рис 4.11) Установка свойства
Других особенностей использования служб
Хранилище Azure обеспечивают удобный и масштабируемый механизм хранения данных, для Silverlight в первую очередь можно использовать возможности хранилища больших бинарных объектов. Бинарное хранилище может использоваться для хранения двоичных или текстовых файлов. Каждый добавляемый в облако файл реплицируется, что значительно снижает вероятность его потери или повреждения.
Для того, чтобы сохранить файл в бинарном хранилище и использовать их затем в приложениях Silverlight следует сначала создать с использованием портала Azure учетную запись. У каждой учетной записи Windows Azure может быть несколько учетных записей для хранилища и в каждой такой учётной записи может сохранятся до 100 Тб информации (рис 4.12).
(рис 4.12) Создание учётной записи хранилища
После создания новой учетной записи разработчик получает три (для каждого из типов служб) URL хранилища (рис 4.13).
(рис 4.13) Ссылки на Url хранилища
Портал Azure не позволяет загружать файлы в облачное хранилище, а необходимо использовать специальные инструменты, например ). Для группировки файлов в Azure используются контейнеры, которые можно сравнить с папками в обычной системе. Контейнер может содержать в себе другие контейнеры или файлы (рис 4.14).
(рис 4.14) Создание контейнеров
Для контейнера определяются права доступа. Файл может быть либо публично доступным, либо приватным. Для публичных файлов и их контейнеров необходимо установить уровень доступа ).
(рис 4.15) Ссылка на файл в хранилище
Например, если у нас в приложении сохраняется файл содержащий медиа контент (изображении, видео, аудио) то для его использования можно воспользоватся следующим кодом.
<Grid x:Name="LayoutRoot"> <MediaElement Width="300" Height="200" Stretch="Uniform" Source="http://gillcleeren.blob.core.windows.net/test/Butterfly.wmv" AutoPlay="True"></MediaElement> </Grid>
При сохранении XML файлов в облачном хранилище возникают сложности, если затем попытаемся прочитать сохраненный файл из приложения Silverlight. Это связано с нарушением ограничений на межтеменные взаимодействия. Для решения данной проблемы необходимо поместить в корневой каталог хранилища файл clientaccesspolicy.xml.
Корневой контейнер не может содержать файлов, а содержит только другие контейнеры. Выход заключается в том, чтобы создать специальный контейнер с именем ).
(рис 4.16) Файл сохраненный в корневой папке
После этих манипуляций из приложения Silverlight можно использовать XML файл по ссылке на него в хранилище. Сам код стандартный.
private void LoadTrendingTopics()
{
WebClient client = new WebClient();
client.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri("http://gillcleeren.blob.core.windows.net/test/trendingtopics.xml",
UriKind.Absolute));
}
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
XDocument document = XDocument.Parse(e.Result);
List<Trend> twitterData = (from status in ocument.Descendants("trend")
select new Trend
{
TrendingTopic = status.Value,
Url = status.LastAttribute.Value
}).ToList();
TrendingTopicListBox.ItemsSource = twitterData;
}
else
{
MessageBox.Show(e.Error.ToString());
}
}
Ранее указывалось, что невозможно просто обновить XAP файл в службе хостинга, так как это приведет к обновлению проекта и созданию его новой версии. Решение данной проблемы состоит в том, что можно поместить этот файл в хранилище blob. Для этого необходимо сделать следующее:
(рис 4.17) Созданный контейнер
(рис 4.18) Файл помещенный в контейнер<div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="http://gillcleeren.blob.core.windows.net/xap/RemoteXap.xap" /> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50826.0" />
В заключении следует отметить, что Silverlight является одной из платформ, которая может использоваться для создания приложений Windows Phone. Возможность размещения указанных приложений в Azure является удобным и эффективным механизмом размещения приложения для телефона
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.