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

Global.asax , HttpModules , HttpHandlers


ما زلنا فى هذة السلسلة من المقدمة التعريفية بـ ASP. Net ,إستعرضنا معاً الجزء الأول , الجزء الثانى , والجزء الثالث , وفى الجزء الأول من هذة السلسة ذكرنا خط سير HttpRequest ,حيث تبدأ الرحلة من جهاز المستخدم إلى ان تصل إلى الخادم , ثم تعود للمستخدم مرة أخرى بناتج الطلب وهو HttpResponse . أثناء هذة الرحلة ذكرنا ان هناك ما يعرف بـ HttpModules وHttpHandlers , وذكرنا الكثير من المسميات التى لم نفصل فيها مثال Global.asx , HttpModules, HttpHandlers ونأتى هنا للتفصيل والله المستعان .

Global.asax

مقدمة .

ما هو Global.asax ؟

كيف نستخدم Global.asax فى تعريف الإحداث ؟

كيف نستخدم Global.asax فى ضبط إعدادت عامة لكامل التطبيق ؟

مقدمة :

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

يوجد هناك مكانين , تستطيع من خلالهما التعامل مع الإعدادت والأحداث العامة للتطبيق. وهما HttpModules , وملف Global.asax وهنا سنتعرض لملف Global.asax وسنعود قريباً إن شاء الله إلى HttpModules .

تعريف ملف Global.asax :

هو ملف إختيارى يضم إعدادت وأحداث عامة لكامل التطبيق الواحد, ويمكن أيضاً أن يضم أحداث تخص HttpModules آخرى , كما هو الحال فى أحداث Start ,End الخاصة بـ SessionModule , له إسم وهو Global.asax, ولابد أن يحتفظ بهذا الاسم , ولابد أيضاً أن يوجد فى أعلى مستوى لتداخل ملفات التطبيق , أى أنه لا يمكن أن يوضع فى مجلد فرعى داخل الموقع.ويأتى على شكلين , إما أن ياتى فى ملف واحد (Markup + Code ) , أو ملفين منفصلين (Markup) + (Code-behind) . كما نذكر أيضاً انه يسمى بـــــ Global Application Class إذا ما حاولت أن تضيفه من نافذة Add New Item.

هذا الملف , كما ذكرنا هو Class ترث HttpApplication , وحين ذكرنا فى درو ة حياة الـ Request , انه يتم إنشاء Instance من HttpApplication , فعند وجود هذا الملف فإن هذا الـ Instance يتم إنشائه من هذة الـ Class التى فى الواقع تسمى Global . وحيث أنه ملف إختارى , أى ربما لن يقوم المبرمج بإضافته!

.فإذا لم يكن هذا الملف موجوداً ضمن ملفات الموقع ,فإن HttpRuntime تقوم بعمل Instance من الإفتراضى عندها وهى HttpApplication Class .

تعريف متغيرات عامة :

يتم ذلك بتعريف متغيرات بشكل عادى جداً وما عليك إلا ان تستخدم إسم الClass للحصول على قيمة المتغير (Global.YourVariable ) , والطريقة الثانية هى Object Server Tags , وتأتى على هذا الشكل(<Object>), وتستخدم إنشاء Instance من Class سواء كانت .Net Framework Class أو كانت COM . يحدد ذلك الخصائص المتاحة فى Object Tag مثال Class لتحدد انك تستخدم .Net framework أو ClassId و ProgId لتعريف COM Component . وكذلك من الخصائص المتاحة أيضاً نطاق تعريف المتغير وتعرف بـ Scope والنطاق المتاح إما ان يكون حسب Session أو Application او AppInstance .لتحدد كيفية الوصول إلى الـ Instance الذى قمت بتعريفه والتعامل معه .نذكر أنه فى حالة Application او Session ستجد المتغيرات الخاصة به داخل Collection بإسم StaticObjects وهى خاصية تتفرع من كلاهما . اما AppInstance , فتجد ها فى نفس مكان تعريفهما لإن appinstance , تدل على أن المتغيرات لا تتشارك مع غيرها , أى لا توجد فى مكان آخر .

