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ďWait
neboContinueWith
pro přístup kbyte[]
- protobuf-net je založen výhradně na streamu, proto je potřeba
MemoryStream
sedě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.