В докладе будет рассказано и показано, как расширить возможности стандартного ASP.NET MVC3 web-приложения, используя браузерный native-плагин, написанный на языке C++. Будет показано применение фреймворка FireBreath, позволяющего легко создавать гибкие, кроссплатформенные и кроссбраузерные плагины. Будут затронуты вопросы взаимодействия managed-кода на C# с native-кодом на C++, а также показаны возможности по вызову кода на C++/C# из клиентского JavaScript-кода web-страницы. Применение вышеназванных технологий будет показано на примерах, одним из которых является разработанный для нужд системы электронного документооборота плагин, позволяющий осуществлять взаимодействие со сканером документов, подключенным к компьютеру клиента, из кода на JavaScript.
Также будет даваться краткое описание других технологий, связанных с выполнением браузером не специфичных для него функций: NaCl, Pepper, и приведено сравнение этих технологий.
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
NPAPI
1. 4-я конференция .NET разработчиков
28 апреля 2012
Выходим за границы дозволенного.
NPAPI, NaCl и другие страшные
слова
Тимур Рахматиллаев
twitter.com/eskat0n
22. Общий механизм работы с
NPAPI-плагинами
• Встраивание плагина на страницу с
помощью HTML
• Определение местоположения файла
плагина и его загрузка
• При необходимости вызов кода плагина
для рендеринга контента на HTML-
странице
• Взаимодействие с плагином через
JavaScript
27. Взаимодействие с плагином через
JavaScript
• Плагин представлен JavaScript-
объектом, находящимся в DOM-дереве
документа
• При обращении к свойствам JavaScript-
объекта плагина или при вызове его
методов происходит упаковка
передаваемых/возвращаемых значений
• Каждому свойству или методу
соответствует нативный код
28. FireBreath framework
• Предоставляет единое высокоуровневое
API для создания NPAPI-плагинов для всех
браузеров
• Для Internet Explorer происходит
регистрация плагина как ActiveX-
компонента
• Предоставляет возможность
автоматизированной установки
плагина
29. FireBreath framework
Плюсы:
• Возможность написания единого кода плагина
для работы во всех браузерах
• Инструментарий по упрощению сборки
• Прозрачный и простой API
• Легко читаемый исходный код
Минусы:
• Дополнительные инфраструктурные зависимости
• Недостаточно подробная документация
30. Начало работы с FireBreath
• Python
• VC++
• Cmake
• Visual Studio (не-Express версии)
33. У нас тут своя атмосфера!
• Возможна реализация с помощью
FireBreath небольшой тонкой
обвертки, которая осуществляет
трансляцию вызовов из JavaScript-кода к
коду на платформе .NET
• Используется связка из NPAPI-плагина и
Managed COM-компонента
34. IndyCode scanner plugin
Задача – обеспечить возможность
автоматического сканирования документов с
помощью сканера, подключенного к
клиентскому компьютеру, с последующей их
отсылкой на сервер.