Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah `mustEmbedUnimplemented*` dalam gRPC-go Memastikan Keserasian Hadapan untuk Pelaksanaan Pelayan?

Bagaimanakah `mustEmbedUnimplemented*` dalam gRPC-go Memastikan Keserasian Hadapan untuk Pelaksanaan Pelayan?

DDD
Lepaskan: 2024-11-29 12:40:11
asal
979 orang telah melayarinya

How Does `mustEmbedUnimplemented*` in gRPC-go Ensure Forward Compatibility for Server Implementations?

MustEmbedUnimplemented* Kaedah dalam gRPC untuk Keserasian Hadapan

grpc-go baru-baru ini memperkenalkan mustEmbedUnimplemented* keserasian ke hadapan dalam pelaksanaan pelayan. Sebelum ini, pelaksanaan pelayan boleh mendaftarkan perkhidmatan tanpa melaksanakan semua kaedah yang ditakrifkan dalam definisi proto. Ini membawa kepada kes di mana kaedah baharu ditambahkan pada proto akan mengakibatkan ralat masa kompilasi kerana pelaksanaan yang tiada dalam pelayan.

Dengan kaedah mustEmbedUnimplemented

*:

  • Keserasian ke hadapan: Pelaksanaan pelayan kini mesti membenamkan Tidak dilaksanakan*ServiceServer, membenarkan penambahan kaedah baharu tanpa ralat masa penyusunan. Walau bagaimanapun, sebarang percubaan untuk memanggil kaedah yang tidak dilaksanakan akan mengakibatkan ralat masa jalan dengan kod.Tidak dilaksanakan.
  • Tarik diri: Pembangun boleh menarik diri daripada keserasian ke hadapan dengan membenamkan Tidak Selamat*ServiceServer sebaliknya. Ini akan mengelakkan ralat masa jalan tetapi mengekalkan ralat masa kompilasi dalam kes kaedah yang tidak dilaksanakan.
Contohnya:

// Implements gRPC FooBarServiceServer
type FooBarService struct {
    grpc.UnsafeFooBarServiceServer // Opt out of forward compatibility
    // other fields
}
Salin selepas log masuk
Untuk melumpuhkan keserasian ke hadapan dalam penjanaan kod:

protoc --go-grpc_out=require_unimplemented_servers=false:.
Salin selepas log masuk
Kaedah mustEmbedUnimplemented

* memastikan pelayan itu pelaksanaan sentiasa dikemas kini dengan definisi proto terkini, menghalang kemungkinan ketidakkonsistenan. Ia menyediakan cara yang anggun untuk menambah kaedah baharu tanpa memecahkan kod sedia ada sambil mengekalkan keserasian ke belakang.

Atas ialah kandungan terperinci Bagaimanakah `mustEmbedUnimplemented*` dalam gRPC-go Memastikan Keserasian Hadapan untuk Pelaksanaan Pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan