أرشيف  November, 2008

Nov 15    عن أطر العمل المتكاملة الحزم و الملصقة- Glue vs Full stack Frameworks

November 15th, 2008

لعلك تعرف ماهو إطار العمل (framework),و على الأرجح قد تكون إستخدمتة فى أثناء برمجتك لبعض الأعمال أيا كانت اللغة التى تستخدمها :

إطار العمل: مجموعة من الأدوات، المكاتب البرمجية، الاصطلاحات (conventions) وأفضل الممارسات البرمجية لمحاولة تجريد المهام التكرارية ووضعها ضمن وحدات برمجية كي يعاد استعمالها.

إذن مبدأ إطار العمل يقوم على عزل المهام البرمجية المتكررة ووضعها ضمن وحدة برمجية جاهزة، ومهمتك أن تقوم فقط باستدعاء التابع المناسب لك بدل كتابتها من جديد، وجعل تركيز المطور منكباً على المهام البرمجية الجديدة، عوضاً عن شغله بالمهام الروتينية المتكررة وكما يطلق عليه “إعادة اختراع العجلة”. [ماهو إطار العمل Framwork؟ ]


و لكن ما هو إطار العمل الأنسب لمشروعك ؟على أى أساس تقوم بالإختيار ؟


برأى أول و أهم نقطة فى الإختيار هو منهجية العمل “Methodology” ,و هى بالنسبة لإطارات العمل تحديد إلى اى فئة ينتمى ..هل الى الأطر الملصقة (Glue Frameworks )أم الأطر الكاملة (Full stack frameworks), أهمية هذة النقطة تأتى من تأثيرها المباشر على سير العمل بتطبيقك من حيث مرونة الإطار لإضافة أى أدوات أو مكتبات خارجية , الوقت المبذول لتغيير طريقة عمل أحد المكونات الأساسية للإطار بما يتماشى و تطبيقك إذا كان تطبيقك يتطلب تطويعا للإطار ,حجم تطبيقك و الوقت المطلوب لإنجازة و يجب أن تعرف أولا ما هى منهجية عمل الإطار و تنتقى الإطار الذى تتماشى منهجيتة مع تطبيقك و إلا ستخسر الكثير من الوقت و الجهد.


إطار الحزم المتكاملة (Full stack framework):

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


  • 1-السرعة فى انجاز العمل :

    الإطار الكامل يحاول تغطية كل العناصر المطلوبة فى تطبيق العمل فلو التزمت بطريقة عملة يمكنك انجاز العمل بسرعة فائقة و
    ما عليك إلا إستدعاء طرق العمل .

  • 2-يناسب فريق العمل الكبير:

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

العيوب :


  • 1-تعقد التكوين :

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

  • 2-غير مرن :

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

  • 3-التعلم :

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

أمثلة :

  • CakePHP (إطار عمل متكامل للغة PHP)
  • Symphony (إطار عمل متكامل للغة PHP)
  • Prado (إطار عمل متكامل للغة PHP)
  • Django (إطار عمل متكامل للغة Python)


الإطار الملصق (Glue Framework ):

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

المميزات :


  • 1-المرونة :

    الإطار الملصق مرن من حيث اختيار مكونات دون غيرها أو التعديل عليها فهو لا يفرض عليك طرق عمل واحدة.
  • 2- التعلم :

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

العيوب :

  • -يجب ان تتوافر لديك قدرا لا بأس بة من القدرة على التكويد و المعرفة البرمجية إن أردت إضافة مكون غير متوافر بالإطار
    .


امثلة :

  • CodeIgniter (إطار عمل ملصق للغة PHP)
  • Zend Framework (إطار عمل ملصق للغة PHP)
  • Pylons (إطار عمل ملصق للغة Python)
  • TurboGear (إطار عمل ملصق للغة Python)

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


بعد تحديدك لمنهجية عمل الإطار و ما إذا كانت ملائمة لطبيعتك كمبرمج أو طبيعة فريق العمل و المشروع ,  تأتى نقاط أخرى للمقارنة منها مثلا :

  • 1- مدى توافق متطلبات إطار العمل مع إمكانيات الإستضافة للسيرفر (مثلا لو إطار العمل يتطلب PHP 5 و انت لديك PHP4).
  • 2- قاعدة الشعبية المتاحة للإطار مع توافر التوثيق و الدعم الكافى (لو واجهتك مشكلة بالإطار هل يوجد منتدى لبحث المشاكل أو الإضافات ؟هل يوجد توثيق كامل سهل الفهم لكيفية عمل الإطار ؟لو الإجابة لا إبتعد فورا ).
  • 3- توافر أفضل المكتبات و الممارسات البرمجية و الأدوات التى تتماشى مع المعايير القياسية ضمن الإطار (مثلا هل الإطار يستخدم تقنية MVC التى ثبت فعاليتها فى العمل و تعتمد عليها أغلب الأطر ..ام أن الإطار ما زال يعمل بالطرق التقليدية ؟).



تجربتى الشخصية :



قمت بتجربة كلا من الإطار الكامل متمثلا فى “ِCakePHP” و الإطار الملصق متمثلا فى Codeigniter” ,” Zend Framework” و أرى ان اقصى استفادة ممكنة و سرعة فى العمل تتحق مع الإطار الملصق فأنا شخصيا أحب ان تكون لى حرية اختيار المكونات الخاصة بالإطار و لا تكون مفروضة على , بالإضافة لإمكانية تلبية طلب العميل إذا ما أراد وضع اى خاصية معينة لا تتماشى مع طبيعة عمل الإطار الكامل (هذة الحالة كابوس..ستضطر عندها لفهم كيفية عمل الإطار الكامل كلة )

إقرأ أيضا :

فى قسم  عام, كمبيوتر وانترنت | 9 تعليقات »