اقتراحات إضافة البرنامج المساعد القدرة ؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

هل هناك إجراءات عامة عن البرمجة التمدد القدرة في الكود ؟

وأنا أتساءل ما الإجراءات العامة إضافة امتداد من نوع قدرة نظام الكتابة بحيث وظائف يمكن تمديدها من خلال بعض النوع من البرنامج المساعد API بدلا من الحاجة إلى تعديل التعليمات البرمجية الأساسية للنظام.

هل مثل هذه الأمور تميل إلى أن تكون تعتمد على لغة النظام كان مكتوب في أم هناك طريقة عامة يسمح هذا ؟

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

المحلول

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

على سبيل المثال إذا كان لديك برنامج مكتوب بلغة C, ويندوز, الإضافات سوف تكون مكتوبة للبرنامج كما دلس.في وقت التشغيل ، يمكنك يدويا تحميل هذه DLLs وفضح بعض واجهة لهم.على سبيل المثال ، DLLs قد فضح gimme_the_interface() وظيفة التي يمكن أن تقبل هيكل مليئة مؤشرات الدالة.هذه مؤشرات الدالة تسمح DLL لإجراء المكالمات, تسجيل الاستدعاء ، إلخ.

إذا كنت في C++ يمكنك استخدام DLL النظام ، باستثناء ربما تمرير مؤشر كائن بدلا من البنية ، والهدف من تنفيذ واجهة التي توفر وظائف (تحقيق نفس الشيء مثل البنية ، ولكن أقل القبيح).جافا, يمكنك تحميل ملفات فئة على الطلب بدلا من DLLs ولكن الفكرة الأساسية أن يكون نفسه.

في جميع الحالات, سوف تحتاج إلى تحديد معيار واجهة بين الكود و الإضافات, بحيث يمكنك تهيئة الإضافات ، وذلك الإضافات يمكن أن تتفاعل معك.

P. S.إذا كنت ترغب في رؤية مثال جيد C++ المساعد نظام التحقق من foobar2000 SDK.أنا لم تستخدم منذ فترة طويلة ، لكن كان عليه أن يكون كذلك حقا القيام به.أفترض أنه لا يزال.

نصائح أخرى

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

على سبيل المثال ، إذا كنت كتابة المدونات التطبيق, قد ترغب في رفع الحدث قبل وظيفة جديدة يتم حفظ إلى قاعدة البيانات ، وتوفير the post HTML إلى المساعد لتغيير حسب الحاجة.

أنا يميل إلى أنماط تصميم الكتاب على هذا عامة السؤال :p

حقا, أعتقد أن الجواب هو لا.لا يمكنك الكتابة الموسعة رمز افتراضيا ، سيكون من الصعب كتابة/تمديد و بفظاعة غير فعالة (موزيلا بدأت مع فكرة جدا الموسعة ، وتستخدم XPCOM في كل مكان ، وهم الآن أدركت أنه كان خطأ و بدأت إزالته حيث أنه لا معنى له).

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

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

أعتقد أن هناك جانبين على سؤالك:

تصميم النظام أن تكون قابلة للتمديد (تصميم أنماط انعكاس التحكم وغيرها من الجوانب المعمارية) (http://www.martinfowler.com/articles/injection.html).و, على الأقل بالنسبة لي, نعم هذه الأنماط/تقنيات منصة/لغة مستقلة و يمكن أن ينظر إليه باعتباره "الإجراءات العامة".

الآن تنفيذها اللغة منصة dependend (على سبيل المثال في C/C++ لديك مكتبة ديناميكية الأشياء ، وما إلى ذلك.)

عدة أطر' وقد وضعت تعطيك بيئة البرمجة التي توفر لك pluggability/التمدد ولكن بعض الناس يذكر أن النزعة جعل كل شيء للتوصيل.

في جافا العالم جيدة مواصفات نظرة أو إس جي أي (http://en.wikipedia.org/wiki/OSGi) مع عدة تطبيقات أفضل واحد IMHO يجري الاعتدال (http://www.eclipse.org/equinox/)

  1. معرفة ما الأدنى requrements كنت تريد أن تضع على البرنامج المساعد الكاتب.ثم جعل واحد أو أكثر من واجهات أن الكاتب يجب أن تنفذ على الكود الخاص بك أن تعرف متى وأين تنفيذ التعليمات البرمجية.

  2. جعل API الكاتب الوصول إلى بعض الوظائف في التعليمات البرمجية الخاصة بك.

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

بعض الناس أيضا جعل البرمجة لغة النظام الخاص بهم ، أو تنفذ مترجم على مجموعة فرعية من القائمة اللغة.هذا أيضا محتمل الطريق للذهاب.

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

إذا كنت تستخدم لغة مترجمة مثل C أو C++, قد يكون فكرة جيدة أن ننظر إلى دعم البرنامج المساعد عن طريق لغات البرمجة.كل Python and Lua ممتازة اللغات التي تستخدم سكربت عدد كبير من التطبيقات (Civ4 و خلاط استخدام بيثون ، القائد الأعلى يستخدم لوا ، إلخ).

إذا كنت تستخدم C++, تحقق من دفعة بيثون المكتبة.وإلا الثعبان السفن مع الرؤوس التي يمكن استخدامها في ج و لا وظيفة جيدة إلى حد ما توثق ج/API الثعبان.الوثائق بدا أقل كاملة عن Lua, ولكن قد لا قد تبحث الصعب بما فيه الكفاية.وفي كلتا الحالتين ، يمكن أن تقدم إلى حد ما الصلبة البرمجة منصة دون الرهيب كمية العمل.فإنه لا يزال غير تافهة ، ولكنه يوفر لك قاعدة جيدة جدا للعمل من.

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