Domanda

Potete darmi qualche consiglio su come garantire che due applicazioni (una in C #, l'altra in Java) siano compatibili e efficienti nello scambio di dati? Ci sono dei gotcha che hai incontrato?

Lo scenario è punto a punto, un host è un fornitore di servizi e l'altro è un consumatore di servizi.

È stato utile?

Soluzione

Dai un'occhiata al protobuf formato di interscambio di dati. Un'implementazione .NET è inoltre disponibile .

Altri suggerimenti

JSON per dati descrittivi e XML per tipi di dati generali. Se ciò non è abbastanza efficiente per te, devi eseguire il rollup dei tuoi codec per gestire differenza di ordinamento dei byte tra C # e Java .

Anziché concentrarsi su una particolare tecnologia, il miglior consiglio che posso dare è di dedicare del tempo a concentrarmi sull'interfaccia tra i due (che si tratti di un servizio Web, di un database o di qualcos'altro). Se si tratta di un servizio Web, ad esempio, concentrarsi sulla creazione di un documento WDSL chiaro. Interfaccia, interfaccia, interfaccia. Per la maggior parte, prova a ignorare le tecnologie specifiche su ciascuna estremità, al di fuori di alcuni prototipi per garantire che entrambe le lingue supportino le tue scelte.

Inoltre, al di fuori dei principali blocchi stradali, non concentrarti sull'efficienza. Concentrati sulla chiarezza. Probabilmente avrai due team (cioè persone diverse) che lavorano alle estremità di questa interfaccia. Accertarsi che lo utilizzino correttamente è molto più importante che rendere le cose solo un po 'più veloci.

Se si dispone di Java come server Web, è possibile utilizzare Jax-WS ( https: // jax -ws.dev.java.net/ ) per creare servizi Web e WCF per .Net per la connessione al server Web Java.

Puoi usare qualcosa come XML (che non è sempre così efficiente) o devi trovare il tuo formato binario proprietario (efficiente ma molto più lavoro). Comincerei con XML e se la larghezza di banda diventa un problema, puoi sempre passare a un formato binario proprietario.

Qualcosa come SOAP (Wikipedia) è supportato sia da C # che da Java.

Usiamo C # / VB.Net per le nostre interfacce Web e Java per il nostro grosso client. Usiamo XML e webservices per comunicare tra il database e i server delle applicazioni. Funziona molto bene.

Assicurarsi di utilizzare un protocollo ben definito per comunicare i dati e scrivere test per garantire che le applicazioni rispondano in base al contratto.

Questa è una domanda così ampia ma raccomanderei di concentrarmi sugli standard che si applicano ad entrambe le piattaforme; XML o qualche altra forma standard di serializzazione, utilizzando REST per i servizi se devono interagire.

Se si utilizza XML, è possibile esternalizzare l'accesso ai dati come istruzioni XPath che possono essere archiviate in una risorsa condivisa utilizzata da entrambe le applicazioni. È un inizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top