ملحوظة :-

يمكنك إستخدام Object Server Tage مع صفحات ASPX , لنفس الغرض وهو إنشاء Object من Class .

اما الأحداث العامة :-

نجد بها أحداث التطبيق التى تم ذكرها فى الجزء السابق وكذلك مضافاً عليها الأحداث والدوال الخاصة بـ Modules آخرى . مثال أحداث SessionModule او دالة تخص كمثال Routing .

Modules and Handlers


مقدمة

ما زلنا فى هذة السلسلة من المقدمة التعريفية بـ ASP. Net ,إستعرضنا معاً الجزء الأول , الجزء الثانى , والجزء الثالث , وفى الجزء الأول من هذة السلسة ذكرنا خط سير HttpRequest ,حيث تبدأ الرحلة من جهاز المستخدم إلى ان تصل إلى الخادم , ثم تعود للمستخدم مرة أخرى بناتج الطلب وهو HttpResponse . أثناء هذة الرحلة ذكرنا ان هناك ما يعرف بـ HttpModules وHttpHandlers , ونأتى هنا للتفصيل والله المستعان .

ذكرنا من قبل ان HttpModule , هو بمثابة مساعد للـ HttpApplication ,والذى هو المسئول عن إدارة التطبيق بجميع صفحاته (التطبيق نقصد به الموقع ). وسنتعرض للـ HttpModule سواء أكان هذا المساعد قد قمنا نحن بإنشائه, أو كان موجوداً بالفعل من قبل , أى تم بنائه بواسطة ASP. Net .وذكرنا أيضاً أن HttpHandlers هى نقطة النهاية التى يصل إليها Request . ليقوم بإلرد على هذا الطلب بإنتاج HttpResponse , وسيكون به مخرجات العملية . ولا نقول انه أخر مرحلة فى رحلة الطلب ,ولكن نقول أنه المسئول عن معالجة الطلب وإخراج ناتج .وسنعرف فيما بعد , انه ما هو إلا جزء من دورة حياة التطبيق , وسنرى كيف يأخذ أمر التنفيذ فى أحداث التطبيق العامة. وسنتطرق إلى بعض الأمثلة ومزيد من التفصيل حولهما .

HttpModules


ما هو HttpModule ؟

لماذا HttpModules ؟

Built-in Modules ؟

كيف تقوم بإنشاء HttpModule ؟

علاقة HttpModules بـHttpApplication وكيف يستدعى ؟

ما الفرق بينه وبين global.asax ؟

ما هو HttpModule ؟

فى حقيقة الأمر , HttpModule ما هو إلا Class تقوم بعمل Implement لما يعرف بــIHttpModule وهى Interface بها فقط دالتين هما Init و Dispose . و سنعرف ما فائدة كلاهما بعد قليل , ولكن تأمل الصورة التالية :



دالة Dispose :

ووظيفتها تفريغ محتويات الذاكرة من الـ Objects التى تقوم بتحديدها والتى تم إستخدامها من قبل فى هذا الـ Module .

دالة Init :

وظيفتها تسجيل الأحداث داخل الـ Instance المأخوذ من HttpApplication . وكما ترى هذة الدالة, فإن HttpApplication تمرر نفسها لهذة الدالة .

ولتكتمل الصورة لديك , تأمل الصورة التالية, لترى كف يتم تسجيل الأحداث داخل هذة الدالة :-



Built-In Modules

