Protobuf: compilare una volta le specifiche, utilizzare il codice generato ovunque?

2

Una volta scritto, una specifica di protobuf può essere compilata usando protoc in una varietà di implementazioni in lingue diverse (ad es. python, c ++, go). È fantastico. Ma per compilare quel codice generato, hai bisogno di una libreria di sviluppo protobuf e, se non erro, è richiesto anche un runtime.

Esiste un modo per generare il codice di implementazione in un modo autonomo e in puro linguaggio? Quindi, ad esempio, compilerei la mia implementazione in C ++ e Python, la distribuirò e le persone potrebbero usarla semplicemente usando la libreria standard.

In caso contrario, ci sono framework (simili a protobuf in linea di principio) che, data una specifica, producono un codice di serializzazione che è indipendente e non richiede altre librerie non standard per una determinata lingua?

Questa domanda deriva dal fatto che di recente ho dovuto usare protobuf su diversi sistemi e ognuno aveva una diversa libreria di sviluppo disponibile. La specifica deve essere compilata su ciascun sistema separatamente? Cosa succede se i compilatori hanno versioni diverse?

    
posta AkiRoss 16.12.2018 - 13:03
fonte

1 risposta

4

Un obiettivo "tutte le piattaforme" dovrebbe, per necessità, offrire un'API con un minimo comune denominatore, il che significa che sarebbe scortese da usare dalla maggior parte delle lingue e non dall'idioma. Quindi no: l'approccio abituale è preferire strumenti specifici per piattaforma / lingua che possono utilizzare le API e le tecniche più appropriate per tale piattaforma / lingua nell'API.

La versione del compilatore diversa non dovrebbe importare - il formato di serializzazione sottostante non ha cambiato affatto nel momento in cui protobuf è stato pubblicamente disponibile. Funzionerà ancora, purché il parser della lingua supporti la versione di sintassi che stai utilizzando.

    
risposta data 16.12.2018 - 13:34
fonte

Leggi altre domande sui tag