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 entenWaitellerContinueWithfor at få adgang tilbyte[] - protobuf-net er fuldstændig stream-baseret, og derfor er der behov for
MemoryStreamat 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.