Das ist völlig richtig. "Get" (BookSleeve) gibt ein zurückgestelltes byte[]
zurück . Sie haben Wait korrekt verwendet, um das eigentliche byte[]
zu erhalten , dann einen MemoryStream
verwendet über dieses byte[]
um Deserialize
aufzurufen über protobuf-net.
Alles gut.
Wenn Sie Schritte deutlich machen, die Sie hässlich finden, kann ich vielleicht genauer sein, aber:
- BookSleeve ist vollständig asynchron über
Task
, daher ist entwederWait
erforderlich oderContinueWith
um auf dasbyte[]
zuzugreifen - protobuf-net ist vollständig Stream-basiert, daher die Notwendigkeit für
MemoryStream
auf einembyte[]
sitzen
Wenn Sie eine generische Hilfsmethode (vielleicht eine Erweiterungsmethode) hinzufügen, müssen Sie sie natürlich nur einmal schreiben.
Und mit der Hinzufügung einer Wrapper-Klasse (für etwas Tracking/Sliding-Expiry) und einem L1-Cache (Redis als L2) ist dies ziemlich genau, wie wir es bei Stackoverflow verwenden.
Eine Anmerkung:Die Verbindung ist Thread-sicher und soll massiv geteilt werden; Stellen Sie keine Verbindung pro Operation her.