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

StackOverflow https://stackoverflow.com/questions/811868

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Элементы управления ActiveX - это просто COM-объекты, которые, как минимум, реализуют IUnknown. Последние версии IE также начали требовать от объекта реализации IObjectSafety. Чтобы сделать что-нибудь полезное, объект должен также реализовать некоторые другие интерфейсы Ole, такие как IDispatch, IOleObject и т. Д. Объект должен быть способен создавать с помощью CoCreateInstance (), что означает, что вам нужно зарегистрировать каким-либо образом в реестре. Вам не нужно использовать guid в теге, вы также можете использовать AppId , если вы его зарегистрируете.

Вы также можете написать некоторый управляемый код и запустить его внутри IE. Работает так, что CLR регистрирует фильтр MIME когда он установлен. Затем, когда IE видит, что вы отправляете что-то подходящего MIME-типа, он передает код в CLR для обработки. CLR выполняет изолированную программную среду кода в той степени, в которой ему предоставляются только разрешения на доступ в Интернет, поэтому он не может делать все, что предоставляет инфраструктура. Вам нужно будет проверить конкретную документацию на предмет того, что можно и что нельзя делать в этой зоне безопасности.

Некоторые компромиссы:

Простота установки: элементы управления ActiveX требуют, чтобы вы упаковали все в файл .CAB с файлом .INI, который довольно загадочно описывает требования к установке. Если вам необходимо установить дополнительные зависимости с вашими модулями (такими как библиотеки ATL / MFC или другие сторонние модули), это будет довольно сложно. С модулем .net вы просто отправляете его с правильным MIME-типом, но вы должны убедиться, что ваши пользователи имеют правильную версию фреймворка (которую вы можете проверить через строку user agent на вашем сайте).

Безопасность: элементы управления 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 может быть заметным исключением, но имейте в виду, что могут быть

Другие советы

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

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

Создание хоста для среды выполнения .NET Common Language

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top