Eso es completamente correcto. "Get" (BookSleeve) devuelve un byte[]
diferido . Ha utilizado correctamente Esperar para obtener el byte[]
real , luego usó un MemoryStream
sobre este byte[]
para llamar a Deserialize
vía protobuf-net.
Todo bien.
Si deja en claro cualquier paso que encuentre feo, podría ser más específico, pero:
- BookSleeve es completamente asíncrono a través de
Task
, de ahí la necesidad deWait
oContinueWith
para acceder albyte[]
- protobuf-net está completamente basado en Stream, de ahí la necesidad de
MemoryStream
para sentarse encima de unbyte[]
Por supuesto, si agrega un método de utilidad genérico (tal vez un método de extensión), solo necesita escribirlo una vez.
Y con la adición de una clase contenedora (para algún seguimiento/caducidad deslizante) y un caché L1 (Redis como L2), así es como lo usamos en stackoverflow.
Una nota:la conexión es segura para subprocesos y está destinada a ser compartida de forma masiva; no haga una conexión por operación.