2009-07-30 9 views
6

Tenemos una aplicación C++ en Windows que inicia un proceso de Java. Estas dos aplicaciones necesitan comunicarse entre sí (a través de fragmentos de xml).Interproceso Comunicación entre la aplicación C++ y la aplicación Java en el entorno del sistema operativo Windows

¿Qué método de comunicación interproceso elegirías, y por qué?

Los métodos que tenemos sobre la mesa son: un archivo (s) compartido, tuberías y tomas de corriente (aunque creo que esto tiene algunos problemas de seguridad). Estoy abierto a otros métodos.

Respuesta

9

No estoy seguro de por qué piensas que la comunicación basada en socket tendría problemas de seguridad (usa SSL). A menudo es un enfoque muy bueno ya que es agnostic language, suponiendo que tiene un protocolo de comunicación bien definido. Eche un vistazo a de Google protocol buffers, por ejemplo, generan las clases y las secuencias de Java necesarias. problemas de almacenamiento en caché

En mi experiencia, los sistemas de archivos (especialmente los sistemas de archivos de red) no están bien adaptados a dicha comunicación, ya que no necesariamente están afinados para mensajería (que he visto resultan en archivos no son recogidos por el objetivo proceso por ejemplo).

Otra opción es una capa de mensajes (AMQ o Tibco por ejemplo), aunque esto probablemente implique una mayor carga administrativa (más experiencia) para configurar.

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

+0

Se trata de puntos y seguridad. Gracias. +1 –

3

he utilizado canalizaciones con nombre para la comunicación entre C# y una multiplataforma de aplicaciones C++ y no tenía nada pero los buenos resultados. Salvo esos enchufes es definitivamente el camino a seguir.

2

Las tomas son agradables. Le dan la capacidad de crear fácilmente una capa de prueba Blackbox 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 según lo importante que sea. Puede usar SSL, protocolo de enlace personalizado, inicios de sesión protegidos por contraseña y firewalls para ayudar a protegerlo.

Editar: No es algo que recomiendo, pero también hay memoria compartida con JNI. Solo pensé en mencionarlo porque no está en tu lista.

Cuestiones relacionadas