Comunicación entre diferentes tecnologías en una aplicación distribuida

7

Tuve que incorporar varias aplicaciones y servicios heredados en una aplicación distribuida en red. Los servicios y aplicaciones existentes se escriben utilizando diferentes lenguajes y tecnologías, incluyendo: java, C # .Net y C ++; todos ejecutándose en maquinas MS Windows. Ahora me pregunto sobre el mecanismo de comunicación entre ellos. ¿Cuál es la forma simple y estándar? ¡Gracias! PD. las comunicaciones incluyen el envío simple de mensajes y las invocaciones de métodos remotos.

    
pregunta sjtaheri 20.10.2011 - 08:14

7 respuestas

7

Desafortunadamente, no existe tal cosa como "la solución estándar", por lo que debe averiguar cuáles son sus requisitos y, a partir de eso, elegir la opción que mejor se ajuste.

Aquí hay algunas opciones.

Para una perspectiva de integración de aplicaciones de red, SOAP a través de http podría ser la mejor manera (laboriosa pero transparente) de encontrar un medio para crear la integración.

La plataforma Windows en sí también proporciona diferentes medios de integración. La comunicación del proceso de Windows al proceso de Windows puede resolverse bij (D) COM o canalizaciones con nombre (si está en la misma máquina), incluso RPC podría resolver sus necesidades.

Para su aplicación java, podría usar JNDI para crear una integración nativa a la aplicación c ++ y desde allí podría ir a (D) COM incluso, por lo que hay muchas opciones.

    
respondido por el Carlo Kuip 20.10.2011 - 13:56
4

Si puede permitírselo, BizTalk está dirigido directamente a este tipo de problema. Tiene un modelo de programación consistente, por lo que si puede crear un adaptador de BizTalk para cada uno de sus sistemas aislados, puede crear orquestaciones de BizTalk para controlar el flujo de información entre todos esos sistemas. También es bastante eficaz en mi experiencia.

    
respondido por el Steven Evers 20.10.2011 - 15:05
2

Puede probar a utilizar ZeroMQ , una biblioteca moderna de código abierto para comunicaciones en red que tiene enlaces para C ++, .NET, Java y la mayoría de los idiomas que se te ocurran.

Desde la página de destino de ZeroMQ:

The socket library that acts as a concurrency framework.
 Ø  Faster than TCP, for clustered products and supercomputing.
 Ø  Carries messages across inproc, IPC, TCP, and multicast.
 Ø  Connect N-to-N via fanout, pubsub, pipeline, request-reply.
 Ø  Asynch I/O for scalable multicore message-passing apps.
 Ø  Large and active open source community.
 Ø  30+ languages including C, C++, Java, .NET, Python.
 Ø  Most OSes including Linux, Windows, OS X.
 Ø  LGPL free software with full commercial support from iMatix.

ZeroMQ no especifica el formato de sus mensajes, por lo que puede usar la serialización que prefiera, aunque desearía una serialización que era tipo compatible con .NET / Java / C ++.

    
respondido por el Ed James 15.11.2011 - 16:26
1

Si todos se ejecutan en máquinas con Windows, vería msmq. Estoy seguro de que todos tienen implementaciones. Si necesita más que solo comunicación, entonces vería biz talk y, por último, si alguna vez necesito trabajar con diferentes sistemas, IBM MQ es el mejor producto que hace IBM y es absolutamente confiable.

    
respondido por el rerun 20.10.2011 - 14:33
1

Depende de cuán bajo sea el nivel de servicio. Para los servicios de nivel inferior, usaría un enfoque de mensajería binaria, como biblioteca de protobuf de Google .

Para los servicios de nivel superior (y ciertamente para los servicios externos), usaría SOAP o REST a través de un servidor de aplicaciones (WebLogic, JBoss) o algo más simple (Apache, IIS).

    
respondido por el Matthew Rodatus 20.10.2011 - 15:23
1

Absolutamente recomiendo 'Patrones de integración empresarial' por Gregor Hohpe y Bobby Wolfe. Sugiere patrones para el uso de mensajes para exactamente su problema.

    
respondido por el Paul T Davies 23.10.2011 - 21:39
0

IP es el denominador menos común de la mayoría de las computadoras en este mundo. Todos los idiomas tienen acceso a la pila de IP del sistema operativo.

    
respondido por el mouviciel 20.10.2011 - 09:44

Lea otras preguntas en las etiquetas