Ograniczeniem implementacji protobuf-net jest synchronizacja wywoływanych strumieni bazowych. Nie oferując asynchronicznego interfejsu API, np. BeginSerialize/EndSerialize lub równoważnik TPL, jesteśmy zmuszeni związać wątek oczekujący na synchroniczne operacje we/wy.Asynchroniczna serializacja protobuf
Czy istnieje plan oferowania metod asynchronicznych w protobuf-net, lub alternatywnie wszelkie kreatywne sposoby rozwiązania tego problemu?
Czy istnieje ogólny bufor buforowany blokujący asynchronizację? Obecnie używam podejścia MemoryStream, ale chcę częściowo deserializować nagłówek pliku (jak w http://stackoverflow.com/questions/13342318/deserialize-part-of-a-binary-file) i nie mam sposób, aby wiedzieć, ile bajtów potrzebuję do pobrania Async, wie tylko deserializer. – tozevv
@tozevv sync-over-async? że * może * być dość niebezpieczne, szczerze mówiąc. Jakie jest tutaj źródło danych? Jakie źródło asynchroniczne dostarcza dane? Strumień synchronizacji po asynchronizacji może być prawdopodobnie * zapisany * z wystarczającą łatwością –
Tak, nie mam problemu z pisaniem. Czytam z pliku z nagłówkiem i treścią. Jeśli wiem, rozmiar nagłówka jest banalnie prosty, aby odczytać nagłówek (ReadAsync) pierwszy i tylko wtedy, gdy nagłówek spełnia pewien warunek, przeczytaj resztę ciała także Asynchronicznie. Zarówno nagłówek, jak i zawartość są serializowane za pomocą znakomitej (dzięki za to) implementacji buforów protokołu. – tozevv