كما أنه يجب عليك أن تعلم أن هناك Modules قد تم إعدادها مسبقاً من خلال ASP. Net وأخرى يتم إعدادها من قبل المبرمج حسب الحاجة . وإن كنت تذكر خصائص HttpApplication , فقد رأيت فيها خاصية إسمها Modules وهى من نوع HttpModulesCollections . يتم تجميع كل الـ Modules (ما هو موجود بالفعل , وما قمت بإنشائه ) ووضعهم فى داخل هذة الخاصية كما سترى فيما بعد . والهدف من إنشاء هذة الـ Modules , هو القيام ببعض الأعماللخدمة الطلب الحالى , ولا ننسى أنه أيطلق على هذة الـ HttpModules إسم Filter , أى أنها تقوم بعمل تنقية للطلب الحالى . والتنقية هنا هى إجراء عمليات غرضها التأكد من عدة أمور كتسجيل وحجب أومنع وإخفاء وإظهار وأشياء كثيرة .

وأمثال هذة الـ Modules التى تم بنائها من خلال ASP. Net تلقائياً ودون تدخلاً منك ما يلى :-

OutputCacheModule
SessionModule
WindowsAuthenticationModule
FormsAuthenticationModule
PassportAuthenticationModule
RoleManagerModule
UrlAuthorizationModule
FileAuthorizationModule
AnonymousIdentificationModule
ProfileModule
ErrorHandlerModule
ModuleServiceModel
ScriptModule
DefaultAuthenticationModule

كما ترى فهى مسميات قد تعاملت مع بعضهم من قبل, ولعلك تتساءل أين تجدهم , أو فى أى مكان نستطيع أن نلقى نظرة عليهم , بالفعل سأخبرك , قد تحتاج أولاً أن تذهب إلى Machine.Config , وترى الجزء الخاص بـ HttpModules .ولكن هؤلاء من قام النظام بإنشائهم من أجلك , ولكن ما قمت أنت بإنشائهم فسوف تعرف مكانهم , لإنك أنت من سيقوم بكتابة النص الخاص بتسجيلهم, حتى يتم التعرف عليهم.

ملحوظة :-

يمكنك ان تحصل على قائمة بإسماء الـ Modules الخاصة بك , من خلال إستخدام الخاصية Modules الموجودة فى HttpApplication والتى ورد ذكرها فى الجزء السابق , فقم بالعودة إليه .ولاحظ أنها Collection , أى يمكنك إخراج ما بها بإستخدام For, Foreach وما شابه ذلك من جمل التكرار.

كيف تقوم بإنشاء HttpModule ؟

عند حاجتك لإنشاء HttpModule , فإنك أولاً تحتاج أن تنشأ Class ,ثم تسجل بها بعض أحداث HttpApplication , ثم بعد ذلك , يأتى دور تسجيل بيانات هذا الـ HttpModules فى ملف Web.config , وإليك الخطوات بالترتيب :-

1- إنشاء Class ترث من IHttpModule .

2- تسجيل بعضاً من أحداث HttpApplication لنقوم بمعالجة ما نريد فى هذة الأحداث , وذلك فى دالة Init .

3- تسجيل ما قمت بإنشائه فى ملف Web.Config .

وحيث أنك قد رأيت الخطوة الأولى والثانية مسبقاً فإليك الثالثة :



فكما ترى , Name لتحديد الإسم , Type لتحديد إسم الـ Assembly الموجود فيه الـ HttpModule .

ما هى العلاقة بين HttpModules وبين HttpApplication ؟

إلى هنا , أصبح لدينا علم بإن هناك مجموعة من HttpModule فى ملف Machine.Config وكذلك ما نقوم نحن بتعريفه نجده فى ملف Web.Config , فما العلاقة بينهم وكيف يتم الجمع بينهم وكذلك ما العلاقة بين HttpModules وبين HttpApplication ؟

فى الواقع , هى دورة حياة , وإن شئت أطلق عليها "سلسلة أحداث أو خطوات او دوال تنفذ بترتيب مسبق“. ضمن هذة الأحداث تستدعى دوال خاصة بـ HttpApplication يقوم من خلالها بتجميع كل الـ Modules المتاحة , ومن ثم إستدعاء الدالة Init الخاصة بـ HttpModule , وإليك بالفعل السيناريو القائم عليه العمل من خلال الشكل التالى :



