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

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

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

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

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

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

Ответы [ 3 ]

6 голосов
/ 01 мая 2009

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

1 голос
/ 01 мая 2009

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

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

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

0 голосов
/ 01 мая 2009

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

...