سؤال

وجدت ما هو mvp وmvc وما الفرق لكنها لم تجيب حقا على هذا السؤال.

لقد بدأت مؤخرًا في استخدام MVC لأنه جزء من إطار العمل الذي سأستخدمه أنا وشريكي في العمل.لقد اخترنا ذلك لأنه يبدو سهلاً ومنفصلاً عن العرض، فهل هناك مزايا بجانب هذا لا نعرف عنها ويمكن أن نفتقدها؟

الايجابيات

  1. يتم فصل العرض والمعالجة


سلبيات

  1. لا شيء حتى الان
هل كانت مفيدة؟

المحلول

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

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

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

يتيح هذا الفصل بين المسؤوليات المرونة في المستقبل.على سبيل المثال، نظرًا لأن العرض لا يهتم بالنموذج الأساسي، فإن دعم تنسيقات الملفات المتعددة يكون أسهل:ما عليك سوى إضافة فئة فرعية نموذجية لكل منها.

نصائح أخرى

فصل الهموم هو الكبير.

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

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

تتوفر جولة جيدة لجميع أنواع MVC المختلفة هنا.

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

أعتقد أن هناك فائدة أخرى لاستخدام نمط MVC وهي أنه يفتح الأبواب أمام الآخرين اقتراب للتصميم، مثل MVP/Presenter أولاً والعديد من أنماط MV* الأخرى.

وبدون هذا الفصل الأساسي بين "مكونات" التصميم، سيكون اعتماد هذه التقنيات أكثر صعوبة.

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

يحرر:

إذا كنت أتذكر بشكل صحيح، هذا بودكاست جيد جدًا حول أنماط MV* (سمعتها منذ فترة!)

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

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

إذا تابعت ملفات podcast الخاصة بـ stackoverflow، فيمكنك سماع جيف (وجيوف؟) يناقشان عظمتها. http://blog.stackoverflow.com/2008/08/podcast-17/.لكن تذكر أن استخدام هذه الطبقات المنفصلة يعني أن الأمور ستكون أسهل في المستقبل - وأكثر صعوبة الآن.والطبقات يستطيع جعل الأمور أبطأ.وقد لا تحتاج إليها.لكن لا تدع ذلك يمنعك من معرفة ماهيته - عند بناء أنظمة كبيرة وقوية وطويلة العمر، فهو لا يقدر بثمن.

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

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

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

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

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

إنه نفس المبدأ الذي يجعل أي شخص يقضي أكثر من 5 دقائق في محاولة إنشاء موقع ويب يقدر الحاجة إلى الاحتفاظ بعلامات HTML وJavaScript وCSS في ملفات منفصلة:إذا قمت فقط بتفريغ كل التعليمات البرمجية الخاصة بك في ملف واحد، فسينتهي بك الأمر مع السباغيتي التي لا يمكن تحريرها فعليًا لاحقًا.

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

إحدى المزايا الرئيسية لـ MVC والتي لم يتم ذكرها هنا هي أن MVC يوفر عناوين URL RESTful التي تمكن SEO.عندما تقوم بتسمية وحدات التحكم والإجراءات الخاصة بك بحكمة، فإنه يسهل على محركات البحث العثور على موقعك إذا قاموا فقط بإلقاء نظرة على عناوين URL الخاصة بموقعك.على سبيل المثال، لديك موقع ويب لبيع السيارات وصفحة تعرض سيارات Lamborghini Veneno المتوفرة، بدلاً من امتلاكها www.MyCarSale.com/product/6548 في اشارة الى الصفحة التي يمكنك اختيارها www.MyCarSale.com/SportCar/Lamborghini-Veneno عنوان url لغرض تحسين محركات البحث.

هنا هي إجابة جيدة لمزايا MVC و هنا مقال عن كيفية إنشاء عنوان URL صديق لكبار المسئولين الاقتصاديين (SEO).

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

هنا يمكنك رؤية المزيد من النقاط المزايا الرئيسية لهندسة MVC.

![هندسة MVC][1]

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top