Domanda

Sto cercando di implementare un server COM "out of proc" scritto in C#.Come faccio a fare questo?

Ho bisogno che il codice C# sia "out of proc" dalla mia applicazione C++ principale, perché non riesco a caricare il runtime .NET nello spazio del processo principale

PERCHÉ?:
Il mio codice C++ è in una DLL caricata in molti EXE clienti diversi, alcuni dei quali utilizzano versioni diverse del runtime .NET.Poiché può essere caricato un solo runtime in un singolo processo, la soluzione migliore sembra essere quella di inserire il codice C# in un altro processo.

È stato utile?

Soluzione

È possibile creare componenti COM+ utilizzando System.EnterpriseServices.ServicedComponent.Di conseguenza, sarai in grado di creare l'attivazione dei componenti out-of-proc e in-process (client), nonché tutti i vantaggi COM+ di pooling, comunicazione remota, esecuzione come servizio Windows, ecc.

Altri suggerimenti

Qui possiamo leggere che è possibile, ma l'exe verrà caricato come libreria e non avviato nel proprio processo come un exe.Non so se per te è un problema?Contiene anche alcune possibili soluzioni se vuoi farlo funzionare come un vero server com fuori processo.Ma forse è meglio usare un altro modo di comunicazione tra processi.Come .Net Remoting.

Non posso raccomandarlo come il modo, ma potresti creare un wrapper richiamabile COM per la libreria C#, quindi creare un progetto exe ActiveX VB6 che deleghi le chiamate alla libreria C#.

Perché non puoi caricare il runtime .net nello spazio di elaborazione?È possibile ospitare il runtime .net e chiamare .net utilizzando COM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top