Que dois-je faire pour implémenter un serveur COM « hors procédure » en C# ?

StackOverflow https://stackoverflow.com/questions/30653

  •  09-06-2019
  •  | 
  •  

Question

J'essaie d'implémenter un serveur COM "hors proc" écrit en C#.Comment puis-je faire cela?

J'ai besoin que le code C# soit "hors proc" de mon application C++ principale, car je ne peux pas charger le runtime .NET dans mon espace de processus principal

POURQUOI?:
Mon code C++ se trouve dans une DLL chargée dans de nombreux EXE clients différents, dont certains utilisent différentes versions du runtime .NET.Puisqu'il ne peut y avoir qu'un seul runtime chargé dans un seul processus, mon meilleur pari semble être de mettre mon code C# dans un autre processus.

Était-ce utile?

La solution

Vous pouvez créer des composants COM+ à l'aide de System.EnterpriseServices.ServicedComponent.Par conséquent, vous serez en mesure de créer une activation de composants hors procédure et in-proc (client), ainsi que tous les avantages COM+ du pooling, de l'accès à distance, de l'exécution en tant que service Windows, etc.

Autres conseils

Ici nous pouvons lire que c'est possible, mais l'exe sera chargé en tant que bibliothèque et non démarré dans son propre processus comme un exe.Je ne sais pas si c'est un problème pour toi ?Il contient également quelques solutions possibles si vous souhaitez le faire agir comme un véritable serveur de communication hors processus.Mais peut-être qu'il est préférable d'utiliser un autre moyen de communication inter-processus.Comme .Net Remoting.

Je ne peux pas le recommander car le chemin, mais vous pouvez créer un wrapper appelable par COM pour votre bibliothèque C#, puis créer un projet exe ActiveX VB6 qui délègue les appels à votre bibliothèque C#.

Pourquoi ne pouvez-vous pas charger le runtime .net dans votre espace de processus ?Il est possible d'héberger le runtime .net et d'appeler .net à l'aide de COM.

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