Domanda

Ho un ampio set di file XML di uno schema appropriato - i file XML definiscono il protocollo di comunicazione binaria (struttura del messaggio).

Vorrei sfruttare la tecnologia dei buffer di protocollo di Google.

Sto usando il codice esistente per caricare i file XML in un modello a oggetti (in memoria). Vorrei generare un file .proto da quel modello di oggetti.

quindi sostanzialmente quello che sto cercando è il codice / libreria (in C # /. NET) che rappresenta il formato di file .proto come modello a oggetti e può salvare quel modello a oggetti in un file .proto.

Ho dato un'occhiata alle dotnet-protobufs di Jon Skeet, penso di aver capito cosa fa (generare codice c # basato su file .proto)

Tuttavia, non ho capito se posso usarlo per il mio progetto (probabilmente ha il modello a oggetti in formato .proto lì, ma probabilmente solo codice che può analizzare questo formato e non scriverlo)

È stato utile?

Soluzione

protobuf-net (la mia versione dei buffer di protocollo in .NET) ha il supporto primitivo per la generazione di file proto, ma non sarebbe difficile riempire gli spazi vuoti. Mi sono concentrato prima sul motore principale, quindi sulla generazione di C # da proto. Scrivere un xslt per generare un proto dal modello a oggetti non sarebbe molto diverso. Ci vorranno alcuni giorni però ... (al momento ho un tempo limitato).

Se questo fosse utile, per favore fatemelo sapere.

Per informazioni, il motore protobuf-net è compatibile con la maggior parte delle classi XmlSerializer (e DataContractSerializer , e di recente BinaryFormatter ) - quindi se il tuo il codice attualmente funziona come xml, probabilmente possiamo farlo funzionare in protobuf-net. Nessuna garanzia, ovviamente ...

Altri suggerimenti

Il mio codice può solo serializzare e deserializzare in binario e testo. Tuttavia, credo che il progetto di Marc Gravell abbia funzionalità XML. In effetti, credo che generi codice C # basato sul caricamento della versione binaria di un file .proto (che è esso stesso codificato come protobuf), scrivendolo come XML e quindi applicando XSLT ad esso ...

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