سؤال

أبحث عن اقتراحات بشأن آليات التصنيف الدولي للبراءات المحتملة وهي:

  • منصة متقاطعة (Win32 وLinux على الأقل)
  • سهلة التنفيذ في سي ++ وكذلك لغات البرمجة النصية الأكثر شيوعًا (بيرل، روبي، بيثون، الخ).
  • أخيراً، سهلة الاستخدام من وجهة نظر البرمجة!

ما هي خياراتي؟أنا أبرمج على نظام Linux، لكني أرغب في أن يكون ما أكتبه قابلاً للنقل إلى أنظمة تشغيل أخرى في المستقبل.لقد فكرت في استخدام المقابس أو الأنابيب المسماة أو شيء مثل DBus.

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

المحلول

من حيث السرعة، ستكون الأنابيب هي أفضل آلية IPC عبر الأنظمة الأساسية.ومع ذلك، يفترض هذا أنك تريد IPC عبر الأنظمة الأساسية على نفس الجهاز.إذا كنت تريد أن تكون قادرًا على التحدث إلى العمليات الموجودة على الأجهزة البعيدة، فستحتاج إلى استخدام المقابس بدلاً من ذلك.لحسن الحظ، إذا كنت تتحدث عن TCP على الأقل، فإن المقابس والأنابيب تتصرف بنفس السلوك تقريبًا.على الرغم من اختلاف واجهات برمجة التطبيقات لإعدادها وربطها، إلا أن كلاهما يعمل كتدفقات من البيانات.

لكن الجزء الصعب ليس قناة الاتصال، بل الرسائل التي تمر عبرها.أنت تريد حقًا إلقاء نظرة على شيء من شأنه إجراء التحقق والتحليل لك.أوصي بالنظر إلى Google مخازن البروتوكول.تقوم بشكل أساسي بإنشاء ملف مواصفات يصف الكائن الذي تريد تمريره بين العمليات، ويوجد مترجم يقوم بإنشاء تعليمات برمجية بعدد من اللغات المختلفة لقراءة وكتابة الكائنات التي تطابق المواصفات.إنه أسهل بكثير (وأقل عرضة للأخطاء) من محاولة التوصل إلى بروتوكول مراسلة وتحليل نفسك.

نصائح أخرى

بالنسبة لـ C++، تحقق من ذلك تعزيز IPC.
ربما يمكنك إنشاء أو العثور على بعض الارتباطات للغات البرمجة النصية أيضًا.

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

لماذا لا D-حافلة؟إنه نظام بسيط للغاية لتمرير الرسائل ويعمل على جميع الأنظمة الأساسية تقريبًا وهو مصمم لضمان المتانة.إنها مدعومة تقريبًا بكل لغات البرمجة النصية في هذه المرحلة.

http://freedesktop.org/wiki/Software/dbus

قد ترغب في المحاولة يامي ، إنه بسيط جدًا ولكنه عملي ومحمول ويأتي مع ربط بعدد قليل من اللغات

