Una limitazione dell'implementazione di protobuf-net è che chiama gli stream sottostanti in modo sincrono. Non offrendo un'API asincrona, ad es. BeginSerialize/EndSerialize o equivalente TPL, siamo costretti a legare un thread in attesa di I/O di flusso sincrono.Serializzazione asincrona protobuf
Esiste un piano per offrire metodi asincroni in protobuf-net o, in alternativa, modi creativi attorno a questo problema?
C'è un flusso bufferizzato generico che blocca su async? Attualmente sto usando un approccio MemoryStream ma voglio parzialmente deserializzare l'intestazione del file (come in http://stackoverflow.com/questions/13342318/deserialize-part-of-a-binary-file) e non ho modo per sapere quanti byte ho bisogno di recuperare Async, solo il deserializzatore lo sa. – tozevv
@tozevv sync-over-async? che * può * essere abbastanza pericoloso, ad essere onesti. Qual è l'origine dati sottostante qui? Quale fonte asincrona sta fornendo i dati? Un flusso sincrono-sincrono potrebbe probabilmente * essere scritto * abbastanza facilmente –
Sì, non ho alcun problema con la scrittura. Sto leggendo da un file con un'intestazione e un corpo. Se so che la dimensione dell'intestazione è banale per leggere l'intestazione (ReadAsync) prima e solo se l'intestazione soddisfa una certa condizione legge anche il resto del corpo Async. Sia l'intestazione che i contenuti vengono serializzati usando l'eccellente (grazie per quello) implementazione dei buffer di protocollo. – tozevv