protobuf-net التواصل مع C ++
-
21-09-2019 - |
سؤال
أنا أبحث في 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 من البداية - أي اختبار هذا في وقت مبكر.