إذا كنت تريد جهازًا محمولاً وسهل الاستخدام ومتعدد اللغات LGPLالحل إد، وأود أن أوصي لك ZeroMQ:

  • سريع بشكل مثير للدهشة، وقابل للتطوير خطي تقريبًا ولا يزال بسيطًا.
  • مناسبة للأنظمة/المعماريات البسيطة والمعقدة.
  • أنماط اتصال قوية جدًا متاحة:REP-REP، PUSH-PULL، PUB-SUB، PAIR-PAIR.
  • يمكنك تكوين بروتوكول النقل لجعله أكثر كفاءة إذا كنت تقوم بتمرير الرسائل بين سلاسل الرسائل (inproc://)، العمليات (ipc://) أو الآلات ({tcp|pgm|epgm}://)، مع خيار ذكي لتقليص جزء من النفقات العامة للبروتوكول في حالة تشغيل الاتصالات بين أجهزة VMware الافتراضية (vmci://).

للتسلسل أود أن أقترح حزمة الرسائل أو مخازن البروتوكول المؤقتة (التي ذكرها الآخرون أيضًا)، حسب احتياجاتك.

ماذا عن التوفير في الفيسبوك?

Thrift هو إطار عمل برمجي لتطوير خدمات متعددة اللغات قابلة للتطوير.فهو يجمع بين مجموعة البرامج ومحرك إنشاء التعليمات البرمجية لإنشاء خدمات تعمل بكفاءة وسلاسة بين C++ وJava وPython وPHP وRuby وErlang وPerl وHaskell وC# وCocoa وSmalltalk وOCaml.

أعتقد أنك تريد شيئًا يعتمد على المقابس.

إذا كنت تريد RPC بدلاً من IPC فقط، فأنا أقترح شيئًا مثل XML-RPC/SOAP الذي يعمل عبر HTTP، ويمكن استخدامه من أي لغة.

YAMI - بنية تحتية أخرى للمراسلة هو إطار عمل للرسائل والشبكات خفيف الوزن.

إذا كنت على استعداد لتجربة شيء مختلف قليلاً، فإليك الخيار جليد منصة من صفر سي.إنه مفتوح المصدر، وهو مدعوم تقريبًا على كل نظام تشغيل يمكنك التفكير فيه، بالإضافة إلى دعم اللغة لـ C++، وC#، وJava، وRuby، وPython، وPHP.وأخيرًا، من السهل جدًا القيادة (تم تصميم تعيينات اللغة لتناسب كل لغة بشكل طبيعي).كما أنها سريعة وفعالة.حتى أن هناك نسخة مختصرة للأجهزة.

يمكنني أن أقترح عليك استخدام بليبسيس مكتبة ج.إنها بسيطة للغاية وخفيفة الوزن ومتعددة المنصات.صدر تحت LGPL.أنه يوفر:

  • مناطق الذاكرة المشتركة المسماة على مستوى النظام (تطبيقات النظام V وPOSIX وWindows)؛
  • إشارات مسماة على مستوى النظام لمزامنة الوصول (تطبيقات النظام V وPOSIX وWindows)؛
  • تنفيذ المخزن المؤقت المشترك على مستوى النظام بناءً على الذاكرة المشتركة والإشارة؛
  • مآخذ التوصيل (TCP، UDP، SCTP) مع دعم IPv4 وIPv6 (تطبيقات UNIX وWindows).

من السهل استخدام المكتبة مع وثائق جيدة جدًا.كما هو مكتوب بلغة C، يمكنك بسهولة عمل روابط من لغات البرمجة النصية.

إذا كنت بحاجة إلى تمرير مجموعات كبيرة من البيانات بين العمليات (خاصة إذا كانت السرعة ضرورية) فمن الأفضل استخدام الذاكرة المشتركة لتمرير البيانات نفسها والمآخذ لإعلام العملية بأن البيانات جاهزة.يمكنك جعلها على النحو التالي:

  • تضع العملية البيانات في مقطع ذاكرة مشترك وترسل إشعارًا عبر مأخذ توصيل إلى عملية أخرى؛نظرًا لأن الإشعار عادةً ما يكون صغيرًا جدًا، فإن الوقت الإضافي يكون في حده الأدنى؛
  • عملية أخرى تتلقى الإخطار وتقرأ البيانات من قطاع الذاكرة المشتركة؛وبعد ذلك يرسل إشعارًا بأن البيانات قد تمت قراءتها مرة أخرى إلى العملية الأولى حتى يتمكن من تغذية المزيد من البيانات.

يمكن تنفيذ هذا النهج بطريقة عبر الأنظمة الأساسية.

عادة ما تكون الحوسبة الموزعة معقدة وننصحك باستخدام المكتبات أو الأطر الموجودة بدلاً من إعادة اختراع العجلة.لقد قام الملصق السابق بالفعل بتعداد اثنين من هذه المكتبات والأطر.اعتمادًا على احتياجاتك، يمكنك اختيار إما مستوى منخفض جدًا (مثل المقابس) أو إطار عمل عالي المستوى (مثل CORBA).لا يمكن أن تكون هناك إجابة عامة "استخدم هذا".أنت بحاجة إلى تثقيف نفسك حول البرمجة الموزعة ومن ثم ستجد أنه من الأسهل بكثير اختيار المكتبة أو إطار العمل المناسب للمهمة.

يوجد إطار عمل C++ مستخدم على نطاق واسع للحوسبة الموزعة يسمى ACE وCORBA ORB TAO (الذي تم بناؤه على ACE).توجد كتب جيدة جدًا عن ACE http://www.cs.wustl.edu/~schmidt/ACE/ لذلك قد نلقي نظرة.يعتني!

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

الدفع هذا درس تعليمي.

مآخذ TCP إلى المضيف المحلي FTW.

لدى Python مكتبة IPC جيدة جدًا:يرى https://docs.python.org/2/library/ipc.html

يتمتع Xojo بدعم IPC مدمج عبر الأنظمة الأساسية فئة IPCSocket.على الرغم من أنه من الواضح أنك لا تستطيع "تنفيذ" ذلك بلغات أخرى، إلا أنه يمكنك استخدامه في تطبيق وحدة تحكم Xojo واستدعائه من لغات أخرى مما يجعل هذا الخيار ربما بسيطًا جدًا بالنسبة لك.

تعد Google protobufs فكرة سيئة حقًا لأنك تريد سهولة صيانة وتصحيح التعليمات البرمجية.من السهل جدًا على الأشخاص إساءة استخدامه واستخدامه لتلويث التعليمات البرمجية الخاصة بك.ملفات proto جميلة، ولكنها في الأساس نفس الشيء مثل ملف رأس البنية، والتعليمة البرمجية التي تولدها هي حماقة كاملة مما يجعلك تتساءل عما إذا كانت حقًا أداة هجوم سرية لتخريب مشاريع البرامج بدلاً من أتمتتها.بعد استخدامه لفترة من الوقت، يكاد يكون من المستحيل إزالته من الكود الخاص بك.من الأفضل لك فقط استخدام ملف رأس لهياكل تنسيق الإصلاح التي يمكن تصحيحها بسهولة.

إذا كنت حقًا بحاجة إلى الضغط، فانتقل إلى تعيين العنوان/البيانات لهياكل حفظ الملفات عن بُعد...إذن الحزم هي مجرد حزمة من أزواج العناوين/البيانات...وأيضًا بنية من السهل جدًا تشغيلها تلقائيًا باستخدام نصوص Perl الخاصة بك والتي تنتج تعليمات برمجية يمكن قراءتها وتصحيح الأخطاء بواسطة الإنسان

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