C'est tout à fait exact. "Get" (BookSleeve) renvoie un byte[] différé . Vous avez correctement utilisé Wait pour obtenir le byte[] réel , puis utilisé un MemoryStream sur ce byte[] pour appeler Deserialize via protobuf-net.
Tout va bien.
Si vous précisez les étapes que vous trouvez laide, je pourrais peut-être être plus précis, mais :
- BookSleeve est entièrement asynchrone via
Task, d'où la nécessité soit deWaitouContinueWithpour accéder aubyte[] - protobuf-net est entièrement basé sur Stream, d'où le besoin de
MemoryStreams'asseoir au-dessus d'unbyte[]
Bien sûr, si vous ajoutez une méthode utilitaire générique (peut-être une méthode d'extension), vous n'avez besoin de l'écrire qu'une seule fois.
Et avec l'ajout d'une classe wrapper (pour certains tracking/sliding-expiry) et d'un cache L1 (Redis comme L2), c'est à peu près exactement comment nous l'utilisons à stackoverflow.
Une remarque :la connexion est thread-safe et destinée à être massivement partagée; ne faites pas de connexion par opération.