حزمة الرسائل
MessagePack هو تنسيق لتبادل البيانات الحاسوبية . وهو صيغة ثنائية لتمثيل هياكل البيانات البسيطة مثل المصفوفات والمصفوفات الترابطية . يهدف MessagePack إلى أن يكون مضغوطًا وبسيطًا قدر الإمكان. يتوفر التطبيق الرسمي بلغات برمجة متنوعة مثل C و C++ و C# و D و Erlang و Go و Haskell و Java و JavaScript ( NodeJS ) و Lua و OCaml و Perl و PHP و Python و Ruby و Rust و Scala و Smalltalk و Swift . [ 1 ]
أنواع البيانات وبنية الجملة
تتشابه هياكل البيانات التي يعالجها MessagePack بشكل عام مع تلك المستخدمة في تنسيق JSON . وهي تتكون من أنواع العناصر التالية:
- لا شيء
- منطقي، قيمة منطقية (
trueوfalse) - int، عدد صحيح (حتى 64 بت، موقّع أو غير موقّع)
- float، أرقام الفاصلة العائمة (IEEE أحادية/مزدوجة الدقة)
- str، سلسلة UTF-8
- bin، بيانات ثنائية (حتى 232 - 1 بايت)
- مصفوفة
- الخريطة، وهي مصفوفة ترابطية
- ext (بيانات عشوائية بتنسيق محدد من قبل التطبيق، تصل إلى 232 - 1 بايت)
- الطابع الزمني (نوع الامتداد = -1) (حتى 64 بت ثانية و32 بت نانوثانية)
مقارنة بالصيغ الأخرى
يُعدّ MessagePack أكثر إيجازًا من JSON ، ولكنه يفرض قيودًا على أحجام المصفوفات والأعداد الصحيحة. في المقابل، يسمح MessagePack بالبيانات الثنائية والسلاسل النصية غير المتوافقة مع ترميز UTF-8. في JSON، يجب أن تكون مفاتيح الخرائط سلاسل نصية، بينما لا يفرض MessagePack هذا القيد، ويمكن لأي نوع أن يكون مفتاح خريطة، بما في ذلك أنواع مثل الخرائط والمصفوفات، والأرقام مثل YAML .
بالمقارنة مع BSON ، يُعدّ MessagePack أكثر كفاءة في استخدام المساحة. صُمّم BSON لمعالجة البيانات بسرعة داخل الذاكرة، بينما صُمّم MessagePack لنقل البيانات بكفاءة عبر الشبكة. على سبيل المثال، يتطلب BSON وجود مُنهيات فارغة في نهاية جميع السلاسل النصية، ويُدرج فهارس السلاسل النصية لعناصر القوائم، بينما لا يتطلب MessagePack ذلك. يُمثّل BSON كلاً من المصفوفات والخرائط داخليًا كمستندات، وهي عبارة عن خرائط، حيث تكون المصفوفة خريطة بمفاتيح عبارة عن سلاسل نصية عشرية تبدأ من الصفر. أما MessagePack، فيُمثّل كلاً من الخرائط والمصفوفات كمصفوفات، حيث يكون كل زوج من مفتاح-قيمة في الخريطة متجاورًا، مما يجعل العناصر الفردية مفاتيح والعناصر الزوجية قيمًا.
يُوفر تنسيق بروتوكول بافرز طريقة نقل بيانات أكثر اختصارًا من تنسيق مسج باك، لأنه لا ينقل أسماء الحقول. مع ذلك، فبينما يهدف كل من JSON ومسج باك إلى تسلسل هياكل البيانات المختلفة باستخدام علامات النوع، يتطلب بروتوكول بافرز مخططًا لتحديد أنواع البيانات. يُنشئ مُصرّف بروتوكول بافرز شيفرة نمطية في لغة البرمجة المستهدفة لتسهيل دمج التسلسل في شيفرة التطبيق؛ بينما يُعيد مسج باك بنية بيانات ذات أنواع ديناميكية فقط ، ولا يُوفر أي فحوصات تلقائية للبنية.
انظر أيضاً
مراجع
روابط خارجية
- تنسيقات تسلسل البيانات