بفضل الله , قد يكون الشكل موضحاً لما نريد أن نقوله , فما الأمر إلا دالة تنادى على دالة أخرى وتقوم ببعض الأعمال بترتيب معد مسبقاً , وذلك حتى تتوافق العملية منطقياً , فالمنطق هنا , أنه لابد من الكشف أولاً عن كل الـ Modules , ومن ثم ,تجميع بياناتهم , وبعدها يمكننا أن نفعل بهم ما نشاء , ولكن , كل ما نريده هنا هو إعطائهم الأمر بالتشغيل. وفى طبيعة الأمر , نجد أن وظيفة HttpModules الفعلية, تسجيل أحداث داخل دورة حياة التطبيق فقط , وهذة الأحداث بدورها عند التنفيذ , تقوم بعمل ما قمنا بإنشائها من أجله.

مستخلص هذا الكلام , نخرج بتعريف للـ HttpModules , ونقول أنها , Class تقوم بعمل Implement لما نعرفه بإسم IHttpModule , الهدف منها تسجيل أحداث ضمن أحداث الـ HttpApplication .

ما الفرق بين HttpModules وبين ملف Global.asax ؟

قد يقول قائل , لماذا أستخدم HttpModules ,وبالفعل يوفر لى ملف Global.asax نفس المهمة , نعم فى كلاهما , انت تقوم بتسجيل أحداث الـ HttpApplication . ولكن هناك ما نعرفه بإسم "Reusable Code” . نقصد " إعادة إستخدام " , وكذلك بعض الإستقلالية عند العمل مع HttpModules , فإذا تحدثنا عن Module يقوم بعمل حجب الموقع من خلال IP المستخدم . ونريد إعادة إستخدامه . فهل يمكن ان نأخذ ملف Global.asax , وقد يكون به معلومات تخص مشروع آخر , وبالفعل كذلك . فنجد ان HttpModule يوفر لنا الإستقلالية , وكذلك قبول العمل على أكثر من مشروع .فيمكن أيضاً ان نقوم بتضمينه داخل Assembly File ,وما يستوجب فعله هو ,تسجيله فى ملف Web.Config .

HttpHandlers



ما هو HttpHandler ولماذا ؟

متى يتم تنفيذه ؟

كيف تستخدم HttpHandler ؟

أمثلة على إستخدام HttpHandler ؟

كما رأينا ان الطلب الذى يصل إلى الخادم يحتاج إلى ان يتم معالجته , فالمسئول عن معالجة الطلب وإخراج ناتج يسمى Handler , وتمتلك ASP.Net العديد من HttpHandler المبنية بداخلها , والتى تعتنى بمعالجة العديد من الطلبات المتواجدة فى ASP.Net , نجد ذلك فى صفحات ASPX , وكذلك تعقب الصفحات المعروف بـTrace متمثلة فى محتوى يتم تضمينه داخل صفحة ASPX أو إعلان إستقلاله داخل صفحة خاصة به تحت إسم Trace.axd ,وغيرهما مما يمكن لك ان تعرفهما مع الوقت ومع تصفح الجزء الخاص بـ Mapping Handlers فى نافذة إدارة الخادم IIS .

حتى تكتمل الصورة لديك ,كيف يقوم الخادم (IIS ) بتحديد المعالج(Handler) الذى سيقوم بمعالجة الطلب ؟ , لو بدأنا الأمر من أوله لا نجد إلا مستخدم قام بكتابة عنوان موقع فى شريط العنوان الخاص بالمتصفح , لينشأ بذلك HttpRequest يحمل معلومات عن الصفحة المطلوبة وعن الـ Client ومعلومات آخرى , ولكن ما يهمنا هنا هو عنوان الصفحة المطلوبة , فهنا يصل إلى الخادم عنوان الصفحة , فيقوم بفحص الإمتداد الخاص بالصفحة , ومن ثم , توجيه الطلب إلى المعالج (Handler )المسئول عن معالجة هذة النوعية من الطلبات .

