wait لطفا صبر کنید
01 بهمن 1395
صفحه اصلی  » مقالات
1394/01/15
6661
10

دوره حیات برنامه های تحت وب

دانستن این مطلب که سرور وب با درخواست های دریافت شده از کاربران برنامه تحت وب چگونه رفتار میکند و برای تولید هر یک از صفحات وب و ارسال پاسخ برای کاربران چه مراحلی را طی میکند، به درک بهتر و تولید کاراتر سیستم های تحت وب کمک شایانی میکند.

دانستن اين مطلب كه سرور وب با درخواست هاي دريافت شده از كاربران برنامه تحت وب چگونه رفتار ميكند و براي توليد هر يك از صفحات وب و ارسال پاسخ براي كاربران چه مراحلي را طي ميكند، به درك بهتر و توليد كاراتر سيستم هاي تحت وب كمك شاياني ميكند.

در مطلب كوتاه زير مراحل رسيدگي به يك درخواست توسط برنامه وب بررسي شده است. در واقع مي توان گفت مراحل زير نمايش دهنده دوره حيات برنامه وب مي باشند. يعني از زماني كه برنامه اولين درخواست را از مرورگر كاربر دريافت كرده و به آن رسيدگي مي كند.

در ادامه مطلب، دوره حيات صفحات asp.net مورد بررسي قرار گرفته است.

مرحله اول:

كاربر درخواست خود را به IIS ارسال مي كند. سپس IIS بر اساس پسوند صفحه درخواستي كاربر، بررسي مي كند كه درخواست كاربر را به كدام يك از dllهايش ارسال كند (به اين دسته از dll ها dllهاي ISAPI مي گويند). به عنوان مثال اگر صفحه درخواستي يك صفحه ‘.aspx’ باشد، ان درخواست به ‘aspnet_isapi.dll’ ارسال مي شود.

مرحله دوم:

اگر اين اولين درخواست ارسال شده به سايت باشد، كلاسي به اسم application manager يك قلمرو برنامه (application domain) براي اجراي وب سايت ايجاد مي كند. در هر سرور براي هر يك از سايتها يك قلمرو جداگانه داريم. بدين ترتيب سايتها از يكديگر ايزوله شده و اجراي سايتها با يكديگر تداخل پيدا نكرده و اگر مشكلي در اجراي يك سايت ايجاد شود بر روي ديگر سايتها تاثير منفي نخواهد گذاشت.

مرحله سوم:

در اين مرحله App domain ايجاد شده در مرحله قبل، يك محيط ميزباني (hosting environment) براي برنامه ايجاد خواهد كرد. منظور از محيط ميزباني، كلاس ها، توابع و سرويس هايي هستند كه براي مديريت برنامه وب استفاده مي شوند. از شي هاي اصلي ايجاد شده در اين مرحله مي توان به شي هاي httpcontext، httprequest و httpresponse اشاره كرد. اين سه شي (كه httpcontext پدر دو تاي ديگري است)، شامل تمام اطلاعات لازم براي يك درخواست http مي باشد (اطلاعاتي مثل ادرس درخواست كننده، مرورگر درخواست كننده و ...).

مرحله چهارم:

پس از ايجاد شي هاي اصلي در مرحله قبل، يك شي httpapplication، براي رسيدگي به درخواست دريافتي از كاربر ايجاد مي گردد. اگر در برنامه وب خود يك فايل global.asax داريد يك شي ‘global.asax’ نيز ايجاد مي گردد. شي global.asax فرزند httpapplication مي باشد.

توجه شود كه براي اولين درخواست دريافت شده توسط برنامه وب، يك شي http application ايجاد مي شود. ولي براي درخواست هاي بعدي از همان شي دوباره استفاده مي گردد. البته در صورت نياز دوباره شي ايجاد مي گردد.

مرحله آخر:

در آخر شي httpappliction مامور پردازش درخواست مي شود. و پاسخ مناسب براي كاربر را ايجاد و به سمت مرورگر كاربر ارسال مي كند.

 

ادامه مطلب به دوره حيات صفحات asp اشاره مي كند. آگاهي از دوره حيات يك صفحه asp به استفاده بهتر از متدها كمك مي كند. طبق دانش مايكروسافت يك صفحه asp.net شامل دوره حيات زير مي گردد.

1)      درخواست صفحه (page request)

2)      شروع (start)

3)      مقداردهي صفحه (page initialization)

4)      بارگذاري (load)

5)      اعتبارسنجي (validation)

6)      هندل كردن رويداد postback (postback event handling)

7)      تحويل صفحه (rendering)

8)      عكس عمل بارگذاري (unload)

از آنجا كه دوره حيات واقعي صفحه از مرحله start شروع مي گردد، مي توان درخواست صفحه را جزئي از دوره حيات ندانسته و براي به ياد ماندن دوره حيات به صورت زير كلمه اختصار U (SILVER YOU) SILVER را تعيين كرد.

S-Start              I-Initialize        L-Load              V-Validate                   

E-Event Handling          R-Render          U-Unload

حال ببينيم در هر مرحله چه اتفاقاتي مي افتد:

مرحله درخواست صفحه: هر چند اين مرحله را جزئي از دوره حيات صفحه در نظر نگرفتيم ولي در اين مرحله يك اتفاق مهم مي افتد و ان اينكه دات نت بررسي مي كند كه ايا نياز است تا صفحه درخواست داده شده ايجاد و به سمت كاربر رهسپار گردد و يا اينكه يك نسخه از آن را در كش داشته و بدون عمليات اضافه آن را تحويل كاربر مي دهد.

مرحله شروع: شي هاي httpcontext و httprequest و httpresponse با مقادير موجود در درخواست http (درخواستي كه از سمت مرورگر كاربر دريافت شده است) پر مي شوند. همچنين بررسي مي گردد كه ايا درخواست يك درخواست جديد است يا يك postback. بدين ترتيب خصوصيت postback مقداردهي ميشود.

مرحله مقداردهي: در اين مرحله كنترل هاي صفحه قابل دسترسي مي شوند و به هر كدامشان ID تخصيص داده مي شود (IDهايي كه در صفحه asp به كنترلها داده ايم). تم ها و master page  هم به صفحه اعمال مي گردند. اگر درخواست از نوع postback باشد، مقادير كنترلها در اين مرحله بارگذاري نمي شوند.

مرحله بارگذاري: در اين مرحله اگر درخواست از نوع postback باشد، مقادير كنترلها در كنترلها بارگذاري مي شوند (مقادير كنترلها در viewstate ذخيره شده بوده اند. در مطالب بعدي به viewstate هم اشاره خواهيم كرد).

مرحله تحويل: قبل از تحويل صفحه درخواستي به كاربر درخواست دهنده، اطلاعات صفحه و مقادير كنترلها در viewstate ذخيره مي شوند (براي نگهداري مقادير كنترلها)

اگر مي خواهيد در صفحه html ارسالي به كاربر تغييراتي ايجاد كنيد، مي توانيد در اين مرحله انجام دهيد. به عنوان مثال خواندن مقاديري از پايگاه داده و نمايش آنها از طريق يك htmltable .

مرحله تخليه كردن: وقتي تمام صفحه به كاربر تحويل داده شد، منابع صفحه از جمله شي هاي httpresponse و httprequest خالي مي شوند. احتمالا در اين مرحله مي توان ديگر منابع در دست صفحه (از جمله بافرهاي مربوط به ديتابيس و فايل ها) را آزاد كرد.

در هر يك از مراحل بالا، يك رويداد صدا زده مي شود. بدين ترتيب مي توانيد با هندل كردن هر كدام از رويدادها، هر يك از مراحل بالا را به دست گرفته و كد مورد نظرتان را در آن مرحله وارد كنيد. به عنوان مثال مي توانيد در مرحله مقدار دهي كنترلها زمان اجرا ايجاد كنيد.