Det är helt korrekt. "Get" (BookSleeve) returnerar en uppskjuten byte[]
. Du har använt Vänta korrekt för att få den faktiska byte[]
, använde sedan en MemoryStream
över denna byte[]
för att anropa Deserialize
via protobuf-net.
Allt bra.
Om du klargör några steg som du tycker är fula kanske jag kan vara mer specifik, men:
- BookSleeve är helt asynkront via
Task
, därav behovet av antingenWait
ellerContinueWith
för att komma åtbyte[]
- protobuf-net är helt strömbaserat, därav behovet av
MemoryStream
att sitta ovanpå enbyte[]
Om du lägger till en generisk verktygsmetod (kanske en förlängningsmetod) behöver du naturligtvis bara skriva den en gång.
Och med tillägget om en omslagsklass (för viss spårning/sliding-utgång) och en L1-cache (Redis som L2), är det här ganska exakt hur vi använder det vid stackoverflow.
En anmärkning:anslutningen är trådsäker och avsedd att delas massivt; gör inte en anslutning per operation.