BinaryFormatter alternativa
-
29-09-2019 - |
Domanda
sto acquistando per un BinaryFormatter alternativa / sostituzione.
I problemi attuali che ho con BinaryFormatter (e le alternative dovrebbe affrontare questo) sono
1) la compatibilità all'indietro (può deserializzare classi serializzato con una versione precedente)
2) formato
3) Velocità
Ho verificato AltSerializer che sembra ok, alcune notizie contrastanti sulla velocità ma sembra che supporta la compatibilità all'indietro.
Ho anche guardato protobuf-net, che sembra fantastico tranne che in questa fase sarebbe necessario un sacco di lavoro come si deve definire tutti i file Proto.
Forse qualcuno secondo uno dei metodi di cui sopra o qualcosa d'altro si sarebbe preso cura di commento.
Soluzione
Da allora ho imparato che protobuf-net rispetterà il [DataContract] e gli attributi [DataMember] (nessun .protos richiesto) quindi se le classi sono WCF-ready o se si vuole per decorarle con gli attributi di cui sopra, è possibile utilizzare protobuf -net fuori dalla scatola per le classi.
Alcuni lavori è ovviamente necessario per decorare tutte le classi (v1 di protobuf richiede questo) però ho capito v2 sarà in grado di in grado di costruire il modello per le classi non decorati.
Altri suggerimenti
Per una manipolazione compatibilità all'indietro. Utilizzare uno dei IFormatter.Binder, ISerializationSurrogate, OptionalFieldAttribute, di IDeserializationCallback API
Per la velocità: Prova il Gramma.Serialization 's FastBinaryFormatter, una sostituzione per BinaryFormatter, l'attuazione della IFormatter interfaccia, onorando tutti i costrutti NET serializzazione standard, tra cui il sopra citato.
C'è anche Proto # e dotnet-protobufs .