Qual è il modo migliore per serializzare i dati in un formato binario indipendente dalla lingua?

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

Domanda

Sto cercando un meccanismo per serializzare i dati da passare su un socket o memoria condivisa in un meccanismo indipendente dalla lingua. Sono riluttante a utilizzare XML poiché questi dati saranno molto strutturati e la velocità di codifica / decodifica è vitale. Avere una buona API C con licenza libera è importante, ma idealmente dovrebbe esserci supporto per molte altre lingue. Ho esaminato buffer di protocollo di Google e ASN.1 . Sono sulla buona strada? C'è qualcosa di meglio? Devo solo implementare la mia struttura imballata e non cercare alcuni standard?

È stato utile?

Soluzione

Visti i tuoi requisiti, andrei con i buffer di protocollo di Google. Sembra che sia ideale per la tua applicazione.

Altri suggerimenti

Potresti prendere in considerazione l'XDR. Ha un RFC . L'ho usato e non ho mai avuto problemi di prestazioni con esso. È stato utilizzato in RPC ONC e ha un e viene fornito con uno strumento chiamato rpcgen. È anche facile creare un generatore da soli quando si desidera solo serializzare i dati (che è quello che ho finito per motivi di portabilità, mi ha richiesto mezza giornata). C'è un'implementazione C open source, ma può già essere in una libreria di sistema, quindi non avresti bisogno dei sorgenti.

ASN.1 mi è sempre sembrato un po 'barocco, ma a seconda delle tue reali esigenze potrebbe essere più appropriato, poiché ci sono alcune limitazioni all'XDR.

Volevo solo inserire ASN.1 in questo mix. ASN.1 è uno standard di formato, ma ci sono librerie per la maggior parte delle lingue e l'interfaccia C tramite asn1c è molto più pulito dell'interfaccia C per buffer di protocollo .

JSON è davvero il mio preferito per questo tipo di cose. Non ho precedenti esperienze con roba binaria in esso però. Si prega di pubblicare i risultati se si prevede di utilizzare JSON!

Thrift è un formato binario creato da Facebook. Ecco un confronto con i buffer di protocollo di Google.

Scopri Hessian

Esiste anche XML binario ma non sembra stabilizzato ancora. L'articolo a cui mi collego fornisce un sacco di collegamenti che potrebbero essere di interesse.

Un'altra opzione è SNAC / TLV che viene utilizzato da AOL nel suo Oscar / Protocollo AIM.

Dai un'occhiata anche a Muscle . Anche se lo fa abbastanza, si serializza in un formato binario.

Poche cose che devi considerare

1. Storage
2. Encoding Style (1 byte 2 byte)
3. TLV standards

ASN.1 Parser è buono per le rappresentazioni binarie, la parte migliore è che ASN.1 è una tecnologia consolidata ampiamente utilizzata sia all'interno di ITU-T che al di fuori di essa. La notazione è supportata da numerosi produttori di software.

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