وما وراء المشهد هنا , أن الأمر ليس إلا Class تقوم بتنفيذ مجموعة من الأوامر لتقوم بالرد على الطلب وإخراج ناتج وإنتاج HttpResponse. هذة الـ Class لها شروط . هذة الشروط أولها أن تقوم بعمل Implement لما يعرف بـ IHttpHandler , وهى Interface سنتحدث عنها بعد قليل . ونذكر أيضاً الإختيار الثانى وهى ان تقوم هذة الـ Class بعمل Implement لما يعرف بـ IAsyncHttpHandler ,وذلك فى حالة أن الطلب غير متزامن مع غيره وهو ما يعرف بـ asynchronous .

محلوظة:-

معنى أن الطلب من نوع asynchronous . فإننا نقصد أن الطلب يدعم تنفيذ مهامه دون الحاجة إلى وقف سير العمليات او الإنتظار حتى الإنتهاء من تنفذ عملية ما لتبدء عمليه آخرى , أى سنحصل على أكثر من عملية يتم تنفيذهما فى نفس الوقت. دون الحاجة إلى إنتهاء واحدة حتى تبدأ الأخرى ويعرف هذا asynchronous ,ولكن الأول يعمل بطريقة التتابع وهى synchronous .وهى ان تنتهى مهمه لتبدأ آخرى وذلك المتبع فى العام .ويستخدم asynchronous فى العمليات أو المهام المطولة , اى تلك التى تأخ الكثير من الوقت فى تنفيذها .

ثانى هذة الشروط أن يتم تسجيل هذة الـ Class فى إعدادات ASP.Net على أنها ستعمل كمعالج (Handler) لطلب من نوع معين ويحدد هذا النوع ضمن الإعدادت .ولا يهم كيفية المعالجة , فهذا يتوقف على ما تريد. ويتم هذا التسجيل من خلال ضبط الإعدادات فى ملف Web.Config المتواجد ضمن ملفات الموقع الذى تعمل عليه .

ملحوظة:-

Web.Config هو الملف المسئول عن إعدادات التطبيق وكذلك إدارة الموقع من جميع الجوانب , كجوانب الحماية والإعدادت العامة , وتسجيل إعدادات تخدم كامل الصفحات,وتسجيل العديد من الـ HttpHandler والـHttpModules وغيرهم الكثير. ويعتبر بمثابة توجيهات وإرشادات , بل وتعليمات لابد أن يأخذها الخادم فى إعتباره عند معالجة الطلبات .وهذة التعليمات قد تنص فى بعض الأحيان إلى أن يصدر الأمر للخادم بأن يقوم بتغطية ما لديه من إعدادات لتحل محلها الأعدادات الجديدة المعرفه داخل ملف Web.config.

ما هى IHttpHandler ؟

من إسمها نجد انها تبدأ بأول حرف وهو I والذى يشير فى بيئة .Net على انها Interface . نعم هى Interface , تحتوى على دالة واحدة وكذلك خاصية واحدة وهما على التوالى ProcessRequest و IsResuble .

فالدالة Process Request من المفترض ان يكون بها خطوات أو إجراءات معالجة الطلب . فإذا أخذنا طلباً لصفحة ASPX , نجد أن دورة حياة الصفحة ASPX ينفذ هنا فى هذة الدالة , وبالفعل إذا أردت ان تنشأ Handler ليعالج نوعية من الطلبات فما عليك إلا أن تكتب الكود الخاص بك هنا .

اما الخاصية IsResuble , نعم الإسم دال على معناه , وهو "هل يعاد استخدامه " ,ولكن من هو الذى سيعاد إستخدامه ؟! , من سيعاد إستخدامه هنا هو الـ Instance الذى تم إنشائه من هذا الـ Handler . بمعنى انه, إذا كانت هذة الخاصية بـ True , فإن هذا الـ Instance سيتم الإحتفاظ به فى الذاكرة ليقوم بخدمة طلبات آخرى . وغالباً ما يتم ذلك فى الطلبات المتكرره كثيراً من نفس النوع . وبالطبع إذا كانت الخاصية تعود بالقيمة False فإن الـInstance سيقوم بخدمة طلب واحد فقط .

