دوشنبه, ۱ مرداد, ۱۴۰۳ / 22 July, 2024
مجله ویستا

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


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

یک برنامه در مدت زمان حیات خود با رویدادهای متعددی مواجه می گردد پس از بروز رویداد , روتین پاسخگو مسئولیت برخورد با رویداد محقق شده را برعهده خواهد گرفت

یک برنامه در مدت زمان حیات خود با رویدادهای متعددی مواجه می گردد. پس از بروز رویداد ، روتین پاسخگو مسئولیت برخورد با رویداد محقق شده را برعهده خواهد گرفت . برنامه های وب نیز از این قاعده مستثنی نبوده و در مدت زمان حیات خود با رویدادهای متعددی مواجه می گردند . رویدادها و نحوه برخورد با آنان دربرنامه های وب ، دارای تفاوت هائی نسبت به برنامه های ویندوز است . رویدادها در برنامه های وب در سه سطح : برنامه ، صفحات و کنترل های سرویس دهنده ، محقق می گردند. ترتیب و نحوه اجرای رویدادها ، تاثیری مستقیم بر نحوه پاسخگوئی به آنان توسط کدهای نوشته شده در یک برنامه دارد. در این مقاله قصد داریم به بررسی جایگاه و نقش رویدادها در چرخه حیات یک برنامه وب پرداخته و از این رهگذر با تفاوت های موجود بین چرخه حیات یک برنامه وب و یک برنامه ویندوز بیشتر آشنا شویم .

● رویداد ها در چرخه حیات یک برنامه وب

حیات یک برنامه وب ، وابسته و متاثر از 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 تعریف شده است . متغیر فوق ، تعداد دفعاتی که بر روی دکمه Button۱ کلیک می گردد را در خود ذخیره و در نهایت مقدار مورد نظر در خروجی نمایش داده می شود .

VB.NET

Private Sub Button۱_Click ( ByVal sender As System.Object , _

ByVal e As System.EventArgs ) Handles Button۱.Click

Session ( "Clicks") = Session ( "Clicks") + ۱

Response.Write("Number of Clicks : " & Session( "Clicks")

End Sub