В чем разница между апплетом .NET и элементом управления ActiveX, встроенным в IE

Я наткнулся на несколько статей в Интернете об апплетах .Net, и мне было интересно, чем они отличаются от элемента управления ActiveX (созданного с использованием языка .Net)? (чтобы уточнить, это касается апплетов, которые запускаются внутри веб-браузера)

(В чем разница: элементы управления ActiveX, написанные на языке .Net, называются .Net-апплетами?)

Есть ли преимущества в использовании одного перед другим?

Кроме того, как Microsoft называет эту технологию? (Поиск в MSDN не вызывает ничего, что называется .Net Applets!)

ps: из того, что я вижу, элементы управления ActiveX должны быть зарегистрированы в COM, тогда как апплеты .Net - нет. Кроме того, на веб-странице элементы управления ActiveX упоминаются с использованием их CLSID, тогда как на апплеты .NET, похоже, ссылаются по полному имени (путь, имя dll, пространство имен и класс)


person Raj Rao    schedule 01.05.2009    source источник


Ответы (3)


Элементы управления 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
comment
IE с низкими правами. Это материал IE7 +, который запускает IE в процессах с низким уровнем целостности вместо уровня целостности по умолчанию. Также известен как IE в защищенном режиме. См. msdn.microsoft.com/en-us/library/bb250462.aspx - person i_am_jorf; 04.06.2009

«Элемент ActiveX (созданный с использованием языка .Net)» и «.NET-апплет» - это жаргонное название «.NET-сборка, размещенная в IE».

Фактически, сборки .NET могут размещаться в самых разных приложениях. Видеть:

Создание хоста для среды CLR .NET

person mbeckish    schedule 01.05.2009

Элементы управления ActiveX не имеют тех же ограничений безопасности, что и апплеты .NET, что может быть преимуществом или недостатком в зависимости от того, что вы хотите сделать. .NET-апплеты в целом проще разрабатывать, ActiveX вы создаете с помощью VB6 или C ++.

person Otávio Décio    schedule 01.05.2009