متى يتم الـHttpHandler ؟

لو تراجعنا قليلاً إلى الجزء السابق ورأينا دورة حياة التطبيق وتاملنا فى الأحداث ,وخاصةً عند الحدث MapRequestHandler الذى يعلن عن تحديد الـ Handler الذى تم إعداده ليقوم على خدمة الطلب الحالى,ونجد أن الخطوة التالية لذلك هو إنشاء Instance منه , ومن ثم إعطائه الأمر بالتنفيذ , وذلك يكون من خلال إعطاء الأمر بالتنفيذ للدالة السابق ذكرها وهىProcessRequest.والتى تقوم بدورها فى معالجة الطلب وإخراج ناتج ليتم إنتاج HttpResponse

ما هو Generic Handler ؟

قامت ASP.Net بتمكين مطورى المواقع بعنصر جديد وهو Generic Handler والذى يمكن أن يستخدمه المطور ليعالج أو يخدم أى طلب من أى نوع ,كيفما شئت, بمجرد أن تضيف هذا العنصر من Add New Item . وما هو إلا نموذج جاهز يمكنك من العمل على HttpHandler

كما يمكن تصفحة والتعامل معه كأنه صفحة مستقلة , ومما يزيده مرونة , انه لا يحتاج أن تقوم بتسجيله فى ملف Web.config. ولكن أهذا يعنى أننا لا نحتاج إلى الخطوة التى تنص على تسجيل HttpHandler فى Web.config , كلا …........ ! , أنت تحتاج دوماً إلى هذة الخطوة . وإن إفتقدتها هنا , فهذا لإن Generic Handler يقوم بخدمة الطلبات, أو إن شئت قل ,صفحة تسمى Handlername.ashx , ولكن قد تحتاج إلى تقوم بخدمة طلب ما يقوم على صفحات rss أو img أو شئ آخر (الأمر لا يتوقف عند إسم بعينه) . فعليك ان ترشد الخادم إلى أن هذة النوعية من الطلبات , تتم معالجته بـالــClass التى إسمها كذا . على سبيل المثال , أن نقول للخادم ,أن أى طلب لصفحة تحمل إمتداد rss , كمثال صفحة(filename.rss ) قم بخدمة الطلب من الـClass صاحبة الإسم rssHandler (وبالفعل نحن من قام بإنشائها).

كيف نستخدم HttpHandler ؟

إليك الأمر فى خطوات :-

1- إنشاء Class وعمل Implement لــ Interface ,قد عرفناها بإسم IHttpHandler .

2- كتابة الإجراءات التى تريد القيام بها لخدمة الطلب داخل دالةProcessRequest .



3- التسجيل داخل ملف Web.config . وإليك الشكل التالى :-



ومن هنا إذاكان الإمتداد (Extension) المذكور بالأعلى هو rss على سبيل المثال , فإننا عندها يمكن أن نصل إلى ملف بهذا الاسم عبر المتصفح (LastNews.rss) ليكون الرابط هكذا :- http://localhost/TestAhmed/LastNews.rss .وبالفعل ليست هناك صفحة أو ملف فى الواقع بهذا الاسم .ولكن ما سيتم عرضه فى الصفحة هو ناتج تنفيذ دالة ProcessRequest داخل الـClass الذى قمنا بإنشائه .

Sessionstate وموقفها من HttpHandler ؟

قد نحتاج إلى إستخدام Session والبيانات المخزنة بها داخل الـ Handler الذى نعمل عليه ,فلو أنك قمت بإستخدام الـ Session فى مهمتك ,لخرج لك خطأ , تم إصداره ليبلغك انها فارغة . أى ان الــSession فارغة ,مع العلم أنك بالفعل قمت بتخزين قيمة فيها .ولكن ما يحدث , هو أن الـHandler لا يملك إفتراضياً التعامل مع Session , ووجب علينا إعلامه بذلك .

ما يقوم بإعلام الـ Handler بمراعاة إعطاء تصريح لقرءاة وكتابة بيانات إلى SessionState هى Interface تسمى IRequiresSessionState. وليس لديها أى دوال او خصائص كما هو الحال مع أى Marker Interface مثلها . فلا تحتاج إلى كتاية أكواد , غير أنك تقوم بإعلان إستخدامها بجانب الـ Class فقط .

ملحوظة :-

يوجد ما يسمى بـ Marker Interface , يتم إستخدامها كأى Interface عادية .إلا أنها لا تحتوى على دوال أو خصائص , غير انها تقوم بإعلام الـ Runtime ببعض الأشياء .على سبيل المثال INamingContainer ,والتىتقوم بضمان وجود ID مميز لكل أداة داخل الصفحة أو الأداة التى تحتوى على أدوات بداخلها وتقوم بإنتاج Namespace وهمى لكامل أدوات الصفحة و سنراها فى أجزاء قادمة فى مزيد من التفصيل إن شاء الله . وبالطبع , ما نحن بصدده الآن وهى IRequiresSessionState , والتى تعلن عن حاجة الـ Handler إلى القراءة والكتابة من وإلى SessionState .

[B]نهاية هذا الجزء[/b]

إلى هنا نأتى إلى نهاية هذا الدرس , وإن شاء نلتقى فى الجزء القادم حول إنشاء الصفحة وإعدادها للبدء مروراً بدورة حياة الصفحة وما يجب علينا فى هذة المراحل ومن ثم الخوض فى آلية عمل الصفحة من الداخل ومن الخارج .وكذلك الخوض داخل عملية الـ Rendering وإنتقال الصفحة من الخادم فى عملية Postback وما أصل الحكاية .ثم كيف تسافر فى رحلة إلى الخادم وكيف ينتج عن ذلك تنفيذ حدث ما خاص بما قد تسبب فى حدوث Postback . وغيرها الكثير فى أجزاء قادمة إن شاء الله والله المستعان .
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثانى - إستدعاء دالة Server-Side من خلال Client-Side RaggiTech 0 617 15-10-12, 11:18 AM
آخر رد: RaggiTech
  الجزء الأول- إستدعاء دالة Server-Side بإستخدام Client-Side RaggiTech 0 617 15-10-12, 11:16 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net- الجزء السادس - Page Class RaggiTech 0 466 15-10-12, 10:43 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net - الجزء الخامس--ِASP.Net Compilation RaggiTech 0 594 15-10-12, 10:41 AM
آخر رد: RaggiTech
  مقدمة تعريفيه بـ ASP.Net - الجزء الثالث-HttpContext -HttpApplication RaggiTech 0 456 15-10-12, 10:36 AM
آخر رد: RaggiTech
  مقدمة تعريفيه بـ ASP.Net - الجزء الثانى - ASP.Net Patterns RaggiTech 0 414 15-10-12, 10:34 AM
آخر رد: RaggiTech
  مقدمة تعريفية بـ ASP.Net - الجزء الأول RaggiTech 0 405 15-10-12, 10:30 AM
آخر رد: RaggiTech
  مقدمة إلى Web Services RaggiTech 0 948 14-10-12, 03:17 PM
آخر رد: RaggiTech
  عمل Web Service خاصة بك من خلال .net - الجزء الثاني RaggiTech 0 756 14-10-12, 03:14 PM
آخر رد: RaggiTech
  استخدام WebService خاصة بك في مشروعاتك الفعلية - الجزء الثالث RaggiTech 0 522 14-10-12, 03:13 PM
آخر رد: RaggiTech

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


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