تور لحظه آخری
امروز : پنجشنبه ، 17 آبان 1403    احادیث و روایات:  امام علی (ع):اى مؤمن! به تحقيق اين دانش و ادب بهاى جان توست پس در آموختن آن دو بكوش كه هر چه بر...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

اوزمپیک چیست

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

 






آمار وبسایت

 تعداد کل بازدیدها : 1826818018




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

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


واضح آرشیو وب فارسی:راسخون:
رويدادها در برنامه های وب دات نت
رويدادها در برنامه های وب دات نت يک برنامه در مدت زمان حيات خود با رويدادهای متعددی مواجه می گردد. پس از بروز رويداد ، روتين پاسخگو مسئوليت برخورد با رويداد محقق شده را برعهده خواهد گرفت . برنامه های وب نيز از اين قاعده مستثنی نبوده و در مدت زمان حيات خود با رويدادهای متعددی مواجه می گردند . رويدادها و نحوه برخورد با آنان دربرنامه های وب ، دارای تفاوت هائی نسبت به برنامه های ويندوز است . رويدادها در برنامه های وب در سه سطح : برنامه ، صفحات و کنترل های سرويس دهنده ، محقق می گردند. ترتيب و نحوه اجرای رويدادها ، تاثيری مستقيم بر نحوه پاسخگوئی به آنان توسط کدهای نوشته شده در يک برنامه دارد. در اين مقاله قصد داريم به بررسی جايگاه و نقش رويدادها در چرخه حيات يک برنامه وب پرداخته و از اين رهگذر با تفاوت های موجود بين چرخه حيات يک برنامه وب و يک برنامه ويندوز بيشتر آشنا شويم . رويداد ها در چرخه حيات يک برنامه وب حيات يک برنامه وب ، وابسته و متاثر از Session های فعال می باشد . ماداميکه Session فعال وجود داشته باشد ، برنامه وب نيز به زندگی خود ادامه خواهد داد . فرم های وب ، دارای عمر بسيار اندک و ناچيزی می باشند. يک برنامه وب با درخواست صفحه شروع آن توسط مرورگر ، زندگی خود را آغاز می نمايد . در ادامه ، سرويس دهنده وب وارد عمليات شده و يک فايل اجرائی ( فايلی با پسوند DLL ) را اجراء می نمايد . هدف نهائی فايل فوق ، پاسخگوئی به درخواست ارسالی توسط مرورگر است . برنامه فوق ، در ادامه يک نمونه از فرم وب درخواست شده را ايجاد و HTML لازم بمنظور پاسخ دادن به درخواست را توليد و در نهايت پاسخ مربوطه را برای مرورگر ارسال می نمايد . پس از اتمام فرآيند فوق ، نمونه فرم ايجاد شده نيز از بين خواهد رفت . زمانيکه مرورگر دارای تگ های HTML توليده شده می باشد ، کاربر قادر به ورود اطلاعات و داده مورد نظر در Text boxs ، انتخاب دکمه ها و انجام ساير عمليات می باشد . وضعيت فوق ، تا زمانيکه يک رويداد Post-back محقق گردد ( نظير کليک نمودن بر روی يک دکمه ) ، ادامه می يابد . پس از محقق شدن رويداد Post-back ، مرورگر داده همراه صفحه ( View State ) را برای سرويس دهنده ارسال تا پردازش های لازم با توجه به رويداد محقق شده ، انجام شود. زمانيکه سرويس دهنده ، View State ( داده همراه با يک صفحه ) را دريافت می نمايد ، يک نمونه جديد از فرم وب را ايجاد و داده آن را با استفاده از View State تکميل و متناسب با رويداد محقق شده ، پردازش های لازم را انجام خواهد داد . پس از اتمام عمليات توسط سرويس دهنده ، نتايج بصورت تگ های HTML مجددا" برای مرورگر ارسال و نمونه فرم وب ايجاد شده ، از بين خواهد رفت .زمانيکه کاربر به عمليات خود خاتمه داده و مرورگر را غير فعال می نمايد ، Session مربوط به آن نيز خاتمه می يابد . درصورتيکه Session های متعلق به ساير کاربران وجود نداشته باشد ، به حيات برنامه نيز خاتمه داده می شود ( عملا" وضعيت فوق کمتر اتفاق می افتد ) . ASP.NET با استفاده از garbage collection ، مديريت حافظه را انجام می دهد ( سرويس ارائه شده توسط CLR فريمورک دات نت ) . در فرآيند فوق ، سرويس دهنده بصورت ادواری رديابی مراجعات به اشياء را انجام و در صورتيکه از يک شی مدت زمان زيادی استفاده نشده باشد ، شی مربوطه از حافظه حذف و فضای استفاده شده توسط آن نيز آزاد می گردد . با توجه به ماهيت عمليات فوق ، نمی توان بطور دقيق از زمان محقق شدن رويداد Application_End ، آگاهی يافت . نگهداری داده در يک فرم وب با توجه به اينکه فرم های وب دارای عمر بسيار کوتاهی می باشند ، ASP.NET عمليات خاصی را بمنظور نگهداشت داده درج شده در کنترل های موجود بر روی يک فرم وب، انجام می دهد. داده های درج شده در کنترل ها ، پس از هر درخواست ارسال شده و از طريق Page_init مجددا" در کنترل های مربوطه، بازيابی ( Restore) می گردند. داده موجود در اين نوع کنترل ها در ادامه و از طريق رويداد Page_Load در دسترس قرار خواهند گرفت . داده ئی را که ASP.NET بين هر يک از درخواست ها ، نگهداری می نمايد ، view state فرم وب ناميده شده و صرفا" در محدوده همان فرم وب ، قابل دستيابی و استفاده است. بمنظور استفاده از داده ورودی در يک فرم وب برای ساير فرم های وب ، نيازمند ذخيره سازی داده در يک متغير وضعيت از نوع اشياء Application و يا Session می باشيم . اشياء فوق ، دو سطح متفاوت از بعد دستيابی را ارائه می نمايند :• متغيرهای Application state . متغيرهای فوق ، برای تمامی کاربران قابل دسترس و استفاده می باشند. رفتار اين نوع متغيرها نظير متغيرهای سراسری با قابليت دستيابی چندکاربره می باشد. تمامی Sessions قادر به خواندن و نوشتن اين نوع متغيرها ، می باشند . • متغيرهای Session state . متغيرهای فوق، صرفا" برای يک Session ( کاربر) قابل دسترس و استفاده می باشند. عملکرد اين نوع از متغيرها نظير داده های سراسری در يک برنامه استاندارد ويندوز می باشد . صرفا" Session فعال ، قابليت دستيابی به وضعيت Session خود را دارا خواهد بود . متغيرهای Session و Application ، بصورت On the fly و از طريق کد نوشته شده در برنامه ، ايجاد می گردند ( عدم استفاده از روش های متداول بمنظور تعريف يک متغير ). در نمونه برنامه زير ، يک متغير Session با نام Clicks تعريف شده است . متغير فوق ، تعداد دفعاتی که بر روی دکمه Button1 کليک می گردد را در خود ذخيره و در نهايت مقدار مورد نظر در خروجی نمايش داده می شود . VB.NETPrivate Sub Button1_Click ( ByVal sender As System.Object , _                    ByVal e As System.EventArgs ) Handles Button1.Click     Session ( "Clicks") = Session ( "Clicks") + 1      Response.Write("Number of Clicks : " & Session( "Clicks")End Sub در يک متغير وضعيت ( Session , Application) می توان هر نوع داده ئی را ذخيره نمود. ( از يک عدد صحيح ساده تا يک شی ) . با توجه به اينکه عملکرد متغيرهای وضعيت ، نظير داده های سراسری می باشد ، می بايست ،استراتژی لازم بمنظور استفاده و انجام عمليات بر روی آنان ،مشخص گردد . رويدادهای Session و Application برنامه نويسان می توانند کد دلخواه خود را بمنظور پاسخگوئی به رويدادهای Session و يا Application نوشته و آنان را در فايل Global.asax مستقر نمايند . از رويدادهای Application بمنظور مقداردهی اشياء و داده ئی که قصد استفاده از آن توسط تمامی Session های فعال در برنامه وب وجود داشته باشد ، استفاده می گردد . از رويدادهای Session بمنظور مقداردهی اوليه داده ئی که قصد نگهداشت آن بين Session های خاصی وجود دارد، استفاده می گردد . ( قصد استفاده از اين نوع متغيرها بين Session های متفاوت وجودندارد ) .رويدادهای Application ، بشرح زير می باشند : • Application_Start : رويداد فوق ، بلافاصله پس از ملاقات صفحه شروع برنامه توسط اولين کاربر ، محقق می گردد . • Application_End ، رويداد فوق ،زمانی محقق می گردد که کاربری به برنامه متصل ( مرتبط) نباشد. • Application_BeginRequest : رويداد فوق ، در ابتدای هر در خواست ارسالی برای سرويس دهنده ، محقق می گردد . با حرکت بين صفحات و درخواست آنان از سرويس دهنده ، يک درخواست ايجاد و متناسب با آن ، رويداد فوق نيز محقق می گردد . • Applicatino_EndRequest : رويداد فوق ، پس از اتمام هر درخواست ارسال شده برای سرويس دهنده ، محقق می گردد .• Session_Start : رويداد فوق ، زمانيکه کاربری جديد ، صفحه شروع يک برنامه را ملاقات می نمايد ، محقق می گردد .• Session_End : رويداد فوق ، پس از ترک برنامه توسط يک کاربر ، محقق می گردد( بستن مرورگر و يا پس از Time out تعريف شده ) در فرم های وب ، يک Session ، نمونه ای منحصربفرد از مرورگر می باشد .يک کاربر می تواند دارای چندين نسخه در حال اجراء از برنامه مرورگر بر روی ماشين خود باشد .در چنين وضعيتی ، در صورتيکه هر يک از مرورگرها با برنامه وب ارتباط برقرار نمايد ، هريک از آنان دارای Session منحصربفرد مربوط به خود خواهند بود . بمنظور آشنائی با عملکرد رويدادهای فوق ، کد نوشته شده زير را در فايل Global.asax مربوط به يک پروژه فرم وب ، مستفر نمائيد . VB.NETSub Application_Start ( ByVal Sender As  Object , ByVal E As EventArgs )         Application ( "AppCount") = Application ( "AppCount") + 1 End Sub Sub Session_Start ( ByVal Sender As  Object , ByVal E As EventArgs )         Application ( "SessCount" ) =  Application ( "SessCount" ) + 1         Response.Write( "Number of  AppCount : " & Application  ("AppCount")   & "<br>" )         Response.Write( "Number of  SessCount : " & Application ( "SessCount" ) & "<br>" ) End Sub Sub Session_End ( ByVal Sender As  Object , ByVal E As EventArgs )         Application ( "SessCount" ) =  Application ( "SessCount" ) - 1 End Sub پس از اجرای کد فوق ، هر نمونه از مرورگر که به برنامه متصل گردد ،يک واحد به Session ، اضافه می گردد ( مقدار شمارنده Application همچنان يک باقی خواهد ماند ) . لازم است به اين نکته نيز اشاره گردد که اشياء ذاتی نظير Session و Response در Application_Start قابل دسترس نمی باشند .رويدادهای فرم های وب با استفاده از رويدادهای فرم های وب می توان پردازش و پشتيبانی از داده استفاده شده در يک صفحه وب ، پاسخگوئی به نسبت دهی داده (ِData binding ) و برخورد با موارد استثناء ( Handle exceptions ) را در يک صفحه وب ، انجام داد. Page_Load و Page_Error از جمله رويدادهائی می باشند که از آنان در اغلب برنامه ها ، استفاده می گردد . رويدادهای مرتبط با فرم های وب ( بترتيب محقق شدن )، بشرح زير می باشند . • Page_Init : رويداد فوق ، زمانی محقق می گردد که کنترل های سرويس دهنده ، در حافظه مستقر و از طريق view state مربوط به فرم وب ، مقداردهی اوليه گردند. (اولين مرحله در چرخه حيات يک فرم وب ).• Page_Load : رويداد فوق ، زمانی محقق می گردد که کنترل ها ی سرويس دهنده در شی Page ، لود می گردند. اطلاعات view state ، در اين لحظه قابل دسترس و استفاده بوده و می توان در اين محل تنظيمات کنترلی لازم بمنظور نمايش متن بر روی صفحه را انجام داد ( انجام تغييرات مورد نظر).• Page_PreRender : رويداد فوق ، زمانی محقق می گردد که برنامه درصدد Render نمودن شی Page می باشد .• Page_Unload : رويداد فوق ، پس از خروج Page از حافظه ، محقق می گردد.• Page_Error : رويداد فوق ، پس از مواجه شدن با يک مورد خاص و استثنائی ،محقق می گردد . • Page_AbortTransaction : رويداد فوق ، پس از توقف يک تراکنش ، محقق می گردد.• Page_CommitTransaction : رويداد فوق ، پس از پذيرش يک تراکنش ، محقق می گردد.• Page_DataBinding : رويداد فوق ، پس از نسبت دهی يک کنترل سرويس دهنده به يک منبع داده بر روی يک صفحه ، محقق می گردد.• Page_Dispose : رويداد فوق ،پس از آزاد سازی يک شی Page از حافظه ، محقق می گردد (آخرين رويداد مرتبط با چرخه حيات يک شی Page ) . از رويداد Page_Load بهمراه خصلت IsPostBack ، می توان بمنظور مقداردهی اوليه داده ، در اولين مرتبه ای که کاربران يک فرم وب را مشاهده می نمايند ، استفاده نمود. رويدادهای کنترل سرويس دهنده هر يک از کنترل های سرويس دهنده ، نظير دکمه ها ، TextBox و DropDownList ، دارای مجموعه ای اختصاصی از رويدادهای مرتبط با خود بمنظور پاسخگوئی به عمليات کاربران می باشند . تمامی رويدادهای کنترل سرويس دهنده بطور يکسان ايجاد نمی گردند . سه نوع عمده از رويدادهای کنترل سرويس دهنده وجود دارد :• رويدادهای Post-Back : رويدادها ی فوق ، باعث ارسال صفحه وب برای سرويس دهنده بمنظور انجام پردازش های ضروری می گردند. اين نوع از رويدادها ، ترافيکی را بين سرويس گيرنده و سرويس دهنده ، ايجاد می نمايند ( توجه به اثرات ترافيک ايجاد شده بر کارآئی برنامه ) .• رويدادهای Cached : اين نوع از رويدادها ، در View state مربوط به صفحه ذخيره تا زمانيکه يک رويداد Post_Back محقق گردد . • رويدادهای Validation : رويدادهای فوق ، بدون اينکه ضرورتی به انجام Post-Back و يا Cache وجود داشته باشد ، از طريق امکانات پيش بينی شده درون صفحه ، با آنان برخورد خواهد شد .کنترل های سرويس دهنده Validation از رويدادهای فوق ،استفاده می نمايند . کنترل های Validation ، قبل از اينکه صفحه برای سرويس دهنده Post-Back شوند، بررسی می گردند . زمانيکه Post-Back محقق می گردد ، رويدادهای Page_init و Page_Load ، پردازش و در ادامه رويدادهای Cache و نهايتا" رويدادی که باعث Post-Back شده است ، پردازش می گردد . کنترل های Button ، Link Button ,Image Button ، از جمله کنترل هائی می باشند که باعث تحقق يک رويداد Post-Back ، می گردند . کنترل های . TextBox,DropDownList,ListBox,RadioButton و CheckBox ، باعث ايجاد رويدادهائی از نوع Cache خواهند شد . فرض کنيد ، يک فرم وب بهمراه چهار TextBox و يک دکمه OK بر روی آن را داشته باشيم . در چنين حالتی ، اگر TextBox خالی بماند ، و دکمه OK کليک گردد ، RequiredFieldValidator نمايش داده شده و رويداد ديگری پردازش نشده و صفحه برای سرويس دهنده PostBack نخواهد شد. درصورتيکه مقداری در TextBox درج و دکمه OK فعال گردد ، صفحه PostBack شده و رويداد TextChanged ، قبل از رويداد Click محقق می گردد. برنامه زير واکنش لازم را در اين راستا انجام خواهد داد ( کليک بر روی دکمه Button1 و يا تغيير مقدار TextBox1 ).  VB.NETPrivate Sub Button1_Click ( ByVal sender As System.Object ,_  ByVal e As System.EventArgs ) Handles Button1.Click       Response.Write( "Button Clicked! <Br>")End Sub Private Sub TextBox1_TextChanged ( ByVal sender As System.Object ,_ ByVal e As System.EventArgs ) Handles TextBox1.TextChanged      Response.Write( "Text has Changed <Br>")End Sub





این صفحه را در گوگل محبوب کنید

[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 387]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن