سؤال

أنا أبحث في Protobuf-Net لتنفيذ مختلف تنسيقات المراسلة ، وأنا أحب بشكل خاص النهج القائم على العقود لأنني لا أضطر إلى العبث مع برنامج التحويل البرمجي. شيء واحد لم أتمكن من العثور على معلومات حوله هو ، هل يجعل هذا من الصعب العمل عبر النظام الأساسي؟ هناك عدد قليل من تطبيقات C ++ التي يجب أن تكون قادرة على تحليل بيانات PB ، وبينما أفهم أن Protobuf-net يسلسلها إلى التنسيق القياسي لـ PB ، إذا استخدمت نهج العقد وليس ملف proto ، فكيف يتم تحليل جانب C ++ البيانات؟

هل يمكن (يجب؟) كتابة ملف proto منفصل للحالات (القليلة جدًا) التي يحتاج C ++ إلى فهم البيانات؟ وإذا كان الأمر كذلك ، فكيف أعرف بالضبط أن فئة C ++ التي تم إنشاؤها من ملف Proto ستطابق البيانات من جانب C# غير المبرمج؟

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

المحلول

نعم ، من الناحية النظرية على الأقل ، يجب أن تتطابق مع المستوى الثنائي ، ولكن قد ترغب في تقييد نفسك على الأنواع التي تعين ببساطة إلى ".proto" - لذا تجنب أشياء مثل DateTime, ، ميراث ([ProtoInclude]) ، إلخ. هذا أيضًا ميزة أنه يجب عليك استخدامها:

string proto = Serializer.GetProto<YourType>();

للحصول على .proto ؛ هو - هي (GetProto) ليس 100 ٪ ، ولكنه يعمل للأنواع الأساسية. ولكن في النهاية ، الجواب هو "الاختبار والتبديل" ؛ ربما تصميم ل interop من البداية - أي اختبار هذا في وقت مبكر.

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