MVC مقابل MVVM – الفرق بينهما
الاختلافات الرئيسية بين MVC وMVVM
- إطار عمل MVC هو نمط معماري يفصل التطبيق إلى ثلاثة مكونات منطقية رئيسية وهي النموذج والعرض ووحدة التحكم. من ناحية أخرى، يسهل MVVM فصل تطوير واجهة المستخدم الرسومية بمساعدة لغة الترميز أو كود واجهة المستخدم الرسومية
- في MVC، وحدة التحكم هي نقطة الدخول إلى التطبيق، بينما في MVVM، العرض هو نقطة الدخول إلى التطبيق.
- يمكن اختبار مكون نموذج MVC بشكل منفصل عن المستخدم، في حين أن MVVM سهل لاختبار الوحدة المنفصلة، ويكون الكود قائمًا على الحدث.
- تعمل هندسة MVC على إنشاء علاقة "واحد إلى كثير" بين وحدة التحكم والعرض، في حين تعمل هندسة MVVM على تعريف علاقة "واحد إلى كثير" بين العرض ونموذج العرض.
ما هو MVC؟
استخدم إطار MVC هو نمط معماري يفصل التطبيقات إلى ثلاثة مكونات منطقية رئيسية: النموذج والعرض ووحدة التحكم. ومن هنا جاء الاختصار MVC. الشكل الكامل MVC هو Model View Controller.
في هذه البنية، يتم بناء مكون للتعامل مع جوانب تطوير محددة لتطبيق ما. يفصل MVC بين منطق العمل وطبقة العرض عن بعضهما البعض. يستخدم هذا النمط المعماري بشكل أساسي لواجهات المستخدم الرسومية (GUIs) لسطح المكتب.
ما هو MVVM؟
تسهل بنية MVVM فصل تطوير واجهة المستخدم الرسومية بمساعدة لغة الترميز أو كود واجهة المستخدم الرسومية. الشكل الكامل لـ MVVM هو Model–View–ViewModel.
نموذج العرض الخاص بـ MVVM هو محول قيمة مما يعني أنه يقع على عاتق نموذج العرض مسؤولية الكشف عن كائنات البيانات من النموذج بطريقة تجعل من السهل إدارة الكائنات وعرضها.
نمط MVC

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

