2009-02-12 18 views

Respuesta

7

Si la comunicación entre procesos siempre se va a hacer en la misma máquina, las tuberías con nombre son el camino a seguir porque son más rápidas que otras opciones.

Sin embargo, si existe la más mínima posibilidad de que esta comunicación se produzca a través de los límites de la máquina en algún momento, vaya con el enfoque de socket. Para C++, necesitará el archivo de encabezado winsock2.h. En C#, use el espacio de nombre System.Net.Sockets.

Ha pasado un tiempo desde que hice C++ no administrado, pero mi recuerdo es que tendrá que escribir menos código C++ si crea el servidor en el lado C++ y luego utiliza la clase TcpClient en el lado C#.

0

Use DCOM/RPC o conductos con nombre: cualquier otra cosa es insegura, hacky o ambas cosas.

1

Los sockets y las Canalizaciones con nombre son dos opciones bien admitidas en los entornos administrados y no administrados.

2

Los enchufes son probablemente la mejor opción.

Con tomas de corriente, no necesariamente está vinculado a que ambos programas estén en la misma máquina.

Además, es probable que sea la opción más portátil (diablos, Windows incluso tiene select() para enchufes).

1

Hay varias formas de hacerlo, pero creo que la mejor manera sería usar WCF y COM +. Si aloja un servicio en COM +, puede acceder a él a través de WCF en su servicio .NET, y a través de las interfaces COM en su código no administrado.

Es posible que desee echa un vistazo a las siguientes secciones de la documentación de MSDN para empezar:

Integración de Servicios WCF con COM +: http://msdn.microsoft.com/en-us/library/bb735856.aspx

Integración con aplicaciones COM + Descripción general: http://msdn.microsoft.com/en-us/library/ms734723.aspx

0

Cree un objeto COM de Singleton. Mantenga los datos en este objeto COM, que se pueden leer mediante aplicaciones C++ y C#.

+0

¿cómo una aplicación C++ leer este objeto COM sin utilizar por favor? –

0

diría Redis sería la mejor solución para cualquier tipo de comunicación entre procesos

Cuestiones relacionadas