Использование возможностей Windows в приложениях Silverlight
С выходом в свет Silverlight 4 у разработчиков появилась возможность создавать доверяемые приложения, которые могут делать вызовы к COM подсистеме Windows. Это позволяет расширять функциональности Silverlight приложений практически неограниченным образом. Все бы ничего, но примеров такого использования и реализаций немного, да и скорее всего они вызывают самые необходимые вещи в приложениях, в виде библиотек их не выпускают. Поэтому Microsoft выпустил в свет обертки Silverlight над наиболее интересными функциями COM.
Набор этих компонент называется Native Extensions for Microsoft Silverlight и опубликованы они по этому адресу: https://code.msdn.microsoft.com/nesl вместе с исходным кодом.
В основную часть этих компонент вошли следующие возможности:
- Windows Sensor API Возможности по интеграции сенсоров поддерживаемых операционной системой Windows 7 Это например такие сенсоры как акселерометр, сенсор освещенности, компас, гироскоп, сенсор локации.
- Windows Speech API Средства чтения текстов (TTS) и распознавания речи (SR).
- Windows Portalbe Devices APIСредства работы с мобильными устройствам и контентом на них. Это камеры, телефоны, плееры, сканнеры и т.п.
- Windows 7 Taskbar Integration Средства интеграции с панелью задач Windows. Пункты быстрых переходов, миниатюры, кнопки, в общем, все основные функции доступные приложениям Windows7.
- Webcam Local Encoding and Window Capture Средства работы с веб-камерами. Запись потока веб камеры в файл а так же запись экранного видео.
- Windows Message Interception Работа с низкоуровневыми оконными сообщениями Windows. Например, один из сценариев приведенных в документации к NESL это реализация реакции приложения на сообщение об изменении разрешения экрана.
Установка
Сам NESL поставляется в виде 5 соответствующих dll которые должны быть на клиенте: SLWindowsShim.dll, SLTaskbarShim.dll, SLEncodeShim.dll, SLSensorShim.dll, SLWPDShim.dll. Следует учитывать, что вызов COM методов из Silverlight приложения доступен только настольным приложениям (Out of Browser). Но это не значит, что пользователю теперь необходимо следить за тем, чтобы эти компоненты были установлены на локальной машине.
В сценарии, когда пользователь впервые обращается к приложению Silverlight содержащему обращения к NESL у разработчика есть возможность проверки и установки компонент NESL c помощью специальных хелперов:
Примеры использования
Вместе с исходным кодом компонент NESL предоставлено несколько примеров использования.
Video Travel Journal – приложение которое пишет в локальный файл видео с подключенной видеокамеры в формате H.264 (контейнер MP4). При этом оно еще и интегрировано с Facebook, Bing Maps и имеет расширенные пункты в панели задач Windows7.
Where’s Teddy – анимированная детская книжка с голосовым управлением. Используется TTS движок Windows7 и поддерживаются команды навигации между частями истории книжки. Помимо этого анализируются два сенсора, акселерометр и сенсор освещенности которые соответствующим образом реагируют на изменения.
Заключение
Если вы разрабатываете приложение на Silverlight которое будет функционировать в настольном режиме (Out of Browser) то вполне вероятно захотите использовать дополнительные функции операционной системы. NESL это именно тот компонент который позволит решить данную задачу простым способом.