التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقدمة تعريفيه بـ ASP.Net - الجزء الثانى - ASP.Net Patterns
#1
كاتب الموضوع : Ahmed Moosa

Page Controller Pattern

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

فما هو 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 ومزاياها الموجودة من قبل . وأخبرت مايكروسوفت عملائها , بأنهما إسلوبين يمكن أن تتبع أحدهما او كلاهما حسب حاجتك والتصميم الذى تراه مناسباً للمشروع الذى تعمل عليه .

ملحوظة : framework ,يقصد بها مجموعة من الـمكتبات(Classes ) التى يعاد إستخدامها لإنشاء تطبيقات .

تقوم 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


وفق الله الجميع , لما فيه الخير .
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
مقدمة تعريفيه بـ ASP.Net - الجزء الثانى - ASP.Net Patterns - بواسطة Raggi Tech - 15-10-12, 10:34 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة تعليمية] مقدمة عن تقنية ASP.NET ahmadczar1981 0 1,066 19-09-23, 02:24 PM
آخر رد: ahmadczar1981
  الجزء الثانى - إستدعاء دالة Server-Side من خلال Client-Side RaggiTech 0 2,541 15-10-12, 11:18 AM
آخر رد: RaggiTech
  الجزء الأول- إستدعاء دالة Server-Side بإستخدام Client-Side RaggiTech 0 2,571 15-10-12, 11:16 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net- الجزء السادس - Page Class RaggiTech 0 2,119 15-10-12, 10:43 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net - الجزء الخامس--ِASP.Net Compilation RaggiTech 0 2,388 15-10-12, 10:41 AM
آخر رد: RaggiTech
  مقدمة تعريفيه بـ ASP.Net - الجزء الرابع-- Global.asax-Modules-Handlers RaggiTech 0 2,414 15-10-12, 10:39 AM
آخر رد: RaggiTech
  مقدمة تعريفيه بـ ASP.Net - الجزء الثالث-HttpContext -HttpApplication RaggiTech 0 2,300 15-10-12, 10:36 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net - الجزء الأول RaggiTech 0 2,209 15-10-12, 10:30 AM
آخر رد: RaggiTech
  مقدمة إلى Web Services RaggiTech 0 2,717 14-10-12, 03:17 PM
آخر رد: RaggiTech
  عمل Web Service خاصة بك من خلال .net - الجزء الثاني RaggiTech 0 2,554 14-10-12, 03:14 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم