Keamanan mengubah nomor bidang proto
Misalnya jika saya berubah dari:
message Request {
int foo = 1;
}
untuk
message Request {
int bar = 1;
int foo = 2;
}
Apakah aman untuk mengubah foo
dari 1 ke 2? Dokumen mengatakan untuk tidak :,These numbers are used to identify your fields in the message binary format, and should not be changed once your message type is in use.
tapi saya ingin tahu alasannya.
Jawaban
Jika Anda memiliki versi serial dari pesan yang dibuat dengan versi pertama, Anda tidak akan dapat melakukan deserialisasi dengan versi kedua dari pesan tersebut. Jika Anda menggunakan protobuf untuk membuat model untuk disimpan di DB atau dipublikasikan di broker seperti Apache Kafka, Anda harus mengikuti konvensi. Jika Anda menggunakan buffer proto untuk menghasilkan model dan layanan untuk penggunaan online, Anda tidak boleh merusak apa pun (jika Anda akan membuat ulang semua model)
Lihat juga kata kunci yang dipesan agar tidak menggunakan kembali angka lama. Bacaan lebih lanjut juga di sini