MVC Archiالبنية والإطار مع أمثلة
⚡ ملخص ذكي
نمط Model-View-Controller (MVC) هو نمط معماري يفصل التطبيق إلى ثلاثة مكونات - النموذج والعرض ووحدة التحكم - ويعزل منطق الأعمال عن طبقة العرض لبناء تطبيقات ويب وسطح مكتب قابلة للصيانة والاختبار باستخدام أطر عمل مثل Spring وDjango وLaravel.

ما هو إطار عمل MVC؟
استخدم وحدة تحكم عرض النموذج (MVC) الإطار هو نمط معماري يفصل التطبيق إلى ثلاثة مكونات منطقية رئيسية وهي النموذج والعرض ووحدة التحكم. ومن هنا جاء الاختصار MVC. تم بناء كل مكون معماري للتعامل مع جانب تطوير معين للتطبيق. يفصل MVC بين منطق العمل وطبقة العرض عن بعضهما البعض. كان يستخدم تقليديًا لواجهات المستخدم الرسومية لسطح المكتب (GUIs). في الوقت الحاضر، أصبحت بنية MVC في تكنولوجيا الويب شائعة لتصميم تطبيقات الويب بالإضافة إلى تطبيقات الهاتف المحمول.
تاريخ شركة MVC
- تمت مناقشة هندسة MVC لأول مرة في عام 1979 بواسطة Trygve Reenskaug
- تم تقديم نموذج MVC لأول مرة في عام 1987 في لغة برمجة Smalltalk.
- تم قبول MVC لأول مرة كمفهوم عام، في مقالة عام 1988
- في الآونة الأخيرة، يتم استخدام نمط MVC على نطاق واسع في تطبيقات الويب الحديثة
مميزات برنامج MVC
- قابلية اختبار سهلة وبدون احتكاك. إطار عمل قابل للاختبار وقابل للتوسيع والتوصيل بدرجة عالية
- لتصميم بنية تطبيق ويب باستخدام نمط MVC، فإنه يوفر تحكمًا كاملاً في HTML الخاص بك بالإضافة إلى URLs
- الاستفادة من الميزات الموجودة التي توفرها ASP.NET، وJSP، وDjango، وما إلى ذلك.
- الفصل الواضح بين المنطق: النموذج، والعرض، ووحدة التحكم. فصل مهام التطبيق مثل منطق الأعمال، ومنطق UL، ومنطق الإدخال
- URL التوجيه لتحسين محركات البحث URLقوي URL-خريطةping للفهم والبحث URLs
- يدعم التطوير القائم على الاختبار (TDD)
MVC Architecture
والآن بعد أن اتضحت الفوائد، إليكم البنية التفصيلية لإطار عمل MVC:

