Công cụ Protocol Buffers
Mã hóa, giải mã và xác thực tin nhắn Protocol Buffers
Schema Proto
Thông tin Schema
Đầu vào
Phân tích schema và chọn loại tin nhắn để tạo các trường biểu mẫu
Đầu ra
Trường Thô
| Trường # | Loại Wire | Giá trị |
|---|
Tài liệu Protocol Buffers
Protocol Buffers là gì?
Protocol Buffers (Protobuf) là cơ chế mở rộng độc lập ngôn ngữ, độc lập nền tảng để tuần tự hóa dữ liệu có cấu trúc, được phát triển bởi Google. Nó nhỏ hơn, nhanh hơn và đơn giản hơn XML và JSON cho tuần tự hóa dữ liệu.
Tính năng Chính
- Độc lập ngôn ngữ và độc lập nền tảng
- Nhỏ hơn và nhanh hơn XML/JSON
- Kiểu mạnh với định nghĩa schema
- Tương thích ngược và tương thích tiến
- Tự động tạo mã
- Mã hóa nhị phân hiệu quả
Cách Sử dụng Công cụ này
- Nhập định nghĩa schema .proto trong trình chỉnh sửa schema
- Nhấp 'Phân tích Schema' để xác thực và phân tích schema
- Chọn loại tin nhắn bạn muốn làm việc với
- Để mã hóa: Nhập dữ liệu JSON và nhấp 'Mã hóa'
- Để giải mã: Nhập dữ liệu nhị phân và nhấp 'Giải mã'
- Sử dụng Giải mã Thô để phân tích dữ liệu nhị phân không có schema
Tính năng Công cụ
Mã hóa
Chuyển đổi dữ liệu JSON sang định dạng nhị phân Protocol Buffers. Hỗ trợ đầu vào dựa trên biểu mẫu để nhập dữ liệu dễ dàng với xác thực kiểu.
Giải mã
Chuyển đổi dữ liệu nhị phân Protocol Buffers trở lại định dạng JSON dễ đọc. Hỗ trợ các định dạng đầu vào Base64, Hex và hex kiểu C.
Giải mã Thô
Phân tích dữ liệu nhị phân protobuf mà không cần schema. Hữu ích cho gỡ lỗi, kỹ nghệ ngược hoặc phân tích các tin nhắn không xác định.
Đầu vào Biểu mẫu
Giao diện biểu mẫu thân thiện tạo các biểu mẫu đầu vào dựa trên schema của bạn. Hỗ trợ tin nhắn lồng nhau, enum và các trường lặp lại.
Tham khảo Cú pháp Proto
Protocol Buffers sử dụng cú pháp đơn giản để định nghĩa các loại tin nhắn:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
}
syntax: Chỉ định phiên bản protobuf (proto2 hoặc proto3)message: Định nghĩa loại tin nhắn với các trườngfield: Mỗi trường có một loại, tên và số duy nhấtenum: Định nghĩa các loại liệt kêrepeated: Đánh dấu trường là lặp lại (mảng/danh sách)optional: Đánh dấu trường là tùy chọn (proto3)
Các Loại Vô hướng
Protocol Buffers hỗ trợ nhiều loại vô hướng:
| Loại | Mô tả | Mặc định |
|---|---|---|
| int32, int64 | Số nguyên có dấu (mã hóa độ dài biến) | 0 |
| uint32, uint64 | Số nguyên không dấu | 0 |
| sint32, sint64 | Số nguyên có dấu với mã hóa ZigZag (hiệu quả cho số âm) | 0 |
| fixed32, fixed64 | Số nguyên không dấu độ rộng cố định (4 hoặc 8 byte) | 0 |
| sfixed32, sfixed64 | Số nguyên có dấu độ rộng cố định (4 hoặc 8 byte) | 0 |
| float, double | Số dấu phẩy động (32 hoặc 64 bit) | 0.0 |
| bool | Giá trị logic (true/false) | false |
| string | Chuỗi văn bản mã hóa UTF-8 | "" |
| bytes | Dữ liệu nhị phân tùy ý | empty |
Các Loại Wire
Protobuf sử dụng các loại wire để xác định cách đọc giá trị từ dữ liệu nhị phân:
| Loại Wire | Ý nghĩa | Dùng cho |
|---|---|---|
| 0 | Varint | int32, int64, uint32, uint64, sint32, sint64, bool, enum |
| 1 | 64-bit | fixed64, sfixed64, double |
| 2 | Length-delimited | string, bytes, embedded messages, packed repeated |
| 5 | 32-bit | fixed32, sfixed32, float |
Thực hành Tốt nhất
- Sử dụng cú pháp proto3 cho các dự án mới - nó đơn giản hơn và được hỗ trợ rộng rãi hơn
- Giữ số trường ổn định - không bao giờ sử dụng lại hoặc thay đổi số cho các trường hiện có
- Sử dụng tên trường có ý nghĩa mô tả rõ ràng dữ liệu
- Dành số trường 1-15 cho các trường thường dùng (chúng sử dụng 1 byte)
- Sử dụng từ khóa 'repeated' cho mảng/danh sách giá trị
- Định nghĩa enum cho các trường có tập hợp giá trị cố định
Câu hỏi thường gặp
Protocol Buffers (Protobuf) là gì?
Protocol Buffers là một cơ chế mở rộng, trung lập về ngôn ngữ và nền tảng để tuần tự hóa dữ liệu có cấu trúc. Nó giống như JSON, nhưng nhỏ hơn, nhanh hơn và tạo ra các liên kết ngôn ngữ gốc. Nó được sử dụng rộng rãi trong các vi dịch vụ gRPC.
Làm thế nào để sử dụng công cụ Protobuf trực tuyến này?
Đầu tiên, dán định nghĩa lược đồ `.proto` của bạn vào trình chỉnh sửa (hoặc tải mẫu). Nhấp vào 'Phân tích lược đồ' và chọn loại thông điệp. Sau đó, chuyển đổi giữa các chế độ 'Mã hóa' (JSON → Nhị phân) và 'Giải mã' (Nhị phân → JSON) để xử lý dữ liệu của bạn.
'Giải mã thô' (Raw Decode) là gì?
Giải mã thô cho phép bạn kiểm tra thông điệp Protobuf nhị phân ngay cả khi không có tệp `.proto`. Nó phân tích cấu trúc nhị phân và hiển thị Số trường, Loại dây và Giá trị, rất hữu ích cho việc gỡ lỗi hoặc thiết kế ngược các gói tin không xác định.
Dữ liệu của tôi có an toàn không?
Có. Công cụ này chạy 100% trong trình duyệt của bạn bằng JavaScript (protobuf.js). Lược đồ, dữ liệu JSON và dữ liệu nhị phân của bạn không bao giờ được gửi đến máy chủ của chúng tôi, đảm bảo thông tin nhạy cảm của bạn được bảo mật.
Các Trường hợp Sử dụng Phổ biến
- Giao tiếp giữa các dịch vụ trong microservices (gRPC)
- Lưu trữ dữ liệu và bộ nhớ đệm
- Tệp cấu hình
- Giao thức mạng và API
Tài liệu Tham khảo
Công Cụ Liên Quan
Trình Định Dạng JSON
Định dạng và xác thực dữ liệu JSON để cải thiện khả năng đọc và gỡ lỗi
Trình Tạo Schema Sang SQL DDL
Chuyển đổi dữ liệu CSV/JSON thành câu lệnh CREATE TABLE SQL DDL với hỗ trợ MySQL, PostgreSQL và suy luận kiểu dữ liệu tự động
Chuyển Đổi JSON YAML
Chuyển đổi giữa định dạng JSON và YAML với thụt lề tùy chỉnh và hỗ trợ kiểu flow/block
Bộ Mã Hóa/Giải Mã Base64
Mã hóa và giải mã chuỗi Base64 nhanh chóng, hỗ trợ chuyển đổi cả văn bản và tệp
Trình Định Dạng XML
Định dạng và xác thực dữ liệu XML với làm nổi bật cú pháp
Chuyển Đổi Cơ Số
Chuyển đổi giữa hệ nhị phân, bát phân, thập phân và thập lục phân với hỗ trợ cơ số tùy chỉnh (2-36)