لغات البرمجة

مراجعة Protocol Buffers: تسلسل البيانات بكفاءة

لغة بروتوكول بافرز (Protocol Buffers) هي أسلوب لتسلسل البيانات المنظمة، وهي طريقة مفيدة في تطوير البرامج للتواصل مع بعضها البعض عبر الشبكة أو لتخزين البيانات. تتضمن هذه الطريقة لغة واجهة وصف تصف هيكل بعض البيانات وبرنامج يقوم بتوليد الشفرة المصدرية من تلك الوصف لإنشاء أو تحليل تدفق بايتات يمثل البيانات المنظمة. قامت شركة Google بتطوير لغة بروتوكول بافرز للاستخدام الداخلي وقدمت مولد شفرة لعدة لغات تحت ترخيص مفتوح المصدر. يركز أهداف تصميم لغة بروتوكول بافرز على البساطة والأداء، حيث تم تصميمها خصيصاً لتكون أصغر وأسرع من XML. تُستخدم بروتوكولات البافرز على نطاق واسع في Google لتخزين وتبادل جميع أنواع المعلومات المنظمة، كما تعتبر أساساً لنظام الاتصال البعيد (RPC) المخصص الذي يُستخدم لجميع عمليات التواصل بين الآلات في Google. تشبه بروتوكولات البافرز بروتوكولات Apache Thrift (المستخدمة من قبل Facebook) أو Microsoft Bond، وتقدم أيضاً تراكيب بروتوكول RPC محددة تُستخدم لخدمات معينة تسمى gRPC. يقوم مطور البرمجيات بتعريف هياكل البيانات (الرسائل) والخدمات في ملف تعريف بروتو (.proto) ويقوم بتجميعه باستخدام protoc. تنتج هذه العملية شفرة يمكن استدعاؤها بواسطة مرسل أو مستقبل لهذه الهياكل البيانات. على سبيل المثال، ستنتج example.proto ملفات example.pb.cc و example.pb.h، والتي ستعرف فصائل C++ لكل رسالة وخدمة يعرفها example.proto. تتم تسلسل الرسائل بشكل كانوني إلى تنسيق سلكي ثنائي الغاية يكون مُدمجاً ومتوافقاً في الاتجاهين، ولكن ليس ذاتي الوصف (أي ليس هناك وسيلة لمعرفة الأسماء أو المعاني أو الأنواع البيانات الكاملة للحقول بدون مواصفة خارجية). لا يوجد طريقة محددة لتضمين أو الإشارة إلى مثل هذه المواصفة الخارجية (المخطط) داخل ملفات بروتوكول بافرز. تتضمن التنفيذة المدعومة رسمياً تنسيق تسلسل ASCII، ولكن هذا التنسيق – على الرغم من كونه ذاتي الوصف – يفقد سلوك التوافق في الاتجاهين، وبالتالي ليس خياراً جيداً للتطبيقات باستثناء التصحيح. على الرغم من أن الغرض الرئيسي من بروتوكولات البافرز هو تسهيل الاتصالات عبر الشبكة، إلا أن بساطتها وسرعتها جعلتها بديلاً لفصائل وهياكل بيانات C++ المحورة نحو البيانات، خصوصاً حيث قد تكون القابلية للتشغيل مع لغات أو أنظمة أخرى مطلوبة في المستقبل.