Това е напълно правилно. „Get“ (BookSleeve) връща отложен byte[]
. Правилно сте използвали Wait, за да получите действителния byte[]
, след което използва MemoryStream
над този byte[]
за да извикате Deserialize
чрез protobuf-net.
Всичко добре.
Ако изясните стъпките, които намирате за грозни, може би ще мога да бъда по-конкретен, но:
- BookSleeve е изцяло асинхронен чрез
Task
, следователно необходимостта отWait
илиContinueWith
за достъп доbyte[]
- protobuf-net е изцяло базиран на поток, следователно необходимостта от
MemoryStream
за да седне на върха наbyte[]
Разбира се, ако добавите общ помощен метод (може би метод за разширение), трябва да го напишете само веднъж.
И с добавянето if клас на обвивка (за известно проследяване/плъзгане на изтичане) и L1 кеш (Redis като L2), това е почти точно как го използваме при stackoverflow.
Една забележка:връзката е безопасна за нишки и е предназначена за масово споделяне; не правете връзка на операция.