هل تم إنشاء Protobuf-net ثنائيًا متوافقًا مع مواصفات Google
-
25-09-2019 - |
سؤال
في الواقع ، أرغب في إجراء تسلسل لبيبياتي باستخدام تنفيذ جافا من Google ثم تخلص من استخدام C#؟
لقد اخترت Protobuf-Net لأنه يبدو أنه أكثر استقرارًا (لا يزال Proto# v0.9 أو كنت سأذهب إليه). قبل أن أبدأ العمل على ذلك ، أردت أن أتأكد من أنه يمكنني تحقيق ذلك (تسلسل البيانات باستخدام تنفيذ Java وإهانةها باستخدام Protobuf-Net). أم أن هناك أي قائمة بالطرق الخاصة بتنفيذ Protobuf-Net؟
المحلول
إذا كنت تريد نفس واجهة برمجة التطبيقات على منصات متعددة ، تنفيذ جون سكيت قد يكون أكثر ملاءمة لك. الفرق هو أن Protobuf-Net مصمم حول أنماط تطوير C# Common DataContractSerializer
, XmlSerializer
, ، إلخ) - ويدعم بعض مفاهيم BCL مباشرة.
يجب أن يكون الاثنان متوافقين بنسبة 100 ٪ على السلك ، ولكن هنا بعض API اختلافات:
- الدعم المباشر ل
DateTime
,TimeSpan
,Guid
الخ (الموصوفة في العقود في bcl.proto في الرمز البريدي) - دعم الميراث (تم تعيينه كبيانات متداخلة على السلك)
- دعم الأنواع الخاصة بك
- الدعم ل متقلب الأنواع (بدلاً من باني/زوج غير قابل للتغيير)
- دعم عروض التراجعات التسلسلية
- (ربما عدد قليل من الآخرين - هل تحتاج إلى قائمة كاملة بنسبة 100 ٪؟)
الشخص الذي من المرجح أن تلاحظه هو الميراث. ببساطة: لا تستخدم هذا إذا كنت تخطط لاستخدام interop. لقد حاولت أن تجعل الأمر واضحًا للغاية في The Intellisense إذا كنت تفعل شيئًا سيستخدم. NET محددًا ، ولكن إذا بدأت من a .proto ، فلن يستخدم هذه على أي حال (يجب أن تكون صديقة للحمور).
نصائح أخرى
جميع التسلسلات في Google متوافقة مع الأسلاك ، وعلى الرغم من أن Protobuf-Net لم يكتب بواسطة Google ، فإنه يدعي أنه متوافق مع الأسلاك.
بالإضافة إلى ذلك ، هناك صفحة من واجهات برمجة التطبيقات C# متوافقة مرتبطة من وثائق Google.