Элементы управления ActiveX - это просто COM-объекты, которые, как минимум, реализуют IUnknown. Последние версии IE начали также требовать от объекта реализации IObjectSafety. Чтобы сделать что-нибудь полезное, объект должен также реализовать некоторые другие интерфейсы Ole, такие как IDispatch, IOleObject и т.д. /blogs.msdn.com/larryosterman/archive/2006/01/05/509731.aspx "rel =" nofollow noreferrer "> зарегистрируйте его каким-либо образом в реестре. Вам не обязательно использовать guid в теге, вы также можете использовать AppId, если вы его зарегистрируете.
Вы также можете написать некоторый управляемый код и запустить его в IE. Это работает так: среда CLR регистрирует фильтр MIME., когда он будет установлен. Затем, когда IE видит, что вы отправляете что-то правильного типа mime, он передает код CLR для обработки. CLR делает код изолированным до такой степени, что ему предоставляются только разрешения в Интернете, поэтому он не может делать все, что предоставляет платформа. Вам нужно будет проверить конкретную документацию, чтобы узнать, что можно, а что нельзя делать в этой зоне безопасности.
Некоторые компромиссы:
Простота установки: элементы управления ActiveX требуют, чтобы вы упаковали все в файл .CAB с файлом .INI, который довольно загадочно описывает требования для установки. Если вам нужно установить дополнительные зависимости с вашими модулями (например, библиотеки DLL ATL / MFC или другие сторонние модули), это становится довольно сложно. С модулем .net вы просто отправляете его с правильным типом MIME, но вы должны убедиться, что у ваших пользователей есть правильная версия фреймворка (которую вы можете проверить с помощью строки пользовательского агента на своем веб-сайте).
Безопасность: элементы управления ActiveX - это просто собственный код, работающий в системе пользователя, поэтому теоретически они могут делать все, что захотят. На практике LoRIE ограничивает его во многих случаях, и вам нужно сделать кучу специальных вещей, таких как доступ к реестру и файловой системе (см. Общие сведения и работа в защищенном режиме).
Потоковая обработка: поскольку элементы управления ActiveX выполняются в потоке пользовательского интерфейса браузеров, вы должны убедиться, что не выполняете длительные операции блокировки в этом потоке, поэтому вам придется выполнять потоки самостоятельно. Если ваша длительная операция блокировки манипулирует DOM, вам необходимо самостоятельно выполнить маршалинг интерфейсов IHTMLxxx, используя функции GIT или COM Marshalling < / а>. Я не уверен, работают ли апплеты .net в потоке пользовательского интерфейса браузеров или нет, но я уверен, что с этим проще справиться на C #.
Объекты браузера: если вы хотите использовать объекты IE / Shell в своем управляемом расширении, вам придется большую часть времени писать взаимодействие самостоятельно, так как Framework не очень хорошо справляется с переносом этих интерфейсов в управляемые объекты. См. http://pinvoke.net, чтобы получить небольшую помощь по началу работы.
Совместимость: существуют проблемы с размещением разных версий среды выполнения в одном процессе. До недавнего времени это было невозможно, но я думаю, что с версиями 3.x это стало возможно до некоторой степени. В результате, если вы нацеливаетесь на .net 2.0, а кто-то уже загрузил .net 1.0 как часть своего расширения браузера, вы проиграете. Обычно IE и оболочка Windows не поддерживают управляемые расширения. Этот материал фильтра MIME приложения .net может быть заметным исключением, но имейте в виду, что могут быть потенциальные проблемы.
person
i_am_jorf
schedule
01.05.2009