To je zcela správné. "Get" (BookSleeve) vrátí odložený byte[] . Správně jste použili Wait pro získání skutečného byte[] , pak použil MemoryStream přes tento byte[] volání Deserialize přes protobuf-net.
Všechno dobré.
Pokud objasníte jakékoli kroky, které vám připadají ošklivé, možná budu moci být konkrétnější, ale:
- BookSleeve je zcela asynchronní prostřednictvím
Task, proto je potřeba buďWaitneboContinueWithpro přístup kbyte[] - protobuf-net je založen výhradně na streamu, proto je potřeba
MemoryStreamsedět nadbyte[]
Samozřejmě, pokud přidáte obecnou obslužnou metodu (možná metodu rozšíření), stačí ji napsat pouze jednou.
A s přidáním třídy wrapper (pro některé sledování/posuvné vypršení platnosti) a mezipaměti L1 (Redis jako L2) je to skoro přesně to, jak ji používáme při stackoverflow.
Jedna poznámka:připojení je bezpečné pro vlákna a je určeno k hromadnému sdílení; neprovádějte připojení na operaci.