Question

L’un des avantages de COM / ActiveX est le fichier EXE hors processus. Vous pouvez avoir un fichier EXE qui expose les méthodes et les propriétés sous une forme utilisable par les deux autres processus, y compris VBScript et JScript. En même temps, le fichier EXE pourrait avoir sa propre fonctionnalité, liée ou non à celle exposée par sa bibliothèque de types.

Quel est l'équivalent .NET?

J'ai un projet VB6 existant qui est un interpréteur de langage de script (utilisant MSScript) et une ressource de diverses fonctions d'outils pour d'autres langages de script. Il a été suggéré que je tente de le convertir en .NET.

Est-ce que cela va fonctionner ou vais-je finir par diviser un élément en deux?

Était-ce utile?

La solution

Les services d'entreprise vous permettront de le faire. Vous pouvez exécuter un composant COM en tant que:

  • Un processus DLLHost
  • Un service
  • Une bibliothèque inproc (elle suit le même processus que votre autre code)

Il existe de nombreux exemples sur Internet à ce sujet. Ce qui en découle est:

  • Décorez vos classes que vous devez exposer à COM avec des interfaces
  • Les composants que vous souhaitez héberger doivent être dérivés de ServicedComponent
  • Décorez vos interfaces avec un GuidAttribute (utilisez un Guid unique)
  • Décorez les interfaces et les classes exposées à COM avec un attribut ComVisible (true)

J'espère que cela vous aidera.

Autres conseils

La correspondance .NET est .NET Remoting pour .NET 2.0 et WCF pour la version 3.0+. Si vous devez cependant communiquer avec des objets COM, vous devez plutôt créer un objet exposé à COM. Il existe de nombreux tutoriels pour cela.

Il y a quelques options pour cela; le plus évident est composants desservis ; cela vous permet d’héberger le code managé dans COM + et de l’exécuter dans un processus séparé, mais vous avez besoin de GAC / COM-callable, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top