Pergunta

Eu vim através de alguns artigos na web sobre .Net applets e eu queria saber como ele diferia de um controle ActiveX (criado usando uma linguagem .NET)? (Para esclarecer, este é com relação a applets que são executados dentro de um web-browser)

(é a diferença: controles ActiveX escritos em uma linguagem .Net são chamados .Net Applets)

Existem quaisquer vantagens em usar um sobre o outro?

Além disso, o que a Microsoft faz referência esta tecnologia como? (A pesquisa no MSDN doesnt trazer nada até chamado Net Applets!)

ps: a partir do que eu posso ver os controles ActiveX precisa ser COM registrado, enquanto .Net applets não faça. Além disso, na página da web, controles ActiveX são referenciados usando sua CLSID, enquanto que o .NET applets parecem ser referenciado por um nome completo (caminho, nome dll, namespace e classe)

Foi útil?

Solução

Os controles ActiveX são simplesmente COM objetos que, no mínimo, implementar IUnknown. As versões recentes do IE começaram a também exigem o objeto para implementar IObjectSafety. Para fazer qualquer coisa útil, às necessidades de objeto para implementar algumas outras interfaces OLE, bem como, tais como IDispatch, IOleObject, etc. o objeto precisa ser criar-able via CoCreateInstance () que significa que você tem que registrar lo de alguma forma com o registro. Você não tem que usar um guid na tag, você também pode usar o AppId se você registrar um.

Você também pode escrever algum código gerenciado e obter esse rodando dentro IE também. A maneira que trabalha é o CLR registra um MIME filtro quando é instalado. Então, quando IE vê que você está enviando para baixo algo do tipo mime adequada, ele entrega o código de fora para o CLR de manusear. O CLR faz sandbox o código na medida em que só é concedido permissões de Internet, de modo que não pode fazer tudo o que os expõe quadro. Você terá que verificar a documentação específica para o que pode e não pode ser feito nesta zona de segurança.

Alguns trade-offs:

facilidade de instalação: controles ActiveX exigem que você arrumar tudo em um arquivo CAB com um arquivo de inicialização que descreve os requisitos de instalação de uma forma bastante enigmática. Se você tem que instalar dependências adicionais com seus módulos (como DLLs ATL / MFC, ou outros módulos de terceiros) torna-se bastante complicado. Com o módulo de .net, basta enviá-lo para baixo com o tipo MIME certo, mas você tem que ter certeza que seus usuários tenham a versão correta do quadro (que você pode verificar através seqüência do agente do usuário em seu website).

Segurança: Os controles ActiveX são código apenas nativa em execução no sistema do usuário, por isso, em teoria, eles podem fazer o que quiserem. Na prática Lorie limita em muitos casos, e você tem que fazer um monte de embalagem especial de coisas como registro e arquivo de acesso do sistema (ver compreender e trabalhar no Modo protegido ).

Enfiar: Desde controles ActiveX executado no thread navegadores UI, você tem que ter certeza que você não faça muito tempo operações de bloqueio em que segmento, então você tem que fazer o mesmo enfiar. Se os seus longo bloqueio manipula operação do DOM, você tem que Marshal as interfaces IHTMLxxx mesmo, ou usando o GIT ou COM Marshalling funções . Eu não tenho certeza se os applets .net executado no thread navegadores UI ou não, mas é mais fácil de manusear em C #, tenho certeza.

Navegador Objetos: Se você quiser usar o IE / Shell objetos em sua extensão de gerenciada, você tem que escrever a interoperabilidade-se a maior parte do tempo desde que o quadro não fazer um grande trabalho de envolver essas interfaces em objetos gerenciados. Consulte http://pinvoke.net para obter um pouco de ajuda para começar.

Compatibilidade: Há problemas com hospedagem diferentes versões do tempo de execução no mesmo processo. Até recentemente, não foi possível em tudo, mas eu acho que com as versões 3.x ele começou a se tornar possível para uma extensão. O resultado é se você segmentar .NET 2.0 e outra pessoa já carregado .NET 1.0 como parte de sua extensão do navegador, você perde. No IE geral ea Shell do Windows não suportam extensões geridas. Este .net aplicativo MIME material de filtro pode ser uma exceção notável, mas esteja ciente de que pode haver potencialquestões.

Outras dicas

"controle ActiveX (criado usando uma linguagem .Net)" e "NET miniaplicativo" são ambos gíria para "NET montagem hospedado no IE".

Na verdade, montagens .NET pode ser hospedado em uma variedade de aplicações. Veja:

Criar um host para o Language Runtime .NET Common

controles

ActiveX não têm as mesmas restrições de segurança do que .NET applets, que pode ser uma vantagem ou desvantagem, dependendo do que você quer fazer. applets .NET são em geral mais fácil de desenvolver, ActiveX que você cria com VB6 ou C ++.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top