Pergunta

Uma das coisas legais sobre o Com/ActiveX foi o ex-exagerto. Você pode ter um EXE que expunha métodos e propriedades em uma forma utilizável por outros processos, incluindo VBScript e JScript. Ao mesmo tempo, o EXE pode ter sua própria funcionalidade, relacionada ou não relacionada à exposta por sua biblioteca de tipos.

Qual é o equivalente .NET?

Eu tenho um projeto VB6 existente, que é um intérprete de idioma de script (usando MSSCript) e um recurso de várias funções de ferramenta para outros idiomas de script. Foi sugerido que eu tente convertê -lo em .NET.

Isso vai funcionar ou acabarei dividindo o item em dois?

Foi útil?

Solução

Os serviços corporativos permitirão que você faça exatamente isso. Você pode executar um componente COM como:

  • Um processo de dllHost
  • Um serviço
  • Uma biblioteca inproc (este está no mesmo processo que seu outro código)

Existem inúmeros exemplos na internet sobre isso. O que se resume é:

  • Decore suas aulas que você precisa expor ao COM com interfaces
  • Os componentes que você deseja hospedar precisam ser derrivados do ServiceComponent
  • Decore suas interfaces com um Guidattribute (use um GUID exclusivo)
  • Decore as interfaces e classes expostas ao COM com um atributo compatível (verdadeiro)

Espero que isto ajude.

Outras dicas

A correspondência .NET é .NET Remoting para .NET 2.0 e WCF para 3.0+. Se você precisar se comunicar com objetos COM, no entanto, deve criar um objeto composto. Existem alguns tutoriais por aí para isso.

Existem algumas opções para isso; o ser mais óbvio componentes de serviço; Isso permite que você hospede o código gerenciado em com+ para executá-lo em um processo separado, mas você precisa de GAC/compatível etc.

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