تعرف على ASP.Net,الجزء الثانى:ASP.Net Patterns

Page Controller Pattern

كان فى بداية الأمر, حيث وجود asp (وتسمى ASP Classic ) , يتم خلط الأكواد بعضها ببعض فى صفحة واحدة , ونقصد هنا أكواد Html مع أى كود Script ,أو حتى فى ASP.Net عند إستخدام Inline Code يحدث نفس الأمر .فكانت الحاجة لفصل الأكواد فى أماكن مختلفة , فجاءت فكرة Code-behind , فأصبحت كل صفحة لها ملف كود فى الجوار . هذا الملف هو المتحكم فى طريقة إخراج Html للصفحة وكيف ستتكون الصفحة . هذا الإسلوب فى العمل يتبع إسلوب Page Controller .

فما هو Page Controller Pattern ؟
هى عملية إنشاء ملف أو
Object ليقوم بمعالجة طلب لصفحة واحدة او معالجة حدث داخل هذة الصفحة” .ومن الواضح , أنه نفس التعريف الذى ستنعرف به ملف Code-behind .وهذا أمر طبيعى .لإن ملف code-behind تم إنشائه إعتماداً على إسلوب Page Controller . وعليه, فإن Page Controller تقوم بالعمل على صفحة واحدة فقط . فوجب وجود Controller مصاحب لكل صفحة . وهذا هو حال ملف Code-behind. كما ترى فى الشكل المقابل :

 

هنا يمثل ملف Page1.aspx.cs (ملف Code-behind ) ملف Page Controller . فهناك Controller لكل صفحة على حده . ووظيفته التحكم فى تركيب الصفحة لعرضها للمستخدم .ونقصد هنا بالتركيب إعداد عناصر الـ HTML التى ستظهر فى الصفحة .

ملحوظة: لعلك رأيت كلمةPattern , ترتبط بكلمة أخرى فى عالم البرمجيات و هى design . وتعريف Design and Pattern هو :”أساليب وطرق بمعايير محددة يتم إتباعها لتصميم حل لمشكلة برمجية ”.بالطبع هناك العديد من الكتب التى صدرت فى الحديث عن Design and Pattern , ولن يكفى التعريف الذى قدمناه .و حيث أنها أساليب وطرق فإن هذة الكتب تتحدث عن تلك الأساليب والطرق .

يشترك ملف Code-behind لصفحة 1 مع نظيره لصفحة 2 و3 وغيرهم فى كثير من الأمور , ولعل أبرزها دورة حياة الصفحة , من إنشاء للصفحة وإعطاء قيم إبتدائية لها وتحميلها وحفظ حالتها وأمور اخرى مما سنراه إن شاء الله عند دراستنا لدورة حياة الصفحة .

أليس من البديهى لمن على دراية بامور الوراثة فى عالم البرمجيات أن يقول , “ولما لا نضع تلك المراحل المشتركة فى Interface أو Class ونستخدم الوراثة” . رأى صواب تماماً , وقام به بالفعل فريق تطوير ASP. Net . فتم إنشاء Base Class به تعريف تلك المراحل , وعند إنشاء صفحة جديدة , ترث هذة الصفحة من هذة الـBase Class ,مع إمكانية التعديل فى هذة المراحل بما يناسب هذة الصفحة .

فكانت Class Page هى الـ Base Class . والتى نجدها فى هذا المسار System.Web.UI,Page . حيث نجد أن كل صفحة (Code-behind ) ترث من System.Web.UI,Page . كما ترى فى الصورة :

 

ورجوعاً إلى الدرس السابق أين وجود الـ HttpHandler ؟ ألم نقل أنه المسئول عن معالجة طلب الصفحة وإخراج كود HTML ؟ بلى , قلنا ذلك , إذاً أين هو ؟

تعد هنا Class Page هى HttpHandler . لا عجب , فإن Page ما هى إلا Class تقوم بعمل Implementation لما نعرفه مسبقاً بـ IhttpHandler. فكما ترى فى الشكل التالى :

