سؤال

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

هل أنا بعيدًا عن القاعدة هنا؟

هل كانت مفيدة؟

المحلول

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

  • وحدة التحكم: التعامل مع الإدخال ، وحدد النموذج وعرضه على مثيله
  • عرض: عرض بيانات التطبيق
  • النموذج: جميع المنطق الآخر للتطبيق ، بما في ذلك على سبيل المثال لا الحصر DAL

هذا هو أساسا وحدة تحكم الصفحة نمط.

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

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

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

انظر أيضا بلدي مدونة من عام 2008 أنني كتبت استجابةً للأشخاص الذين ينكدون نمط السجل النشط. حصلت على بعض التعليقات والمناقشة الجيدة.

نصائح أخرى

نوعا ما. تبدو هكذا:

alt text

النمط الأكثر استخدامًا اليوم هو:

Database -> DAL -> BLL -> Controller -> View Model -> UI

أين

DAL == Data Access Layer (aka ORM, Object-Relational mapper)
BLL == Business Logic Layer

لاحظ أنك لا تحتاج دائمًا إلى كل طبقة. على سبيل المثال ، يمكن أن يكون نموذج BLL و View اختياريًا إذا كان التطبيق صغيرًا بدرجة كافية.

يجب عليك التحقق من تعليمي Nerddinner. يصف كل هذه المفاهيم في مرجع واحد.

بعض التفسيرات الرائعة هنا إذا كنت جديدًا على MVC:

هل أي شخص بجانبي لا يحصل على ASP.NET MVC؟

ملاحظة قصيرة ، أنت على صواب عندما تقول إن وحدة التحكم (لا يجب أن تكون) هي طبقة العمل ، والرؤية هي طبقة العرض التقديمي.

ومع ذلك ، فإن النموذج هو الكائنات (اعتمادًا على التنفيذ) التي تحتوي على البيانات ، في حين أن طبقة البيانات هي طبقة تسترجع/تعالج البيانات.

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