أفضل الممارسات لدمج وحدات الطرف الثالث في تطبيقك

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

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

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

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

المحلول

تأكد من أن الواجهة بين تطبيقك وتطبيق أو مكتبة الجهة الخارجية بحيث يمكنك استبدالها بسهولة بشيء آخر في حالة حدوث ذلك.في بعض الحالات، قد يكون برنامج الطرف الثالث مجرد تطبيق لواجهة برمجة التطبيقات (API) القياسية (تقوم Java بهذا كثيرًا مع JDBC، JMS، JNDI، ...).وفي حالات أخرى، يعني هذا تغليف مكتبة الطرف الثالث في بعض واجهات برمجة التطبيقات (API) التي تتوصل إليها.

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

نصائح أخرى

إذا كنت ستختار المكتبات مفتوحة المصدر، فاختر المكتبات ذات الترخيص الجيد.لقد اكتشفت بالطريقة الصعبة (عند محاولة تصنيع المعدات الأصلية لأحد التطبيقات) أن العديد من الشركات تخجل من تراخيص مثل LGPL.لن أخوض في التفاصيل حول السبب ولكنهم يفضلون تراخيص نمط Apache أو BSD أو MIT.

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

اختر التقنيات التي تعمل بشكل جيد معًا.لقد قمت بتجميع تطبيق يستخدم ORM وخدمات الويب.أنشأ Spring Framework + Apache CXF + JPA لـ ORM مجموعة تقنية رائعة.يتم ربط جميع الأدوات التي أستخدمها بسهولة معًا في الربيع مما يجعل من السهل استخدامها معًا.آخر شيء تريد القيام به هو اختيار الأدوات التي تحتاج إلى كتابة مجموعة من التعليمات البرمجية لاستخدامها معًا.

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

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

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

كان أسلوبي هو استخدام كود الطرف الثالث لبعض الوظائف الأساسية.على سبيل المثال، أستخدم Subsonic للوصول إلى البيانات، ومكونات Devexpress لواجهة المستخدم، وPeter Blum Data Entry Suite لإدخال البيانات والتحقق من صحتها.Subsonic مفتوح المصدر، وعناصر تحكم Devexpress Peter Blum بها كود مصدر متاح مقابل رسوم إضافية.سيكون من المستحيل بالنسبة لي الحصول على وظيفة عناصر التحكم هذه إذا حاولت كتابتها بنفسي.

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

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

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