Isso é inteiramente correto. "Get" (BookSleeve) retorna um
byte[]
adiado . Você usou corretamente Wait para obter o byte[]
real , então usou um MemoryStream
sobre este byte[]
para chamar Deserialize
via protobuf-net. Tudo certo.
Se você deixar claro quaisquer passos que considere feios, talvez eu possa ser mais específico, mas:
- BookSleeve é totalmente assíncrono por meio de
Task
, daí a necessidade deWait
ouContinueWith
para acessar obyte[]
- protobuf-net é inteiramente baseado em Stream, daí a necessidade de
MemoryStream
para sentar em cima de umbyte[]
Claro, se você adicionar um método utilitário genérico (talvez um método de extensão), você só precisa escrevê-lo uma vez.
E com a adição de uma classe wrapper (para algum rastreamento/expiração deslizante) e um cache L1 (Redis como L2), isso é exatamente como o usamos no stackoverflow.
Uma observação:a conexão é thread-safe e deve ser compartilhada em massa; não faça uma conexão por operação.