سؤال

هل توجد أي مكتبات تسلسل C++ جيدة موجودة تدعم التسلسل الجزئي؟

أعني بـ "التسلسل الجزئي" أنني قد أرغب في حفظ قيم 3 أعضاء محددين، وسأتمكن لاحقًا من تطبيق تلك النسخة المحفوظة على مثيل مختلف.سأقوم فقط بتحديث هؤلاء الأعضاء الثلاثة وترك الآخرين على حالهم.

قد يكون هذا مفيدًا لمزامنة البيانات عبر الشبكة.لنفترض أن لدي كائنًا ما على العميل والخادم، وعندما يتغير أحد الأعضاء على الخادم، أريد أن أرسل للعميل رسالة تحتوي على القيمة المحدثة لهذا العضو وهذا العضو فقط.لا أريد إرسال نسخة من الكائن بأكمله عبر السلك.

boost::serialization في لمحة يبدو أنه يدعم فقط كل شيء أو لا شيء.

يحرر:بعد 3 سنوات من كتابة هذا في الأصل ، أنظر إلى الوراء وأقول لنفسي ، "Wut؟" Boost :: يتيح لك Serialization تحديد الأعضاء الذين تريد حفظه أم لا ، لذلك سيدعم "التسلسل الجزئي" كما يبدو أنني وصفته.علاوة على ذلك، نظرًا لأن C++ تفتقر إلى مكتبات تسلسل الانعكاس، فإنها تتطلب منك تحديد كل عضو تقوم بحفظه بشكل صريح على أي حال ما لم تكن تأتي مع نوع من الأدوات الخارجية لتحليل الملفات المصدر أو لديها تنسيق ملف إدخال منفصل يُستخدم لإنشاء كود C++ (على سبيل المثال.ما الذي تفعله مخازن البروتوكول المؤقتة).أعتقد أنني كنت مرتبكًا من الناحية المفاهيمية عندما كتبت هذا.

هل كانت مفيدة؟

المحلول

من الواضح أنك لا تبحث عن التسلسل هنا.

التسلسل يدور حول حفظ كائن ثم إعادة إنشائه من تدفق البايتات.فكر في عمليات حفظ ألعاب الفيديو أو سياق الجلسة لخادم الويب.

هنا ما تحتاجه هو المراسلة. Google FlatBuffers جميل لذلك.حدد رسالة تحتوي على كل حقل كخيار اختياري، وعند استلام الرسالة، قم بتحديث الكائن الخاص بك بالحقول الموجودة واترك الحقول الأخرى دون تغيير.

إن الشيء العظيم في FlatBuffers هو أنه يتعامل مع التوافق الأمامي والخلفي بشكل جيد، بالإضافة إلى تشفير النص والثنائي (النص رائع لتصحيح الأخطاء والثنائي أفضل للأداء النقي)، بالإضافة إلى خطوة التحليل بدون تكلفة.

ويمكنك أيضًا فك تشفير الرسائل بلغة أخرى (على سبيل المثال python أو Ruby) إذا قمت بحفظها في مكان ما وتريد تجميع واجهة المستخدم الرسومية html لفحصها!

نصائح أخرى

على الرغم من أنني لست على دراية بهم، يمكنك أيضًا التحقق من ذلك مخازن بروتوكول جوجل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top