هذا ما هو بالفعل موجود , ولكن فى المشاريع الكبيرة , قد نجد انه مازال هناك أمور مشتركة بين صفحات الموقع الواحد , ليس دورة حياة الصفحة فحسب .فماذا سيحدث ؟ . هنا متاح لك أن تقوم بعمل Controller وسيط . أى Class وسيط , على مثل هذا الشكل :

 

أذكر يوماً اننى إستخدمت هذة الطريقة , وكان الموقف حينها , أننى أريد أن أعالج نسيان كتابة عنوان للصفحة لأستبدل Untitled Page “ بعنوان دال ذو معنى ,وكان ذلك سيطبق على كل الصفحات , فكان حلاً موفقاً . أن أقوم بمعالجة ذلك فى Class وسيط وهى بدورها ستقوم بالعمل مع كل الصفحات . وتم العمل بنجاح .

 مشاكل Page Controller  Pattern

يصاحب هذا الـ Pattern بعض المشاكل , او دعنا نركز على Classic ASP. Net , فأنت لا تملك التحكم التام فى أكواد HTML . كذلك لاتملك ان تجرى إختباراً دون ان تقوم بإجراء معاينة للمشروع على أرض الواقع .أى أنك لا تستطيع إختبار كود مكتوب فى حدث Button إلا بعد ان تقوم بالضغط على هذا الـButton , وهذا الأمر يمكن ان تنساه عند إستخدام أدوات Unit Testing . فهى تسمح لك بإختبار الكود دون الحاجة إلى أن تقوم بإجراء معاينة أولاً . ولكن المشكلة أن Unit Testing لا تعمل مع ASP . Net . مشكلة أخرى وهى زيادة عدد الملفات المصاحبة لكل صفحة (Code behind ) , مما قد يؤدى إلى وجود بعض الصعوبات فى تقديم يد العون للكود لإجراء إصلاحات عليه . فجاءت لنا ASP. Net MVC .

ASP. Net MVC

تنويه : لن نتاول MVC كدراسة ولكن سنشرح الـ Pattern القائم عليها MVC . وكذلك إساسيات بناء هذة البيئة فقط .

مقدمة :

MVC :إختصاراً لـ Model-View-Controller , ولا تعد إصدار جديداً من Classic ASP. Net , ولكن هى framework قائم بذاته . وتعتبرASP .Net MVC طريقة أخرى واسلوب آخر لتطوير مواقع الإنترنت إعتماداً على ASP. Net ومزاياها الموجودة من قبل . وأخبرت مايكروسوفت عملائها , بأنهما إسلوبين يمكن أن تتبع أحدهما او كلاهما حسب حاجتك والتصميم الذى تراه مناسباً للمشروع الذى تعمل عليه .

تقوم MVC على Pattern يسمى Front Pattern , وهو يقوم على وجود Controller واحد يخدم اكثر من صفحة(View) . كما هو الحال فى الشكل التالى :

 

على الرغم من أن MVC تقوم على Front Pattern إلا أنها فى حد ذاتها هى Pattern ,يقوم على مبدأ الفصل بين اكوادHTML , والتى تعرف بـ (View ) وبين الكود المصاحب للصفحة الذى يدير إدارة هذة الصفحة وردود الأفعال إستجابة للمستخدم والتى يعرف بـ (Controller ) . ويشمل الفصل أيضاً ,طبقة التعامل مع قواعد البيانات والتى تعرف بـ (Model) . وعلى هذا فإن MVC تعمل على ثلاث محاور وهما :Model View Controller . كما بالشكل :

 درس خفيف , ويتبعه إن شاء الله دروس أخرى . تنتاول التالى :

– HttpModules

– HttpHandlers

– Application Life Cycle

-Page Life Cycle

وفق الله الجميع , لما فيه الخير .

10 thoughts on “تعرف على ASP.Net,الجزء الثانى:ASP.Net Patterns”

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s