مدخل إلى MVC من خلال ASP.NET
مقدمة عامّة:الـMVC هو تصميم لصناعة البرامج يعتمد على تقسيم التطبيق الى ثلاث أجزاء: Model,View,Controller.
اتباع هذا التصميم له فوائد كبيرة، فهو يمكن من بناء تطبيق ويب متعدد الطبقات بشكل محكم و منظم.
-Model: تخصص هذه الطبقة للتعامل المباشر مع مصدر البيانات(طبقة الأعمال) و هي تتكون عادة من فئات Class Libraries.
-Controller: هذه الطبقة هي المسؤولة عن ادارة الطلبات القادمة من متصفح العميل، تقوم هذه الطبقة باستقبال الطلبات من العميل ثم تقوم بالعمليات المنطقية المناسبة و تطلب البيانات من طبقة الأعمال (Model) ثم ترسل البيانات المراد عرضها على المستخدم الى الطبقة View.
-View: هذه الطبقة هي طبقة العرض و مهمتها الوحيدة هي عرض البيانات فقط، تستقبل البيانات من الـController ثم ترسلها الى المتصفح على شكلHTML
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]في تطبيقات الويب العادية يختلف التصميم الثلاثي الطبقات عن هذا التصميم، فطبقة العرض تتعامل مباشرة مع طبقة الأعمال كما أنها الطبقة المسؤولة عن استقبال الطلبات Requests من متصفح العميل و هو ما يضطرنا الى كتابة أكواد التحقق Validation code و بعض العمليات المنطقية في طبقة العرض، مما يؤدي الى صعوبة تنقيح الأخطاء في التطبيق نظرا لاختلاط كود التطبيق مع كود Html.
في تطبيقات MVC طبقة العرض مهمتها الوحيدة هي استقبال البيانات من الكنترولر و عرضها على العميل في حالة Response ، أو تقوم بارسال البيانات التي أدخلها العميل على الكنترولر المناسب في حالة Request، لذلك فان أغلب الكود في هذه الطبقة هو كود HTMLأما كود ASP.NET فقليل جدا مقارنة بتطبيقات Web Forms.
تطبيق MVC من خلال ASP.NET:
لتسهيل تطبيق هذا التصميم لمبرمجي ASP.NET قامت مايكروسوفت بتطوير اطار عمل MVC Framework الذي يمثل بيئة سهلة و قوية لانشاء تطبيقات MVC باستخدام ASP.NET.
هذا الفريمورك مازال في اصداراته الأولى عند كتابة هذه السلسلة من الدروس و لم تصدر النسخة رقم 1 بعد انما كل الاصدارت عبارة عن Preview. الاصدار الكامل الأخير كان Preview 4 و قد صدر الآن الاصدار Beta من النسخة Preview 5 و الذي سنعتمده في الأمثلة في هذه الدروس.
قبل الدخول في تفاصيل البرمجة باستخدام هذا الفريمورك الجديد يجب أن تعلم أمرا مهما:
- برمجة تطبيقات MVC يختلف كثيرا عن برمجة تطبيقات Web Forms و ان كانت كل مزايا و امكانيات ASP.NET مدعومة في MVC إلا أن آلية عمل الصفحات و ادارة الـRequests تختلف اختلافا جذريا.
هل يعني هذا أن مايكروسوفت تنوي التخلي عن تطبيقات Web Forms لحساب MVC ؟ و الاجابة بالطبع لا، فهذا الاطار الجديد جاء لتسهيل تطبيق تصميم MVC على تطبيقات ASP.NET و ليقدم حلولا للمشاكل و التعقيدات الموجودة في تطبيقات Web Forms و ليس تعويضا لها، و لعل أبرز هذه المشاكل صعوبة الفصل التام بين الطبقات و آلية عمل الصفحات غير المعهودة فقد كانت فكرة غريبة للكثير من مبرمجي تطبيقات الويب حتى المحترفين منهم أن تقوم ببرمجة اجراء ينفذ عندما يقوم العميل بالضغط على زر ما(البرمجة المسيرة بالأحداث Events Driven Programing).
و هذا هو تعريف مايكروسوفت لهذا الاطار الجديد:
ASP.NET MVC provides a framework that enables you to easily implement the model-view-controller (MVC) pattern for Web applications. This pattern lets you separate applications into loosely coupled, pluggable components for application design, processing logic, and display.
ASP.NET MVC is not a replacement for Webforms. It provides an alternative choice when designing a Web application. Using ASP.NET MVC offers the following advantages:
• It enables you to achieve and maintain a clear separation of concerns
• It facilitates test driven development (TDD)
• It provides more control over the URLs you publish in the application and over the HTML that is emitted by the application
ماالذي سأستفيده من استخدام MVC Framework:كما هو واضح من كلام مايكروسوفت فإن أول فائدة ستجنيها هي التصميم القوي للتطبيق الذي يمكنك من اكتشاف و تنقيح الأخطاء بسهولة.
فائدة أخرى في استخدام تطبيقات MVC و هي آلية عمل العناوين URL في التطبيق التي تتميز بالوضوح حيث يمكنك التحكم في عناوين صفحات موقعك بمرونة كبيرة. هذه النقطة مفيدة جدا لفهرسة محتوى موقعك بشكل أفضل من قبل محركات البحث، مثلا يفهرس محرك البحث صفحة عنوانها
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بشكل أفضل من صفحة عنوانها
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] حتى و ان كانتا تحملان نفس المحتوى.
و من الميزات في استخدام MVC أن كود HTML الذي يرسل لمتصفح العميل أوضح بكثير من كود HTML الذي تعيده تطبيقات Web Forms العادية، فالأول لا يحتوي على أية أكواد JavaScript اضافية لادارة ViewState.
ما الذي أحتاجه لأبدأ برمجة تطبيقات MVC:- تحتاج الى نسخة فجوال ستوديو 2008 أو Microsoft Visual Web Develper 2008 Express التي أصبحت مدعومة في هذا الاصدار للفريمورك.
2- تحتاج الى تنصيب MVC Framework الذي يمكنك تحميله من
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].
الفريمورك يقوم بتنصيب بعض الأسمبلي التي تحتوي على الفئات التي تحتاجها لبناء التطبيق، كما تقوم باضافة Template لمشروع MVC Application لاستخدامه في الفجوال ستوديو يحتوي على الملفات اللازمة لأي تطبيق MVC.
3- لا تشترط معرفة مسبقة بالASP.NETلكن معرفة الأساسيات ضرورية.