السبت، 2 نوفمبر، 2013

مقدمة حول النمط المعياري نموذج-منظر-موجّه Model-View-Controller MVC



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


تعريفات:

  Model-View-Controller (MVC) هو نمط معماري قياسي لهندسة البرمجيات, له تطبيقات في معظم بيئات التطوير الحديثة, وينقسم إلى ثلاثة أجزاء رئيسيّة: 

·         النماذج Models.

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

·         المناظر Views.

تمثّل واجهة المستخدم, وتشمل الأدوات والتنسيقات التي يتعامل معها المستخدم, مثل مربعات النص والأزرار وغيرها.

·         المُوجِّهات Controllers.

وتمثّل الجزأ الذي يتفاعل مع أوامر المستخدم, وتعمل مع النماذج وتعرض النتائج على المناظر المناسبة.


وإذاً فـ MVC يقدم نمط معماري يمكننا من إنشاء تطبيقات بحيث يتم فصل إدخالات المستخدم, ومنطق الأعمال, وواجهة المستخدم عن بعضهم البعض, حيث توضع إدخالات المستخدم Inputs  في الموجهات Controllers, منطق الأعمال  Business Logicفي النماذج Models, و واجهة المستخدم UI في المناظر Views, وهذا التقسيم يساعد كثيراً في التعامل مع تعقيد التطبيق Complexity, حيث يمكّن المطور من التركيز على جانب محدد في كل مرة, مثلاً واجهة المستخدم, بدون الاضطرار للتعامل مع بقية جوانب التطبيق في نفس الوقت.

ويقدم إطار عمل ASP.NET إمكانيات MVC ضمن المكتبة System.Web.Mvc, علماً أن MVC لا يعتبر بديلاً عن الأسلوب التقليدي Web Forms بل أسلوب إضافي له مميزاته وعيوبه, كما يمكن استخدام كلا النمطين في مشروع ASP.NET واحد.
بالنظر لما سبق, هل نستطيع القول إن هذا النمط هو الأفضل وبالتالي سنستخدمه في كل التطبيقات القادمة؟ في الحقيقة لا.
والسبب كما أشرت سابقاً, أنه لا يعد بديلاً للأسلوب التقليدي Web Forms والذي له مميزاته الخاصة التي تجعله الخيار الأمثل في بعض الحالات. ولتحديد فيما إذا كان من الأفضل استخدام MVC أم لا, دعني أطلعك على أهم مميزات MVC بالمقارنة بمميزات Web Forms.


Web Forms
MVC
·         تدعم نموذج أحداث يتضمن عشرات الأحداث المدعومة في مئات الأدوات التي تعمل جهة الملقّم.
·         تستخدم نمط موجّه الصفحة.
·         لا تستخدم حالة العرض View State ولا تستخدم نماذج الملقّم Server-based Froms.
·         تعمل جيداً مع الفِرق الصغيرة من المطورين والمصممين, والذين يستفيدون من عدد ظخم من المكونات الجاهزة.
·         بشكل عام تعتبر أقل تعقيداً وعادة تحتاج عدد أقل من الكود مقارنة بـ  MVC

·         تقلل من تعقيد التطبيق عن طريق تقسيمه إلى نموذج, منظر, وموجّه.
·         لا تستخدم حالة العرض View State ولا تستخدم نماذج الملقّم Server-based Froms.
·         تستخدم نمط الموجّه الأمامي, والذي يعالج جميع طلبات التطبيق في موجّه واحد, وهذا يساعد في تصميم تطبيقات تدعم بُنيَة توجيه غنيّة.
·         تقدّم دعم ممتاز لأسلوب التطوير المدار بالفحص (TDD).
·         تعمل جيداً مع التطبيقات التي يعمل عليها عدد كبير من فِرَق التطوير والمصمّمين الذين يحتاجون إلى درجة أعلى من التحكم بسلوك التطبيق.


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

هناك تعليق واحد:

متابعة

استلام إشعارات بالمواضيع الجديدة