Работа вне браузера и с web-сервисами
Работа вне браузера означает:
- Приложение установлено локально, оффлайн, работает вне браузера
- При этом, устанавливается только с веб страницы. Но, однажды будучи установленным, запускается через ярлык в меню пуск
- Поддерживает API: сетевые, локальные, детектирование наличия/отсутствия сетевого соединения
Устанавливается по нажатию правой клавиши:
Ярлык можно разместить в меню старт или на рабочем столе. Приложение не будет перечислено в списке программ в панели управления. Приложение можно деинсталлировать с веб страницы и из самого приложения с помощью правой клавиши мыши. Будут удалены также ярлыки.
По умолчанию создаваемое вами Silverlight приложения нельзя установить вне браузера. Чтобы добиться этого, необходимо в свойствах проекта Visual Studio указать работу вне браузера. Можно также указать различные опции, такие как ярлыки и название.
увеличить изображение
Рис. 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).