أحتاج إلى بعض التوضيحات حول بنية MVC والبنية ثلاثية المستويات

StackOverflow https://stackoverflow.com/questions/1025430

سؤال

لقد كنت أقرأ كتاب Pro ASP NET MVC Framework وأنا في حيرة من أمري مع الكثير من الأشياء.لقد كنت أحاول إجراء بعض الأبحاث ولكنني وجدت أنه مع وجود العديد من الأساليب والمفاهيم المختلفة التي يتم طرحها علي، فإن ذلك يجعل الأمور أسوأ.
لذلك لدي بعض الأسئلة:

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

  2. ما هي المستودعات بالضبط؟هل هو بمثابة طبقة الوصول إلى البيانات الخاصة بي؟أين/كيف تتناسب المستودعات مع MVC؟

  3. يتحدث الكتاب عن استخدام LINQ إلى SQL للتفاعل مع قاعدة البيانات ولكنه ينص على أن LINQ إلى SQL لن يتم دعمه في المستقبل وأن Microsoft ستسقطه من أجل Entity Framework.أين يتناسب Entity Framework مع MVC وكيف أتفاعل معه؟

شكرا مقدما لمساعدتكم!
غير لامع

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

المحلول

  1. MVC هو في الغالب نمط لطبقة العرض، ويركز على التفاعل بين العرض ووحدة التحكم.يمكن اعتبار النموذج كذلك مكونات التطبيق المسؤولة عن الحفاظ على الحالة, ، بما في ذلك المثابرة.

    في تطبيق بسيط، قد يكون النموذج مجرد نموذج LINQ-To-SQL.في تطبيق مؤسسي كبير، قد يحتوي النموذج على طبقة وصول إلى البيانات وطبقة أعمال وطبقة مجال.لا يقيدك ASP.NET MVC بكيفية تنفيذ M.

  2. ال مخزن يعد النمط إحدى طرق تنفيذ جزء الثبات من نموذج M.ال سجل نشط هو آخر.يعتمد النمط الذي تختاره على مدى تعقيد التطبيق وتفضيلاتك.

    نلقي نظرة على الخطوه 3 من برنامج NerdDinner التعليمي حيث يقومون بإنشاء مستودع بسيط باستخدام Linq إلى SQL.

  3. لن يموت Linq to SQL.ستستمر Microsoft في تحسين الجوهر وإضافة طلبات العملاء عندما يكون ذلك منطقيًا ولكن Entity Framework سيكون محور التركيز الأساسي.نلقي نظرة على هذا المنصب ل يتغير LINQ إلى SQL في .NET 4.0.

    يمكن استخدام EF بطريقة مشابهة لـ LINQ إلى SQL، ولكنه أيضًا أكثر مرونة بحيث يمكن استخدامه بطرق أخرى.على سبيل المثال، سيدعم EF4 بشكل أو بآخر استمرارية كائنات POCO الخاصة بك في تصميم يعتمد على المجال بشكل أكبر.

نصائح أخرى

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

هل سيتم إهمال Linq إلى SQL؟
لا ويذكر نفس الكتاب ذلك، كما ذكر Damien Guard (مطور في فريق ADO.NET) في أحد منشورات مدونته أنه سيتم تضمين Linq to SQL في .NET 4.0.

كيف تتفاعل مع إي أف؟
كما تفعل مع Linq إلى SQL.مثل Linq إلى SQL، سيكون Entity Framework هو كيانات التعيين الخاصة بك، وسيتواجد في مشروع النموذج أيضًا.
أتمنى أن يساعدك هذا!

أعتقد أنك مرتبك بعض الشيء بشأن هذه الأشياء، وهم نكون مربكة، لذلك دعونا نتناولها ببطء.

  1. إن بنية N-Tiered وMVC مختلفتان، لكنهما متشابكتان. تتحدث N-Tier عادةً عن فصل الوصول إلى البيانات ومنطق الأعمال وواجهة المستخدم.ومع ذلك، قد يجادل بعض الأشخاص بأنه من المستحيل فصل قوائم BLL تمامًا عن واجهة المستخدم؛يعالج MVC ذلك، بحيث يكون هناك وحدة تحكم مقابلة تتحدث إلى BLL الخاص بك وإلى طريقة العرض الخاصة بك، بدلاً من جعل طريقة العرض الخاصة بك تتحدث مباشرة إلى BLL الخاص بك.

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

  3. يستخدم الكتاب LINQ إلى SQL فقط لشرح ASP.NET MVC بأسرع طريقة ممكنة، ولكنها ليست الطريقة الوحيدة. توقف عن التفكير في تحويل LINQ إلى SQL لمدة دقيقة؛يمكن استخدام ASP.NET MVC سواء كنت تستخدم ORM مثل NHibernate أو تستخدم ADO.NET + DAL Factory العادي أو أي شيء آخر - ما لن تتمكن من استخدامه هو ASP.NET. ObjectDataSources التي تقوم بسحبها وإسقاطها باستخدام واجهة المستخدم الخاصة بك.

أما بالنسبة لإطار الكيان، فقد كتب براد أبرامز دليلاً لطيفًا عنه كيفية استخدام Entity Framework مع ASP.NET MVC, ، يجب أن يغطي هذا سؤالك الأخير.

هث

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

  2. لا يضع إطار عمل ASP.NET MVC أي قيود على طبقة "النموذج"، مما يعني أنه يمكنك استخدام ما تريد بما في ذلك NHibernate أو LINQ إلى SQL أو إطار عمل الكيان.أستخدم LINQ إلى SQL لأنه بسيط.

  3. لست متأكدًا، لم أقرأ هذا الكتاب أبدًا.لقد قمت للتو بتنزيل مشروع Nerddinner الخاص بـ Scott Hanselman من codeplex واستخدمه كدليل لكتابة مواقع ASP.NET MVC.

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