سؤال

أنا بناء وزعت C++ التطبيق الذي يحتاج إلى الكثير من التسلسل و إلغاء التسلسل بسيطة هياكل البيانات التي يتم تمريرها بين العمليات المختلفة وأجهزة الكمبيوتر.

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

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

لذا سؤالي يأتي الى هذا:لا أحد يعرف إذا كان دفعة التسلسل هو سريع الاستخدام النموذجي حالة وصفت أعلاه ؟

أيضا إذا كان هناك مكتبات أخرى التي قد تكون مناسبة هذا, سأكون سعيدا نسمع عنها.

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

المحلول

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

نصائح أخرى

ACE ACE تاو تتبادر إلى الذهن ، ولكن قد لا ترغب حجم ونطاق ذلك.http://www.cs.wustl.edu/~schmidt/ACE.html

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

هناك الرسائل طبقات يمكنك استخدامها ، ولكن تلك هي على الارجح أبطأ من زيادة.أنا أقول أنك حددت حل جيد في دفعة, ولكن لقد استخدمت ايس الملكية الأخرى الاتصالات/المنتجات الرسائل.

بلدي تخمين هو أن زيادة سريعة بما فيه الكفاية.لقد استخدمت في المشاريع السابقة إلى إجراء تسلسل البيانات من القرص, و أدائها أبدا حتى جاء المسألة.

بلدي الجواب هنا يتحدث عن التسلسل في العامة ، التي قد تكون مفيدة لك بعدها مكتبة التسلسل اخترت استخدام.

وقد قلت ذلك, يبدو أنك تعرف أكثر من أهم بؤر التوتر مع التسلسل (endianess سلسلة ترميز).أنت لم تترك الإصدارات وإلى الأمام/الخلف التوافق.إذا كان الوقت لا حرج أوصي الكتابة الخاصة بك رمز التسلسل.بل هو تجربة مفيدة و دروس تعلم لا تقدر بثمن.على الرغم من أنني سوف يحذرك وسوف تميل إلى جعل كنت أكره XML القائمة على بروتوكولات بهم بلواتيدنيس.:)

أيهما تختار الطريق حظا سعيدا مع المشروع الخاص بك.

وboost.serialization لا يهتمون ترميزات سلسلة أو endianness. فسوف يكون جيدا على نحو مماثل من عدم استخدامه إذا ما يهم بالنسبة لك.

وقد ترغب في النظر في ICE من ZeroC: http://www.zeroc.com/

ويعمل مماثلة لكوربا، إلا أنه هو specced تماما ومحددة من قبل الشركة. الاتجاه الصعودي هو أن تطبيقات تعمل على النحو المنشود، لأن هناك ليس كل ما كثيرين. الجانب السلبي هو أنه إذا كنت تستخدم اللغة التي لا تدعم، وكنت من الحظ.

إذا كنت فقط ارسال هياكل البيانات المحددة واضحة المعالم، وربما بعد ذلك يجب عليك أن تبحث في ASN 0.1 باعتبارها منهجية الترميز؟

وهناك أيضا التوفير ، الذي يبدو وكأنه مشروع ألفا ولكنها تستخدم وضعتها الفيسبوك ، لذلك لديها عدد قليل من المستخدمين من ذلك.

وأو حسن البالغ من العمر DCE ، الذي كان MS القياسية قرر استخدام لCOM. ه الآن مفتوح المصدر، 20 عاما في وقت متأخر جدا، ولكن أفضل من ألا تأتي أبدا.

ولا بصورة استباقية تحسين. قياس أولا وتحسين الثانية.

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