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 entwederWaiterforderlich oderContinueWithum auf dasbyte[]zuzugreifen - protobuf-net ist vollständig Stream-basiert, daher die Notwendigkeit für
MemoryStreamauf 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.