Опубликован: 01.03.2010 | Уровень: специалист | Доступ: платный
Лекция 3:

Работа вне браузера и с web-сервисами

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Аннотация: Возможность приложения Silverlight запускаться на клиенте без браузера. Инсталляция, удаление, update приложения.

Работа вне браузера означает:

  • Приложение установлено локально, оффлайн, работает вне браузера
  • При этом, устанавливается только с веб страницы. Но, однажды будучи установленным, запускается через ярлык в меню пуск
  • Поддерживает API: сетевые, локальные, детектирование наличия/отсутствия сетевого соединения

Устанавливается по нажатию правой клавиши:


Локальная установка Silverlight приложения

Рис. 3.1. Локальная установка Silverlight приложения

Ярлык можно разместить в меню старт или на рабочем столе. Приложение не будет перечислено в списке программ в панели управления. Приложение можно деинсталлировать с веб страницы и из самого приложения с помощью правой клавиши мыши. Будут удалены также ярлыки.

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

Рис. 3.2. Удаление Silverlight приложения

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

Создание Silverlight приложения с поддержкой внебраузерной работы

увеличить изображение
Рис. 3.3. Создание Silverlight приложения с поддержкой внебраузерной работы
Создание Silverlight приложения с поддержкой внебраузерной работы. Активация

Рис. 3.4. Создание Silverlight приложения с поддержкой внебраузерной работы. Активация
Создание Silverlight приложения с поддержкой внебраузерной работы. Параметры приложения

увеличить изображение
Рис. 3.5. Создание Silverlight приложения с поддержкой внебраузерной работы. Параметры приложения

Программирование приложения для работы вне браузера

Инсталляцией можно управлять изнутри кода .NET. Имеются следующие API:

Application.Current.Install();
  • Отображается диалог для установки приложения. Если приложение уже установлено бросается исключение.
    bool IsRunningOutOfBrowser = Application.Current.IsRunningOutOfBrowser;
  • запущено приложение или нет
    System.Windows.InstallState state = Application.Current.InstallState;
  • показывает состояние инсталляции Установлено ( Installed ), неустановленно ( NotInstalled ), устанавливается ( Installing ), установка не удалась ( InstallFailed ).
    Application.Current.InstallStateChanged += (sender, e) => UpdateUI();
  • вызов метода UpdateUI, при изменении состояния инсталляции

Установки внебраузерного приложения в проекте хранятся в xml файле OutOfBrowserSettings.xml. Ниже приведен пример такого файла.

<OutOfBrowserSettings ShortName="SilverlightApplication1 Application" 
       EnableGPUAcceleration="False" ShowInstallMenuItem="True">
  <OutOfBrowserSettings.Blurb>
    SilverlightApplication1 Application on your desktop; at home, at work or on the go.
  </OutOfBrowserSettings.Blurb>
  <OutOfBrowserSettings.WindowSettings>
    <WindowSettings Title="SilverlightApplication1 Application" />
  </OutOfBrowserSettings.WindowSettings>
  <OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>

Доступ к ним из кода .NET можно осуществить так:

System.Windows.OutOfBrowserSettings settings = Deployment.Current.OutOfBrowserSettings;

После установки приложения установки копируются в файл манифеста AppManifest.xml.

Установленное локальное приложение может иметь различные версии с серверным. В Silverlight можно контролировать версии и загружать обновления с помощью кода .NET:

Application.Current.CheckAndDownloadUpdateAsync();
  • проверка и загрузка обновлений в асинхронном режиме
    Application.Current.CheckAndDownloadUpdateCompleted += 
         new CheckAndDownloadUpdateCompletedEventHandler(Current_CheckAndDownloadUpdateCompleted);
  • метод CheckAndDownloadUpdateCompleted (object sender, CheckAndDownloadUpdateCompletedEventArgs e), вызываемый после окончания загрузки и обновления локального приложения

Работающее в настоящий момент приложение обновлено не будет. Надо перезапустить приложение заново.

При работе с сетью (загрузка обновления, доступ к базе данных, веб сервису и т.д.) надо всегда проверять установлена ли сеть и работоспособна ли она. Также необходимо знать изменилось ли состояние сети за время работы приложения.

bool isNetworkAvailable = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

В данном случае выполняется проверка состояния сети.

NetworkChange.NetworkAddressChanged += 
     new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);

Здесь вызывается метод NetworkChange_NetworkAddressChanged(object sender, EventArgs e), если состояние сети изменилось.

Изолированное хранилище

Внебраузерные приложения Silverlight всегда работают в изолированном хранилище. Это означает, что данные изолированы от пользователя в виртуальной файловой системе, которая может быть как один файл в корневой директории, так и дерево каталогов и файлов. Изолированное хранилище - это абстракция, а не реальное хранилище. Любой вид данных может храниться в этом хранилище. Хранилище может располагаться на клиенте, но приложение так же может использовать изолированное хранилище на сервере. Однако, Silverlight не поддерживает "бродячий" профиль (roaming profile), который может "путешествовать" с пользователем.

Размер изолированного хранилища, доступного для приложения, называется "группы квот". Размер группы по-умолчанию 1 Мб. Приложение может увеличить этот объем с помощью метода System.IO.IsolatedStorage.IsolatedStorageFile.IncreaseQuotaTo(newvalue).

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000