سؤال

محاولة الحصول على ذهني حول Google Protobuf. لقد وجدت بعض تطبيق Protobuf في C # ولكن يبدو أنها تفتقر إلى ميزة واحدة: القدرة على إنشاء ملفات .proto تلقائيا من فئة C # موجودة مزينة بالسمات.

السبب في أنني أريد أن أفعل ذلك بهذه الطريقة بدلا من الانتقال من فئات C # التي تم إنشاؤها تلقائيا من ملف .Proto لأن لدي بالفعل فصول C # المحددة في مشروعي ولا أريد تكرارها فقط لإرضاء Protobuf.

هل واجه أي شخص مثل هذا السيناريو؟


تحديث

هل هذا ممكن فقط تزيين فئة C # وعدم استخدام ملف .proto لاستخدام protobuf؟

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

المحلول

أخبار جيدة؛ ما وصفته (وجود فئات C # الموجودة) هي حالة الاستخدام المتوقعة من Protobuf-Net. تم إضافة جميع الاشياء. proto ("protogen"، الوظيفة الإضافية مقابل x، إلخ) جميعها بعد الظهر. وبعد جوهر Protobuf-Net لا يعرف عنهم أو يهتم بهم.

يحدد المخازن المؤقتة البروتوكول DSL (.PROTO، كما ذكر) التي تتم مشاركتها بين التطبيقات، وهي (أحيانا) تستخدم لتوليد التعليمات البرمجية. عندما كتبت أولا Protobuf-Net، لم يكن الجانب من جيل التعليمات البرمجية أكبر قلق لي - ببساطة أن مطوري .NET مذنبا عموما (مضمون بنفسي) من "التنفيذ أولا" بدلا من "العقد أولا".

نتيجة لذلك، Protobuf-Net لا يحتاج. ملفات proto للعمل؛ فئة نسبتها كافية لاستسلال / تحيزي بشكل لا لبس فيه. مجرد استخدام Serializer.Serialize , .Merge و .Deserialize (إلخ).

هكذا قال؛ هو - هي يفعل تشمل بعضا ضمن جدا المتقدمة والتجريبية دعم لهذا:

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

هذا بعيد عن إكمال، ولكن قد يعمل من أجل أنواع بسيطة. إذا كان لديك بعض الحالات المحددة التي يفشل فيها، فأخبرني (أضف تعليقا أو تسجيل مشكلة). لكن؛ معظم الوقت، والأشخاص المهتمين في. بروتو يكتب .proto أول والعمل من هناك.

وتظهر أمثلة على أنواع المصممة في العمل على الصفحة الرئيسية للمشروع; ؛ الأمر متروك لك تماما ما إذا كنت تستخدم سمات WCF أو سمات XML أو سمات صافية Protobuf (على الرغم من أن الأخير يوفر التحكم في بعض نقاط التسلسل المحددة، مثل الميراث والتخطيطات الرقمية).

نصائح أخرى

قبل skeet مارك يعمل هنا ويحصل على صعود ضخمة، واسمحوا لي أن أشير protobuf.net.

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