2008-08-27 8 views
8

Estoy tratando de implementar un servidor COM "fuera de proceso" escrito en C#. ¿Cómo hago esto?¿Qué debo hacer para implementar un servidor COM "fuera de proceso" en C#?

Necesito el código C# para estar "fuera de proceso" de mi aplicación C++ principal, porque no puedo cargar el tiempo de ejecución .NET en mi espacio de proceso principal (¿POR QUÉ ?: Mi código C++ está en una DLL que se carga en muchos diferentes de EXE de clientes, algunos de los cuales utilizan diferentes versiones del tiempo de ejecución de .NET. Puesto que sólo puede haber un tiempo de ejecución se carga en un solo proceso, mi mejor apuesta parece ser la de poner mi código C# en otro proceso.)

Respuesta

5

Puede crear componentes COM + utilizando System.EnterpriseServices.ServicedComponent. En consecuencia, podrá crear una activación de componente fuera de proc e in-proc (cliente), así como todos los beneficios COM + de la agrupación, la comunicación remota, ejecutar como un servicio de Windows, etc.

0

No puedo recomendar esto como del modo, pero podría crear un contenedor COM-callable para su biblioteca C#, luego crear un proyecto VB6 ActiveX exe que delegue llamadas a su biblioteca C#.

1

Here podemos leer que es posible, pero el exe se cargará como una biblioteca y no se iniciará en su propio proceso como un exe. No sé si eso es un problema para ti? También contiene algunas soluciones posibles si desea hacer que actúe como un verdadero servidor com fuera del proceso. Pero tal vez usar otra forma de comunicación entre procesos sea mejor. Como .Net Remoting.

0

¿Por qué no puedes cargar el tiempo de ejecución de .net en tu espacio de proceso? Es posible alojar el tiempo de ejecución .net y llamar a .NET usando COM.

+1

Mi producto es una DLL que es utilizado por otras compañías. Pueden escribir su aplicación usando varias versiones del .NET runtime (o alguna herramienta que no sea .NET). Solo se puede cargar una versión de .NET runtiem en un proceso a la vez, por lo que quiero evitar una versión separada de mi DLL para cada tiempo de ejecución .NET –

Cuestiones relacionadas