Comunicazione tra diverse tecnologie in un'applicazione distribuita

7

Ho dovuto incorporare diverse applicazioni e servizi legacy in un'applicazione distribuita in rete. I servizi e le applicazioni esistenti sono scritti utilizzando diversi linguaggi e tecnologie, tra cui: java, C # .Net e C ++; tutto funziona su macchine MS Windows. Ora mi sto interrogando sul meccanismo di comunicazione tra di loro. Qual è il modo semplice e standard? Grazie! PS. le comunicazioni includono l'invio di messaggi semplici e le chiamate al metodo remoto.

    
posta sjtaheri 20.10.2011 - 08:14
fonte

7 risposte

7

Purtroppo non esiste una "soluzione standard", quindi devi capire quali sono i tuoi requisiti e scegliere l'opzione più adatta.

Ecco alcune opzioni.

Per una prospettiva di integrazione delle applicazioni di rete SOAP su http potrebbe essere il modo migliore (laborioso ma trasparente) per trovare un modo per creare l'integrazione.

Anche la piattaforma Windows offre diversi mezzi di integrazione. La comunicazione di processo da Windows a Windows può essere risolta bij (D) COM o named pipe (se sulla stessa macchina), anche RPC potrebbe risolvere le tue esigenze.

Per la tua applicazione java sarai in grado di usare JNDI per creare un'integrazione nativa all'app c ++ e da lì potrai anche andare a (D) COM, quindi ci sono molte opzioni.

    
risposta data 20.10.2011 - 13:56
fonte
4

Se puoi permetterti, BizTalk si rivolge direttamente a questo tipo di problema. Ha un modello di programmazione coerente, quindi se è possibile creare un adattatore BizTalk per ciascuno dei propri sistemi isolati, è possibile creare orchestrazioni BizTalk per controllare il flusso di informazioni tra tutti questi sistemi. È anche abbastanza performante nella mia esperienza.

    
risposta data 20.10.2011 - 15:05
fonte
2

Potresti provare a utilizzare ZeroMQ , una moderna libreria open source per le comunicazioni in rete con binding per C ++, .NET, Java e la maggior parte delle lingue a cui puoi pensare.

Dalla pagina di destinazione 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 non specifica il formato dei tuoi messaggi in modo da poter utilizzare qualsiasi serializzazione tu preferisca, sebbene tu voglia una serializzazione che era compatibile con tipo .NET / Java / C ++.

    
risposta data 15.11.2011 - 16:26
fonte
1

Se tutti sono in esecuzione su macchine Windows, guarderei msmq, sono sicuro che tutti hanno implementazioni. Se hai bisogno di più della semplice comunicazione, allora guarderei biz talk e infine se mai dovessi lavorare con sistemi diversi, IBM MQ è il miglior prodotto che IBM fa ed è affidabile.

    
risposta data 20.10.2011 - 14:33
fonte
1

Dipende dal livello basso di ciascun servizio. Per i servizi di livello inferiore, utilizzerei un approccio di messaggistica binario, come libreria protobuf di Google .

Per i servizi di livello superiore (e certamente per i servizi di facciata esterni), utilizzerei SOAP o REST tramite un server applicazioni (WebLogic, JBoss) o qualcosa di più semplice (Apache, IIS).

    
risposta data 20.10.2011 - 15:23
fonte
1

Raccomando assolutamente "Enterprise Integration Patterns" di Gregor Hohpe e Bobby Wolfe. Suggerisce modelli per l'utilizzo della messaggistica esattamente per il tuo problema.

    
risposta data 23.10.2011 - 21:39
fonte
0

IP è il minimo comune denominatore della maggior parte dei computer in questo mondo. Tutte le lingue hanno accesso allo stack IP del sistema operativo.

    
risposta data 20.10.2011 - 09:44
fonte

Leggi altre domande sui tag