Qual è il modo migliore per serializzare i dati in un formato binario indipendente dalla lingua?
-
02-07-2019 - |
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?
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.