Tôi muốn đính kèm UUID vào một trường trong ví dụ thư của người dùng protobuf của tôi.Làm cách nào để trình bày UUID trong thông điệp protobuf?
message User {
// field containing id as UUID type
required string email;
optional string name;
}
Tôi biết rằng thư protobuf chưa hỗ trợ loại UUID. Tôi đã đọc rằng cách tiếp cận tốt nhất là có một loại thông điệp UUID.
Vì vậy, tôi đoán nhắn tài khoản của tôi sẽ nhập định nghĩa proto nhắn UUID của tôi và sử dụng nó như một loại lĩnh vực như sau:
import "myproject/UUID.proto";
message User {
required UUID id;
required string email;
optional string name;
}
Câu hỏi của tôi là, làm thế nào sẽ được thông báo UUID cái nhìn như thế nào, và làm thế nào Tôi sẽ mã hóa/giải mã nó? Tôi đang hướng tới khả năng tương thích Java/Scala và C#.
Cảm ơn Kenton, câu trả lời của bạn rõ ràng và hữu ích. Tôi nghĩ rằng tôi sẽ cố gắng và đi theo con đường của việc sử dụng byte để tin nhắn tiêu thụ chỉ là một chút ít băng thông. UUID có dạng «xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx', bạn có biết cách lấy giá trị thô 128 bit từ biểu mẫu này theo cách hiệu quả nhất có thể không? Hoặc bất kỳ tài nguyên trực tuyến nào có thể giúp tôi đi đúng hướng? –
Không bao giờ, lưu trữ UUID dưới dạng chuỗi khiến mọi thứ trở nên đau đớn hơn nhiều ... –
@Hyperreal: FWIW, để chuyển đổi thành byte, bạn sẽ xóa dấu gạch ngang và sau đó diễn giải phần còn lại dưới dạng chuỗi thập phân - mỗi hai chữ số trở thành byte . Nhưng yeah, có thể lưu trữ một chuỗi là dễ dàng hơn. –