Pregunta

He encontrado algunos artículos en la web sobre applets .Net y me preguntaba cómo difería de un control activex (creado con un lenguaje .Net). (para aclarar, esto es con respecto a los applets que se ejecutan dentro de un navegador web)

(¿Es la diferencia: los controles ActiveX escritos en un lenguaje .Net se denominan Applets .Net?)

¿Hay alguna ventaja en usar uno sobre el otro?

Además, ¿a qué se refiere Microsoft esta tecnología? (¡Una búsqueda en MSDN no muestra nada llamado .Net Applets!)

ps: por lo que puedo ver, los controles ActiveX deben estar registrados en COM, mientras que los applets .Net no. Además, en la página web, se hace referencia a los controles activeX utilizando su CLSID, mientras que los applets .NET parecen estar referenciados por un nombre completo (ruta, nombre de DLL, espacio de nombres y clase)

¿Fue útil?

Solución

Los controles ActiveX son simplemente objetos COM que, como mínimo, implementan IUnknown. Las versiones recientes de IE también han comenzado a requerir que el objeto implemente IObjectSafety. Para hacer algo útil, el objeto también necesita implementar otras interfaces Ole, como IDispatch, IOleObject, etc. El objeto debe poder crearse a través de CoCreateInstance (), lo que significa que debe registrarlo de alguna manera con el registro. No tiene que usar un guid en la etiqueta, también puede usar AppId si registra uno.

También puedes escribir un código administrado y ejecutarlo dentro de IE también. La forma en que funciona es que el CLR registra un filtro MIME cuando está instalado. Luego, cuando IE ve que está enviando algo del tipo mime adecuado, entrega el código al CLR para que lo maneje. El CLR hace sandbox el código en la medida en que solo se le otorgan permisos de Internet, por lo que no puede hacer todo lo que el marco expone. Tendrá que verificar la documentación específica de lo que se puede y no se puede hacer en esta zona de seguridad.

Algunas compensaciones:

Facilidad de instalación: los controles ActiveX requieren que empaques todo en un archivo .CAB con un archivo .INI que describa los requisitos de instalación de una manera bastante críptica. Si tiene que instalar dependencias adicionales con sus módulos (como dlls ATL / MFC u otros módulos de terceros), se vuelve bastante complicado. Con el módulo .net, simplemente lo envía con el tipo MIME correcto, pero debe asegurarse de que sus usuarios tengan la versión correcta del marco (que puede consultar a través de la cadena de agente de usuario en su sitio web).

Seguridad: los controles ActiveX son solo código nativo que se ejecuta en el sistema de los usuarios, por lo que en teoría pueden hacer lo que quieran. En la práctica, LoRIE lo limita en muchos casos y tiene que hacer un montón de carcasas especiales como Registro y acceso al sistema de archivos (consulte Comprensión y trabajo en modo protegido ).

Subprocesamiento: dado que los controles ActiveX se ejecutan en el subproceso de la interfaz de usuario del navegador, debe asegurarse de no realizar largas operaciones de bloqueo en ese subproceso, por lo que debe realizar el subprocesamiento usted mismo. Si su operación de bloqueo prolongado manipula el DOM, tiene que ordenar las interfaces IHTMLxxx usted mismo, ya sea utilizando el GIT o COM Marshalling funciones . No estoy seguro de si los applets .net se ejecutan en el subproceso de la interfaz de usuario de los navegadores o no, pero es más fácil de manejar en C #, estoy seguro.

Objetos del navegador: si desea usar objetos de IE / Shell en su extensión administrada, tiene que escribir la interoperabilidad la mayor parte del tiempo, ya que Framework no hace un gran trabajo envolviendo esas interfaces en objetos administrados. Consulte http://pinvoke.net para obtener un poco de ayuda para comenzar.

Compatibilidad: existen problemas con el alojamiento de diferentes versiones del tiempo de ejecución en el mismo proceso. Hasta hace poco no era posible en absoluto, pero creo que con las versiones 3.x ha comenzado a ser posible hasta cierto punto. El resultado es que si apuntas a .net 2.0 y alguien más ya ha cargado .net 1.0 como parte de su extensión de navegador, pierdes. En general, IE y Windows Shell no admiten extensiones administradas. Este filtro MIME de la aplicación .net puede ser una excepción notable, pero tenga en cuenta que puede haber problemas potenciales.

Otros consejos

" Control ActiveX (creado con un lenguaje .Net) " y ".NET applet" Ambos son la jerga para " ;.NET ensamblado alojado en IE " ;.

De hecho, los ensamblados .NET se pueden alojar en una variedad de aplicaciones. Ver:

Creación de un host para .NET Common Language Runtime

Los controles ActiveX no tienen las mismas restricciones de seguridad que los applets .NET, lo que puede ser una ventaja o una desventaja dependiendo de lo que desee hacer. Los applets .NET son en general más fáciles de desarrollar, ActiveX creas con VB6 o C ++.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top