Itu sepenuhnya benar. "Dapatkan" (BookSleeve) mengembalikan byte[] yang ditangguhkan . Anda telah menggunakan Wait dengan benar untuk mendapatkan byte[] yang sebenarnya , lalu gunakan MemoryStream di atas byte[] ini untuk memanggil Deserialize melalui protobuf-net.
Semuanya baik.
Jika Anda memperjelas langkah apa pun yang menurut Anda jelek, saya mungkin bisa lebih spesifik, tetapi:
- BookSleeve sepenuhnya asinkron melalui
Task, oleh karena itu diperlukanWaitatauContinueWithuntuk mengaksesbyte[] - protobuf-net sepenuhnya berbasis Stream, oleh karena itu diperlukan
MemoryStreamuntuk duduk di atasbyte[]
Tentu saja, jika Anda menambahkan metode utilitas umum (mungkin metode ekstensi), Anda hanya perlu menulisnya sekali.
Dan dengan tambahan if kelas pembungkus (untuk beberapa pelacakan/sliding-expiry) dan cache L1 (Redis sebagai L2), ini persis seperti yang kami gunakan di stackoverflow.
Satu catatan:koneksi aman dan dimaksudkan untuk dibagikan secara massal; jangan lakukan koneksi per operasi.