ثلاثة مكونات مهمة لـ MVC هي:
- النموذج: يشمل جميع البيانات والمنطق المرتبط بها
- عرض: تقديم البيانات للمستخدم أو التعامل مع تفاعل المستخدم
- وحدة التحكم: واجهة بين مكونات النموذج والعرض
دعونا نلقي نظرة على كل مكون من هذه المكونات بالتفصيل:
عرض الطلب
العرض هو ذلك الجزء من التطبيق الذي يمثل عرض البيانات.
يتم إنشاء طرق العرض من خلال البيانات التي تم جمعها من بيانات النموذج. تطلب طريقة العرض من النموذج تقديم معلومات حتى يتمكن من عرض مخرجات العرض للمستخدم.
كما يمثل العرض أيضًا البيانات من المخططات والرسوم البيانية والجداول. على سبيل المثال، سيتضمن أي عرض للعملاء جميع مكونات واجهة المستخدم مثل مربعات النص والقوائم المنسدلة وما إلى ذلك.
مراقب
وحدة التحكم هي جزء التطبيق المسؤول عن تفاعل المستخدم. تُفسر وحدة التحكم مدخلات الماوس ولوحة المفاتيح من المستخدم، مُعلمةً النموذج والعرض بالتغيير حسب الحاجة.
يرسل المتحكم أوامر إلى النموذج لتحديث حالته (مثل حفظ مستند معين). كما يرسل المتحكم أوامر إلى العرض المرتبط به لتغيير طريقة عرضه (مثل تمرير مستند معين).
الموديل
يقوم مكون النموذج بتخزين البيانات والمنطق المرتبط بها. وهو يمثل البيانات التي يتم نقلها بين مكونات وحدة التحكم أو أي منطق عمل آخر ذي صلة. على سبيل المثال، سيقوم كائن وحدة التحكم باسترداد معلومات العميل من قاعدة البيانات. يعالج البيانات ويرسلها مرة أخرى إلى قاعدة البيانات أو يستخدمها لتقديم نفس البيانات.
يستجيب لطلبات العروض، ويستجيب أيضًا لتعليمات وحدة التحكم لتحديث نفسه. وهو أيضًا أدنى مستوى في النمط، وهو المسؤول عن صيانة البيانات.
أمثلة على MVC
دعونا نرى مثال وحدة تحكم عرض النموذج من الحياة اليومية:
مثال 1
- لنفترض أنك ذهبت إلى مطعم. لن تذهب إلى المطبخ وتقوم بإعداد الطعام الذي يمكنك بالتأكيد القيام به في منزلك. بدلاً من ذلك، تذهب إلى هناك وتنتظر وصول النادل.
- الآن يأتي النادل إليك، وأنت تطلب الطعام. النادل لا يعرف من أنت وماذا تريد، لقد كتب للتو تفاصيل طلب الطعام الخاص بك.
- ثم ينتقل النادل إلى المطبخ. في المطبخ، النادل لا يقوم بإعداد طعامك.
- يقوم الطاهي بإعداد طعامك، ويسلم النادل طلبك إليه مع رقم طاولتك.
- قم بطهي الطعام ثم أعده لك. يستخدم المكونات لطهي الطعام. لنفترض أن طلبك شطيرة الخضار. ثم يحتاج إلى الخبز والطماطم والبطاطس والفلفل والبصل والقليل والجبن وما إلى ذلك الذي يحصل عليه من الثلاجة
- قم بطهي الطعام ثم قم بتسليم الطعام للنادل. الآن أصبحت مهمة النادل نقل هذا الطعام خارج المطبخ.
- الآن يعرف النادل الطعام الذي طلبته وكيفية تقديمه.
في هذا المثال لهندسة MVC،
View= You Waiter= Controller Cook= Model Refrigerator= Data
دعونا نرى مثالاً آخر لنموذج MVC،
مثال 2
تعتبر آلية قيادة السيارة مثالاً آخر لنموذج MVC.
- تتكون كل سيارة من ثلاثة أجزاء رئيسية.
- العرض: واجهة المستخدم: (ذراع ناقل الحركة، اللوحات، عجلة القيادة، الفرامل، إلخ.)
- جهاز التحكم - الآلية (المحرك)
- الموديل- التخزين (خزان بنزين أو ديزل)
تعمل السيارة من المحرك وتأخذ الوقود من المخزن، ولكنها تعمل فقط باستخدام أجهزة واجهة المستخدم المذكورة.
أطر ويب MVC الشعبية
فيما يلي قائمة ببعض أطر عمل MVC الشائعة:
- Ruby on Rails
- Django
- للكيك
- Yii
- الكرز
- الربيع MVC
- الحفاز
- القضبان
- إطار زند
- Codeأنبوب
- لارافل
- وقود PHP
- Symphony
مزايا MVC: الفوائد الرئيسية
فيما يلي الفوائد الرئيسية لاستخدام بنية MVC:
- صيانة سهلة للكود والتي يسهل توسيعها ونموها
- يمكن اختبار مكون نموذج MVC بشكل منفصل عن المستخدم
- دعم أسهل لأنواع جديدة من العملاء
- يمكن تنفيذ تطوير المكونات المختلفة بالتوازي.
- يساعدك على تجنب التعقيد من خلال تقسيم التطبيق إلى ثلاث وحدات. النموذج والعرض ووحدة التحكم
- إنه يستخدم فقط نمط وحدة التحكم الأمامية الذي يعالج طلبات تطبيقات الويب من خلال وحدة تحكم واحدة.
- يقدم أفضل دعم ل التنمية القائمة على الاختبار
- إنه يعمل بشكل جيد مع تطبيقات الويب التي تدعمها فرق كبيرة من مصممي ومطوري الويب.
- يوفر فصلًا واضحًا للمخاوف (SoC).
- تحسين محركات البحث (SEO) ودية.
- جميع الفئات والكائنات مستقلة عن بعضها البعض بحيث يمكنك اختبارها بشكل منفصل.
- يسمح نمط تصميم MVC بالمجموعات المنطقيةping من الإجراءات ذات الصلة على وحدة تحكم واحدة معًا.
عيوب استخدام MVC
- من الصعب قراءة هذا النموذج وتغييره واختبار الوحدة وإعادة استخدامه
- قد يكون التنقل في إطار العمل معقدًا في بعض الأحيان لأنه يُدخل طبقات جديدة منtracالأمر الذي يتطلب من المستخدمين التكيف مع معايير التفكيك الخاصة بنموذج MVC.
- لا يوجد دعم التحقق الرسمي
- زيادة تعقيد البيانات وعدم كفاءتها
- صعوبة استخدام MVC مع واجهة المستخدم الحديثة
- هناك حاجة لمبرمجين متعددين لإجراء برمجة متوازية.
- مطلوب معرفة تقنيات متعددة.
- صيانة الكثير من الأكواد في وحدة التحكم
3 الطبقة Architecture مقابل MVC Architecture
| معامل | 3-المستوى Architecture | MVC Architecture |
|---|---|---|
| التواصل | لا يتواصل هذا النوع من أنماط الهندسة المعمارية أبدًا بشكل مباشر مع طبقة البيانات. | تتواصل جميع الطبقات مباشرة باستخدام طوبولوجيا المثلث. |
| الأستعمال | 3-tier: يُستخدم على نطاق واسع في تطبيقات الويب حيث يعمل العميل وطبقات البيانات والبرامج الوسيطة على منصات منفصلة فعليًا. | يُستخدم بشكل عام في التطبيقات التي تعمل على محطة عمل رسومية واحدة. |


