Saya ingin menggunakan gRPC dengan .NET core 3 dalam aplikasi web inti asp.net. Bagaimana cara menghasilkan file .proto yang diperlukan dari objek kelas C # dan model yang ada? Saya tidak ingin menulis ulang file .proto yang mencerminkan kode yang ada, saya ingin file .proto dihasilkan secara otomatis dari objek kelas dan model.
Saya memanggil metode ini untuk mendaftarkan kelas layanan saya.
builder.MapGrpcService<MyGrpcService>();
public class MyGrpcService
{
public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
{
return Task.FromResult("It Worked");
}
}
ModelObject
memiliki [DataContract]
dan [DataMember]
dengan atribut pesanan.
Apakah ini mungkin? Setiap contoh yang saya lihat online dimulai dengan .proto
file. Saya sudah mendefinisikan metode layanan yang saya inginkan di MyGrpcService
kelas. Tapi mungkin ini hanya mundur ke apa cara standar dalam melakukan sesuatu ...
Sesuatu seperti remoting NET lama. Akan ideal di mana Anda hanya bisa meminta antarmuka dari titik akhir jarak jauh dan secara ajaib digunakan gRPC
untuk berkomunikasi bolak-balik, tapi mungkin itu tampilan yang terlalu sederhana.
sumber
Jawaban:
Anda dapat menggunakan Marc Gravell's
protobuf-net.Grpc
untuk ini. Memiliki pengalaman kode-pertama ketika membangun layanan gRPC adalah kasus penggunaan yang tepat mengapa ia mulai bekerja di sana. Itu dibangun di atasprotobuf-net
yang sudah menambahkan kemampuan serialisasi antara tipe C # dan protobuf.Lihatlah dokumentasi untuk melihat bagaimana memulai menggunakan perpustakaan, atau bahkan menonton Marc mempresentasikan topik ini di salah satu rekaman ceramahnya berikut ini "Berbicara Antara Layanan dengan gRPC dan Trik Lain":
Saya pikir dia benar-benar memperbarui yang pada bulan September untuk bit rilis. NET Core 3.0, sehingga mungkin akan menjadi versi yang lebih diperbarui.
Ada juga beberapa contoh kode untuk melihat bagaimana ini terlihat ketika Anda mengaturnya.
sumber