توصية FOR C ++ Wrapper for Cross Platform Bindings Bindings Information Dynamic Library (أي كوم خفيف الوزن أو أداء عالي الأداء أو Corba) [مغلق

StackOverflow https://stackoverflow.com/questions/1854323

سؤال

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

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

أساسا نحن نبحث عن غلاف بسيط عبر منصة حولها:

  • تحميل مكتبة من المسار النسبي
  • تقديم تعيين من DLL / .so معينة إلى بعض التكوين / الاسم
  • قم ببعض التهيئة والاستعلام عن المكتبة للتأكد من أنها توفر الوظيفة اللازمة

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

مرة أخرى، الإنتاجية والأداء مهمة جدا جدا.

أسئلة مماثلة هي:

البديل عبر منصة - هذا واحد قريب، لكننا نريد في العملية فقط - لا حاجة للخروج من العملية واحتياجاتنا هي "وزن أخف وزنا".

C ++ منصة عبر المكتبات الديناميكية؛ لينكس ويندوز

هذا هو ل C ++ غير المدمن - لا يمكننا استخدام .NET

تحرير - ما وجدناه

لقد وجدنا أن بوكو يعمل بشكل رائع لاحتياجاتنا. كمكافأة هذه الصفحة هو تعليق تقدير كبير على حالة تطوير C ++ واتجاه اللغة ...

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

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

المحلول 2

أعتقد أن هذا قد يعمل أيضا:http://pocoproject.org/docs/poco.sharedlibrary.html.

نصائح أخرى

ال بارِع تحتوي المكتبة على مغلفة للمكتبة الديناميكية تحميل تلك المنصة عبر العمل. إذا كنت تريد المزيد من الراحة من LoadLibrary عادي، فابحث في تاو Ace orb. إن استخدام Corba with Tao هو أداء متطورا، وعلى الأرجح يتفوق على أي بنية تحتية مساعدية مصنوعة ذاتيا خاصة إذا كنت تستخدم مكالمات عملية، حيث تقوم تاو بتحسينها.

لاستخدام مكتبة Dynamic Cross Platform Wrapper الاستخدام ace_dll.. وبعد يوفر غلاف المنصة الأكثر أساسا حول LoadLibrary () الذي ذكرته.

بين استخدام ACE_DLL واستخدام تاو هو إطار تكوين الخدمة من Ace تسمح لك بتحميل الكائنات بشكل حيوي. بعد تحميل، يمكنك الحصول على مؤشر ثانوي إلى الكائن المحمل الذي قمت بتنفيذه ويمكنه الاتصال بأي طريقة على الكائن المحمل.

الرمز للقيام به الذي سيظهر مثل هذا:

char const * const cpc_myClass = ACE_DYNAMIC_SERVICE_DIRECTIVE(
  "myclass",
  "dllname",
  "_make_MyClass",
  ""
);
result = ACE_Service_Config::process_directive(cpc_myClass);
MyClass * p_obj = ACE_Dynamic_Service<MyClass>::instance ("myclass");
p_obj->callAnyMethodYouLike();

هنا وأوضح أن تاو يعرف نوعين من تحسين التوليد (thru_poa و مباشر):

عند استخدام الاستراتيجية المباشرة، تصبح عمليات الاستراتيجية الخاصة بالطريقة على الكائنات المذكورة مكالمات مباشرة إلى خادم دون التحقق من حالة POA.

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

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