sharp servidor programar programacion comunicar como aplicaciones c# c++ ipc

c# - servidor - sockets c sharp



Comunicación entre procesos entre la aplicación C#y la aplicación C++ no administrada (8)

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

Tengo dos servicios de Windows, el primero escrito en C # y el segundo escrito en C ++ no administrado, quiero saber cómo puedo hacer la comunicación entre procesos de dos vías.


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 consultar las siguientes secciones de la documentación de MSDN para comenzar:

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

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


Los enchufes son probablemente tu 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).


Los sockets y Named Pipes son dos opciones bien admitidas en entornos administrados y no administrados.


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



Si la comunicación entre procesos siempre se va a hacer en la misma máquina, los conductos con nombre son el camino a seguir porque son más rápidos 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 nombres System.Net.Sockets .

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


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