Создание и развертывание элемента управления ActiveX в .NET - PullRequest
5 голосов
/ 18 ноября 2008

Поскольку, очевидно, нет элемента управления Flash, который может принимать растровые вставки , я хочу подумать о том, чтобы написать его самостоятельно. Я бы предпочел не использовать Flash, хотя я думаю об использовании .NET.

Теперь я считаю, что правильной терминологией для нативного элемента управления кодом, который можно загрузить и запустить в браузере, является «элемент управления ActiveX». Итак, мой вопрос, могу ли я создать такой элемент управления ActiveX с .NET?

Я нашел несколько учебных пособий в Интернете, но все они ожидают, что вы установили сборку на локальный компьютер, зарегистрируете ее и доверяете ей и веб-сайту, который к ней обращается.

Это немало требует от потенциальных анонимных пользователей интернета, и даже для пользователей интрасети предпочтительнее использовать другой метод развертывания.

Я отчетливо помню, как какой-то веб-сайт просил меня загрузить тот или иной элемент ActiveX. А на страницах, требующих таких плагинов для браузера, как Flash и Java, есть некоторый механизм, с помощью которого браузер знает, где можно извлечь плагин для этого типа носителя.

Итак, мой вопрос состоит из двух частей:

  • Можно ли создать элемент управления, который может запускаться в браузере пользователя в .NET?
  • Каков наилучший метод (полу) автоматической доставки, которого я могу достичь?

В ответ на Санни:

Да, многие текстовые редакторы JavaScript позволяют вставлять связанное изображение в текстовое поле, и оно вставит правильный тег image. Однако это работает только для изображений, которые уже находятся в Интернете, и я хочу, чтобы это загружало новые изображения, просто копируя / вставляя любое случайное растровое изображение из буфера обмена.

Ответы [ 3 ]

5 голосов
/ 13 января 2009

Если вы согласны только с IE, мне нравится модель безопасности размещенного в IE элемента управления по сравнению с Active-X, однако с 01.01.09 Microsoft не одобряет использование .NET (в процессе) для расширения IE, поэтому XBAP в порядке, но не в элементах управления ActiveX и не в элементах управления IE.

Обновление 7/13: Microsoft опубликовала руководство по внедрению расширений в процессе ; это все еще устарело.

Редактировать: Без настройки реестра IE8 будет загружать только размещенный элемент управления .NET из интрасети или доверенной зоны, поэтому для общего использования Интернета требуется Active-X для полного доверия в браузере.

Следить за сообщением Русса: Silverlight не может получить доступ к буферу обмена: http://silverlight.net/forums/t/13024.aspx

Большая часть размещенной в IE управляющей информации находится в блогах, поэтому я использую: http://www.google.com/search?q=ie+hosted+control+site:msdn.com, чтобы найти их. Ниже приведены те, которые я нашел особенно полезными.

Быстрое и простое управление: http://blogs.msdn.com/mikechr/archive/2006/11/28/writing-a-simple-managed-control-under-ie.aspx

Странная вещь в отношении безопасности, если «доказательством» не является URL, сборка может быть доверенной, но не домену, требующей исправлений утверждений: http://blogs.msdn.com/carloc/archive/2006/11/01/code-access-security-hosting-control-in-ie.aspx

Это исправлено в 3.5 с манифестами. Сложно понять это правильно, поэтому ознакомьтесь с инструкциями по использованию манифестов из блога Shawnfa .NET Security для .NET 3.5 Beta и post GA .NET 3.5 . Блог Тодда о случайном обнаружении также описывает шаги для создания манифеста для размещенного элемента управления

Я нашел это полезным в статье базы знаний по настройке безопасности, но вам все равно придется немного узнать о CAS: http://support.microsoft.com/kb/892466. Это, вероятно, главное соображение при решении использовать ((. net) Active-X против размещенного в IE элемента управления - то есть какая модель безопасности работает лучше всего для вас и ваших пользователей. Я надеюсь, что использование манифеста заставит размещенные в IE элементы управления работать как щелчок один раз, когда пользователя просят «доверять», и система создает правильные настройки. Для моей компании, которую мы использовали, можно было автоматизировать настройку безопасности для пользователя, поэтому нашим выбором был ie hosted.

Единственное, о чем я никогда не догадывался, было то, что мне пришлось или не нужно было наследовать от элемента управления (пользователя) для элемента управления без пользовательского интерфейса. Для меня это работало лучше, но мне пришлось «спрятать» div, в котором жил тег объекта.

Легко отлаживать элемент управления, если вы компилируете для отладки и подключаетесь к IE для «управляемой» отладки, как только загрузите элемент управления. Если вам не удается загрузить элемент управления, посмотрите информацию в средстве просмотра привязки сборки fusion: http://msdn.microsoft.com/en-us/library/e74a18c4.aspx и как включить трассировку IEHost: http://support.microsoft.com/kb/313892, чтобы отладить процесс загрузки.

Обязательно версируйте каждую версию сборки. Если вы этого не сделаете, то IE запутается и не будет загружать элемент управления, если сборка в кэше загрузки отличается, но имеет ту же версию #, что и ссылка, на которую ссылается URL (gacutil / cdl очищает кэш загрузки .net)

2 голосов
/ 18 ноября 2008

Поиск "Winforms размещены в IE". Я должен был сделать нечто подобное несколько лет назад, и там я смог окончательно продвинуться вперед.

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

Если у вас есть возможность использовать Silverlight 2, я бы, вероятно, наклонился в этом направлении.

0 голосов
/ 19 ноября 2008

Использование ActiveX ограничивает вас только IE и Windows. Лучше взгляните на Google Docs и / или Gmail, чтобы увидеть, как они обрабатывают вставку изображения в ваш электронный адрес / онлайн-документ, используя только JavaScript. Работает нормально с большинством браузеров и ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...