Comunicación entre procesos entre la aplicación C ++ y la aplicación Java en el entorno del sistema operativo Windows

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

  •  06-07-2019
  •  | 
  •  

Pregunta

Tenemos una aplicación C ++ en Windows que inicia un proceso java. Estas dos aplicaciones deben comunicarse entre sí (a través de fragmentos de código XML).

¿Qué método de comunicación entre procesos elegiría y por qué?

Los métodos en la tabla para nosotros son: un archivo (s), tuberías y sockets compartidos (aunque creo que esto tiene algunos problemas de seguridad). Estoy abierto a otros métodos.

¿Fue útil?

Solución

No estoy seguro de por qué cree que la comunicación basada en sockets tendría problemas de seguridad (use SSL). A menudo es un enfoque muy bueno ya que es agnóstico del lenguaje , suponiendo que tenga un protocolo de comunicación bien definido. Eche un vistazo a los búferes de protocolo de Google. por ejemplo, generan las clases y secuencias de Java requeridas.

En mi experiencia, los sistemas de archivos (especialmente los sistemas de archivos de red) no son adecuados para dicha comunicación, ya que no necesariamente están sintonizados para mensajería (he visto problemas de almacenamiento en caché que hacen que no se seleccionen los archivos). por el proceso de destino, por ejemplo).

Otra opción es una capa mensajería ( AMQ o Tibco, por ejemplo) aunque es probable que esto implique una mayor sobrecarga administrativa (más experiencia) para la configuración.

Personalmente optaría por un enfoque de socket puro debido a su flexibilidad y simplicidad. Estarás en control completo .

Otros consejos

He utilizado canalizaciones con nombre para la comunicación entre C # y una aplicación de C ++ multiplataforma y solo obtuve buenos resultados. Salvo que los enchufes es definitivamente el camino a seguir.

Los enchufes son agradables. Le brindan la posibilidad de crear fácilmente una capa de prueba de caja negra alrededor de cada componente, así como ejecutar cada componente en su propia máquina.

La seguridad es definitivamente una preocupación, pero hay una buena gama de opciones dependiendo de lo importante que sea. Puede usar SSL, protocolo de enlace personalizado, inicios de sesión protegidos por contraseña y firewalls para ayudar a asegurarlo.

Editar: No es algo que recomiendo, pero también hay memoria compartida usando JNI. Solo pensé que lo mencionaría porque no está en tu lista.

Ice es muy bueno :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top