Det er helt korrekt. "Get" (BookSleeve) returnerer en udskudt byte[]
. Du har brugt Vent korrekt for at få den faktiske byte[]
, og brugte derefter en MemoryStream
over denne byte[]
for at kalde Deserialize
via protobuf-net.
Alt godt.
Hvis du gør det klart, hvilke trin du finder grimme, kan jeg måske være mere specifik, men:
- BookSleeve er fuldstændig asynkront via
Task
, derfor behovet for entenWait
ellerContinueWith
for at få adgang tilbyte[]
- protobuf-net er fuldstændig stream-baseret, og derfor er der behov for
MemoryStream
at sidde oven på enbyte[]
Hvis du tilføjer en generisk hjælpemetode (måske en udvidelsesmetode), behøver du selvfølgelig kun at skrive den én gang.
Og med tilføjelsen hvis en wrapper-klasse (til noget sporing/glidende-udløb) og en L1-cache (Redis som L2), er dette stort set nøjagtigt, hvordan vi bruger det ved stackoverflow.
En bemærkning:forbindelsen er trådsikker og beregnet til at blive massivt delt; foretag ikke en forbindelse pr. handling.