توفر بنية MVVM ربطًا ثنائي الاتجاه للبيانات بين العرض ونموذج العرض. كما تساعدك على أتمتة انتشار التعديلات داخل نموذج العرض إلى العرض. يستخدم نموذج العرض نمط المراقب لإجراء تغييرات في نموذج العرض.
دعونا نرى بعضنا البعض هذا المكون بالتفصيل:
الموديل
يقوم النموذج بتخزين البيانات والمنطق ذي الصلة. وهو يمثل البيانات التي يتم نقلها بين مكونات وحدة التحكم أو أي منطق عمل آخر ذي صلة.
على سبيل المثال، سيقوم كائن وحدة التحكم باسترداد معلومات الطالب من قاعدة بيانات المدرسة. يعالج البيانات ويرسلها مرة أخرى إلى قاعدة البيانات أو يستخدمها لتقديم نفس البيانات.
عرض الطلب
يرمز العرض إلى مكونات واجهة المستخدم مثل HTML وCSS وjQuery وما إلى ذلك.
يعتبر عرض النمط مسؤولاً عن عرض البيانات التي يتم تلقيها من وحدة التحكم كنتيجة. كما يتم تحويل هذا العرض إلى نموذج (نماذج) إلى واجهة المستخدم (UI).
عرض النموذج
نموذج العرض مسؤول عن تقديم الوظائف والأوامر والطرق لدعم حالة العرض. وهو مسؤول أيضًا عن تشغيل النموذج وتنشيط الأحداث في العرض.
الفرق بين MVC وMVVM Architecture
فيما يلي الفرق المهم بين MVVM وMVC
| MVC (وحدة تحكم عرض النموذج) | MVVM (نموذج عرض ViewModel) |
|---|---|
| وحدة التحكم هي نقطة الدخول إلى التطبيق. | العرض هو نقطة الدخول إلى التطبيق. |
| واحد إلى العديد من العلاقات بين وحدة التحكم والعرض. | علاقة واحدة إلى العديد من العلاقات بين عرض وعرض النموذج. |
| العرض لا يحتوي على إشارة إلى وحدة التحكم | العرض يحتوي على إشارات إلى نموذج العرض. |
| MVC هو النموذج القديم | MVVM هو نموذج جديد نسبيًا. |
| من الصعب قراءة هذا النموذج وتغييره واختبار الوحدة وإعادة استخدامه | ستكون عملية تصحيح الأخطاء معقدة عندما يكون لدينا ارتباطات بيانات معقدة. |
| يمكن اختبار مكون نموذج MVC بشكل منفصل عن المستخدم | من السهل اختبار الوحدة المنفصلة والتعليمات البرمجية تعتمد على الأحداث. |
مميزات برنامج MVC
فيما يلي ميزات مهمة لـ MVC:
- قابلية اختبار سهلة وبدون احتكاك. إطار عمل قابل للاختبار وقابل للتوسيع والتوصيل بدرجة عالية
- يمكنك أيضًا الاستفادة من الميزات الموجودة التي تقدمها ASP.NET وDjango وJSP وما إلى ذلك.
- يوفر تحكمًا كاملاً في HTML الخاص بك بالإضافة إلى URLs.
- وهو يدعم التطوير القائم على الاختبار (TDD)
- توفر هذه الهندسة المعمارية فصل المنطق
- يُتيح التوجيه لتحسين محركات البحث URLs.
- عروض لرسم الخرائط بشكل مفهوم وقابل للبحث URLs.
مميزات برنامج MVVM
فيما يلي ميزات هندسة MVVM:
- تمت كتابة MVVM لتطبيق سطح المكتب مع إمكانيات ربط البيانات - XAML وواجهة INotifyPropertyChanged
- إذا كنت تريد إجراء تعديل في نموذج العرض، فإن نموذج العرض يستخدم نمط المراقب.
- يتم استخدام نمط MVVM في الغالب بواسطة برنامج الأغذية العالمي، Silverlight، nRoute، إلخ.
مزايا MVC
فيما يلي مزايا/إيجابيات MVC
- دعم أسهل لنوع جديد من العملاء
- يمكن تنفيذ تطوير المكونات المختلفة بالتوازي.
- يتجنب التعقيد عن طريق تقسيم التطبيق إلى وحدات منفصلة (MVC)
- إنه يستخدم فقط نمط وحدة التحكم الأمامية الذي يعالج طلبات تطبيقات الويب باستخدام وحدة تحكم واحدة.
- يقدم أفضل دعم للتطوير القائم على الاختبار
- إنه يعمل بشكل جيد مع تطبيقات الويب، التي تدعمها فرق كبيرة من مصممي ومطوري الويب.
- يوفر فصلًا نظيفًا للمخاوف (SoC).
- جميع الكائنات والكائنات المصنفة مستقلة عن بعضها البعض بحيث يمكنك اختبارها بشكل منفصل.
- يسمح نمط MVC بالمجموعات المنطقيةping من الإجراءات ذات الصلة على وحدة تحكم واحدة معًا.
مزايا MVVM
فيما يلي إيجابيات/فوائد MVVM
- يتم فصل منطق الأعمال عن Ul
- سهلة الصيانة والاختبار
- من السهل إعادة استخدام المكونات
- هندسة مقترنة بشكل فضفاض: تجعل MVVM هندسة التطبيق الخاصة بك مقترنة بشكل فضفاض.
- يمكنك كتابة حالات اختبار الوحدة لكل من نموذج العرض وطبقة النموذج دون الحاجة إلى الرجوع إلى العرض.
عيوب MVC
فيما يلي سلبيات/عيوب MVC
- يتم خلط منطق الأعمال مع Ul
- من الصعب إعادة استخدام وتنفيذ الاختبارات
- لا يوجد دعم التحقق الرسمي
- زيادة تعقيد البيانات وعدم كفاءتها
- صعوبة استخدام MVC مع واجهة المستخدم الحديثة
- هناك حاجة لمبرمجين متعددين لإجراء برمجة متوازية.
- مطلوب معرفة تقنيات متعددة.
عيوب MVVM
فيما يلي سلبيات/عيوب MVVM
- صيانة الكثير من الأكواد في وحدة التحكم
- يعتقد بعض الأشخاص أن استخدام واجهات مستخدم بسيطة لهندسة MVVM قد يكون مبالغًا فيه.
- لا يوفر اقترانًا محكمًا بين نموذج العرض والعرض

