CoderTools

Công cụ Protocol Buffers

Mã hóa, giải mã và xác thực tin nhắn Protocol Buffers

Schema Proto

Schema Mẫu:

Đầ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

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

  1. Nhập định nghĩa schema .proto trong trình chỉnh sửa schema
  2. Nhấp 'Phân tích Schema' để xác thực và phân tích schema
  3. Chọn loại tin nhắn bạn muốn làm việc với
  4. Để mã hóa: Nhập dữ liệu JSON và nhấp 'Mã hóa'
  5. Để giải mã: Nhập dữ liệu nhị phân và nhấp 'Giải mã'
  6. 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ường
  • field: Mỗi trường có một loại, tên và số duy nhất
  • enum: Đị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, int64Số nguyên có dấu (mã hóa độ dài biến)0
uint32, uint64Số nguyên không dấu0
sint32, sint64Số nguyên có dấu với mã hóa ZigZag (hiệu quả cho số âm)0
fixed32, fixed64Số nguyên không dấu độ rộng cố định (4 hoặc 8 byte)0
sfixed32, sfixed64Số nguyên có dấu độ rộng cố định (4 hoặc 8 byte)0
float, doubleSố dấu phẩy động (32 hoặc 64 bit)0.0
boolGiá trị logic (true/false)false
stringChuỗi văn bản mã hóa UTF-8""
bytesDữ 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
0Varintint32, int64, uint32, uint64, sint32, sint64, bool, enum
164-bitfixed64, sfixed64, double
2Length-delimitedstring, bytes, embedded messages, packed repeated
532-bitfixed32, 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

Menu Nhanh

Chưa có công cụ gần đây