Điều đó hoàn toàn chính xác. "Get" (BookSleeve) trả về một byte[]
bị trì hoãn . Bạn đã sử dụng chính xác Wait để lấy byte[]
thực tế , sau đó sử dụng MemoryStream
qua byte[]
này để gọi Deserialize
qua protobuf-net.
Tất cả đều tốt.
Nếu bạn nói rõ bất kỳ bước nào mà bạn thấy xấu, tôi có thể nói cụ thể hơn, nhưng:
- BookSleeve hoàn toàn không đồng bộ qua
Task
, do đó cầnWait
hoặcContinueWith
để truy cậpbyte[]
- protobuf-net hoàn toàn dựa trên Luồng, do đó cần có
MemoryStream
để ngồi trên đầu của mộtbyte[]
Tất nhiên, nếu bạn thêm một phương thức tiện ích chung (có thể là một phương thức mở rộng), bạn chỉ cần viết nó một lần.
Và với việc bổ sung if một lớp wrapper (đối với một số theo dõi / trượt-hết hạn) và một bộ nhớ cache L1 (Redis as L2), đây là cách chúng tôi sử dụng nó khá chính xác ở stackoverflow.
Một lưu ý:kết nối là luồng an toàn và dự định sẽ được chia sẻ rộng rãi; không thực hiện kết nối cho mỗi hoạt động.