Was muss ich tun, um einen „Out-of-Proc“-COM-Server in C# zu implementieren?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich versuche, einen in C# geschriebenen „Out-of-Proc“-COM-Server zu implementieren.Wie mache ich das?

Ich benötige, dass der C#-Code „out of proc“ meiner C++-Hauptanwendung ist, da ich die .NET-Laufzeitumgebung nicht in meinen Hauptprozessbereich laden kann

WARUM?:
Mein C++-Code befindet sich in einer DLL, die in viele verschiedene Kunden-EXE-Dateien geladen wird, von denen einige unterschiedliche Versionen der .NET-Laufzeit verwenden.Da in einen einzelnen Prozess nur eine Laufzeit geladen werden kann, scheint es meine beste Wahl zu sein, meinen C#-Code in einen anderen Prozess zu legen.

War es hilfreich?

Lösung

Sie können COM+-Komponenten mit System.EnterpriseServices.ServicedComponent erstellen.Folglich können Sie Out-of-Proc- und In-Proc-(Client-)Komponentenaktivierungen erstellen und alle COM+-Vorteile von Pooling, Remoting, der Ausführung als Windows-Dienst usw. nutzen.

Andere Tipps

Hier Wir können lesen, dass es möglich ist, aber die Exe wird als Bibliothek geladen und nicht wie eine Exe in einem eigenen Prozess gestartet.Ich weiß nicht, ob das ein Problem für Sie ist?Es enthält auch einige mögliche Lösungen, wenn Sie möchten, dass es sich wie ein echter Out-of-Process-COM-Server verhält.Aber vielleicht ist es besser, eine andere Art der Kommunikation zwischen Prozessen zu verwenden.Wie .Net Remoting.

Ich kann dies nicht empfehlen der Weg, aber Sie könnten einen COM-aufrufbaren Wrapper für Ihre C#-Bibliothek erstellen und dann ein VB6-ActiveX-Exe-Projekt erstellen, das Aufrufe an Ihre C#-Bibliothek delegiert.

Warum können Sie die .net-Laufzeitumgebung nicht in Ihren Prozessbereich laden?Es ist möglich, die .net-Laufzeitumgebung zu hosten und .net über COM aufzurufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top