وحدة التحكم الأمامية

يُعدّ نمط تصميم البرمجيات " وحدة التحكم الأمامية" مُدرجًا في العديد من كتالوجات الأنماط، ويرتبط بتصميم تطبيقات الويب. وهو عبارة عن " وحدة تحكم تُعالج جميع طلبات موقع الويب " [ 1 ] ، ما يُمثّل بنيةً مفيدةً لمطوري تطبيقات الويب لتحقيق المرونة وإمكانية إعادة الاستخدام دون تكرار التعليمات البرمجية.

تعليمات

هيكل نموذجي لوحدة التحكم الأمامية.

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

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

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

أمثلة

تُطبّق العديد من أطر عمل تطبيقات طبقة الويب نمط وحدة التحكم الأمامية:

تطبيق

يمكن تقسيم وحدات التحكم الأمامية إلى ثلاثة مكونات:

  1. ربط XML : ملفات تربط الطلبات بالفئة التي ستتولى معالجة الطلب.
  2. معالج الطلبات: يستخدم لمعالجة الطلبات وتعديل أو استرداد النموذج المناسب.
  3. مدير التدفق: يحدد ما سيتم عرضه في الصفحة التالية.

المشاركون والمسؤوليات

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

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

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

مثال على تطبيق جافا

وحدة التحكم الأمامية المنفذة بلغة جافا: [ 3 ]

استيراد java.io.IOException ؛استيراد jakarta.servlet.ServletException ؛ استيراد jakarta.servlet.http.HttpServletRequest ؛ استيراد jakarta.servlet.http.HttpServletResponse ؛private void doProcess ( HttpServletRequest request , HttpServletResponse response ) throws IOException , ServletException { // ... try { getRequestProcessor (). processRequest ( request ); getScreenFlowManager (). forwardToNextScreen ( request , response ); } catch ( Throwable t ) { String className = ex.getClass ( ). getName ( ); nextScreen = getScreenFlowManager (). getExceptionScreen ( t ); // ضع الاستثناء في الطلب request.setAttribute ( " jakarta.servlet.jsp.JspException " , t ) ; if ( nextScreen == null ) { // أرسل إلى شاشة الخطأ العامة ex.printStackTrace ( ); throw new ServletException ( "MainServlet: unknown exception: " + className ) ; } }

المزايا والالتزامات

هناك ثلاث فوائد رئيسية مرتبطة بنمط وحدة التحكم الأمامية. [ 4 ]

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

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

العلاقة مع MVC

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

مقارنة

يُعد نمط وحدة التحكم في الصفحة بديلاً لنهج وحدة التحكم الأمامية في نموذج MVC.

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

انظر أيضاً

مراجع

  1. فاولر، مارتن . "المراقب الأمامي" . تم الاسترجاع في 26 سبتمبر 2017 .
  2. "إطار عمل MVC للويب" . وثائق مرجعية لإطار عمل Spring . شركة Pivotal Software . تم الاطلاع عليه بتاريخ 26 سبتمبر 2017 .
  3. "نموذج برمجي بلغة جافا" . مؤرشف من الأصل بتاريخ 19-04-2012.{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط )
  4. "فوائد استخدام وحدة التحكم الأمامية" . 17 مارس 2014.

ملحوظات

  • ألور، ديباك؛ جون كروب؛ دان مالكس (2003). أنماط J2EE الأساسية، وأفضل الممارسات، واستراتيجيات التصميم، الطبعة الثانية . دار نشر صن مايكروسيستمز.  650 صفحة. ISBN 0-13-142246-4.
  • فاولر، مارتن (2003). أنماط هندسة تطبيقات المؤسسات . أديسون-ويسلي بروفيشنال.  560 صفحة. ISBN 978-0-321-12742-6.
  • برنامج Front Man™ من تطوير Bear Bibeault ، وهو تطبيق جافا خفيف الوزن.