Protocol Buffers وملفات .proto
أنواع الرسائل والخدمات وتوليد الشيفرة باستخدام protoc
Protocol Buffers وملفات .proto درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
ما Protocol Buffers؟
Protocol Buffers (protobuf) هو تنسيق ثنائي لتسلسل البيانات ومحايد للغة، طوّرته Google. وهو أصغر وأسرع من JSON، كما أنه تنسيق النقل المعتمد لـ gRPC.
صياغة ملف .proto
عرّف الرسائل والخدمات في ملف .proto:
syntax = "proto3";
package user;
option go_package = "github.com/example/user/pb";
message User {
int64 id = 1;
string name = 2;
string email = 3;
}
service UserService {
rpc GetUser (GetUserRequest) returns (User);
}
message GetUserRequest { int64 id = 1; }أرقام الحقول
لكل حقل رقم فريد (وسم) يُستخدم في الترميز الثنائي. لا تغيّر أرقام الحقول الحالية مطلقًا بعد استخدام المخطط، لأن ذلك يكسر التوافق.
القيم الافتراضية في proto3
في proto3، تمتلك جميع الحقول قيمًا افتراضية (0 للأرقام، و"" للسلاسل النصية، وfalse للقيم المنطقية). لا يوجد تمييز بين required وoptional، إذ تأخذ الحقول المفقودة القيمة الافتراضية.
تثبيت protoc
ثبّت مترجم protobuf وإضافة Go:
brew install protobuf
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latestإنشاء شيفرة Go
شغّل protoc لإنشاء بنى Go وواجهات gRPC الوسيطة:
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
user/user.protoالأنواع المُنشأة
ينشئ protoc ما يلي: بنية Go لكل رسالة، ودوال getter، وواجهة خدمة، وبنية خادم غير منفّذة، وبنية عميل تتضمن جميع أساليب RPC.
الحقول المتكررة
استخدم repeated لتمثيل قائمة، وهي تُحوَّل إلى شريحة Go:
message ListUsersResponse {
repeated User users = 1;
}التعدادات
عرّف التعدادات في proto3. يجب أن تكون القيمة الأولى 0، لأنها القيمة الافتراضية:
enum Role {
ROLE_UNSPECIFIED = 0;
ROLE_USER = 1;
ROLE_ADMIN = 2;
}الأنواع المعروفة مسبقًا
توفر حزمة google/protobuf أنواعًا شائعة: Timestamp وDuration وStruct (شبيه بـ JSON) وAny. استوردها في ملف .proto.
import "google/protobuf/timestamp.proto";
message Event { google.protobuf.Timestamp created_at = 1; }قواعد التوافق مع الإصدارات السابقة
التغييرات الآمنة: إضافة حقول جديدة، وإضافة أنواع رسائل جديدة، وإضافة قيم تعداد جديدة. أما التغييرات غير الآمنة فتشمل تغيير أرقام الحقول، وتغيير أنواع الحقول، وإزالة الحقول (إذ تتحول بصمت إلى القيمة الافتراضية).
اختبار سريع
ما الذي يجب أن يكون صحيحًا بشأن أرقام الحقول في رسالة protobuf؟
مراجعة: Protocol Buffers
النقاط الأساسية:
- يعرّف .proto الرسائل (الحقول والأنواع) والخدمات (RPCs)
- أرقام الحقول دائمة — لا تعيدوا استخدامها أو تغيّروها أبدًا
- ينشئ protoc + go plugin هياكل Go وبدائل gRPC
- الحقول repeated ← شرائح؛ ويجب أن تبدأ enums بالقيمة 0
تعلم Go مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «Protocol Buffers وملفات .proto» مجاني؟
نعم — نص درس «Protocol Buffers وملفات .proto» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «Protocol Buffers وملفات .proto»؟
أنواع الرسائل والخدمات وتوليد الشيفرة باستخدام protoc تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «Protocol Buffers وملفات .proto»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Protocol Buffers وملفات .proto
- تنفيذ خدمة gRPC أحادية الاتجاه
- البث من الخادم والعميل
- معترضات gRPC والبيانات الوصفية