company_banner

Использование возможностей Windows в приложениях Silverlight

    С выходом в свет Silverlight 4 у разработчиков появилась возможность создавать доверяемые приложения, которые могут делать вызовы к COM подсистеме Windows. Это позволяет расширять функциональности Silverlight приложений практически неограниченным образом. Все бы ничего, но примеров такого использования и реализаций немного, да и скорее всего они вызывают самые необходимые вещи в приложениях, в виде библиотек их не выпускают. Поэтому Microsoft выпустил в свет обертки Silverlight над наиболее интересными функциями COM.

    Набор этих компонент называется Native Extensions for Microsoft Silverlight и опубликованы они по этому адресу: http://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 это именно тот компонент который позволит решить данную задачу простым способом.
    Microsoft
    405.27
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Share post

    Comments 10

      +1
      Объясните в чем преимущество Silverlight приложений (Out of Browser) над простыми приложениями C#?
        –5
        кросплатформенность
          +2
          статья про COM — какая тут может быть кросплатформенность.
          Если только в варианте, что на Win работают все функции, а в остальных не совсем все.
            –1
            Dопрос как я понял был в целом про out of browser фичу, а не про екстеншены в этой статье.
          +1
          не надо устанавливать Framework. Отсюда вытекает и ограничения, нельзя использовать все те возможности, что есть в C#
            0
            Нужно устанавливать Silverlight Runtime. Так что, этот шаг сравним с установкой общего .NET фреймворка :-).
        • UFO just landed and posted this here
            +1
            Только мне одному кажется, что если веб приложение получает безграничный доступ к COM то это огромная дырка?
              +1
              Работа в режиме OOB требует установки (хоть и более простой), так что это уже не веб-приложение. Более того, сильверлайт-приложение с таким уровнем доступа должно быть подписано в обязательном порядке.
                0
                это не дыра. OOB это то же самое, что настольное приложение. Вы же «доверяете» настольным приложениям, у них есть те же возможности что и у внебраузерного Silverlight.
                Вообще есть 2 типа внебраузерных приложений, те у кого есть доступ ко всем этим данным и те, у кого их нет(т.е. у них сильно все ограничено и там точно нет доступа к вашей файловой системе и к COM объектам).
                Если это приложение имеет доступ неограниченный доступ, то при установке увидите это окно

                а если у него нет доступа, то это окно


                Хотя, эти окна для не знающего человека наверное ни о чем не говорят

              Only users with full accounts can post comments. Log in, please.