Размещение приложений Silverlight на облачной платформе
Например, если у нас в приложении сохраняется файл содержащий медиа контент (изображении, видео, аудио) то для его использования можно воспользоватся следующим кодом.
<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.
Корневой контейнер не может содержать файлов, а содержит только другие контейнеры. Выход заключается в том, чтобы создать специальный контейнер с именем $root, Этот специальный тип контейнера определяет корень хранилища, в него и необходимо поместить файл 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. Для этого необходимо сделать следующее:
- Создать отдельный контейнер для хранения фала XAP ( рис. 4.17).
- Поместить существующий файл XAP в хранилище с помощью Cloud Explorer ( рис. 4.18).
- Обновить URL в проекте ASP.Net
<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" />
- Опубликовать хостинг сайт под Web ролью в Azurе. Используя указанный подход значительно упрощается обновление XAP и не требуется его повторная публикация. .
В заключении следует отметить, что Silverlight является одной из платформ, которая может использоваться для создания приложений Windows Phone. Возможность размещения указанных приложений в Azure является удобным и эффективным механизмом размещения приложения для телефона
Краткие итоги
- Приложение Silverlight может быть размещено в Microsoft Azure.
- Размещение должно осуществляться в определенной последовательности: переносится и настраивается база данных, настраивается хранилище, настраивается приложение и его библиотеки.
- Для использования служб RIA из облака необходимо выполнить ряд настроек связанных с размещением в облаке дополнительных библиотек.
- Хранилище обеспечивают удобный и масштабируемый механизм хранения данных,
- Для загрузки файлов в облачное хранилище, а необходимо использовать специальные инструменты CloudBerry или CloudExplorer
- При использовании XML файлов в облачном хранилище требуется настройка междоменного взаимодействия.