جمعه, ۱۴ اردیبهشت, ۱۴۰۳ / 3 May, 2024
مجله ویستا

مدیریت وضعیت صفحات در ASP NET


مدیریت وضعیت صفحات در ASP NET

ساختمان داده ئی است که در زمان مراجعه به یک URL خاص ایجاد خواهد شد مسئولیت این کار برعهده کلاس HttpSessionStateگذاشته شد ه است

● مدیریت وضعیت صفحات در فرم های وب ( State Management )

فرم های وب و فریمورک ASP.NET از طریق پروتکل Http با یکدیگر مبادله اطلاعاتی دارند(مرورگر و سرویس دهنده وب). Http یک پروتکل stateless است . صفحات وب زمانیکه از سرویس گیرنده درخواستی برای آنان نزد سرویس دهنده واصل گردد ،مجددا" ایجاد خواهند شد. این بدان معنی است که تمامی اطلاعات مرتبط با صفحه و کنترل های مربوطه بر روی صفحه گم ( حذف ) می شوند. مثلا" اگر کاربری اطلاعاتی را در یک TextBox درج کرده باشد ، اطلاعات درج شده پس از ارسال صفحه از طریق مرورگر به سرویس دهنده حذف خواهند شد. برای غلبه بر این نوع از مشکلات ،ASP.NET راهکارهای متفاوتی در این زمینه را ارائه نموده است. راهکارهای ارائه شده به دو گروه عمده تقسیم می گردنند:

▪ Client-Based state management

▪ Server-Based state management

در ادامه به تشریح امکانات ارائه شده در هر یک از گروه های فوق خواهیم پرداخت .

● گزینه های Client-Based

در این بخش به بررسی امکاناتی پرداخته می شود که بکمک آنها می توان اطلاعات مورد نظر را بر روی صفحه و یا بر روی کامپیوتر سرویس گیرنده ذخیره نمود.

▪ View State . یک دیکشنری از اشیاء مورد نظر برای ذخیره و بازیابی اطلاعات مورد نیاز جهت استفاده در فرم های وب است . زمانیکه صفحه پردازش می گردد ،وضعیت جاری صفحه بهمراه کنترل های مربوطه در یک رشته ذخیره و بعنوان یک فیلد مخفی در صفحه نگهداری می شوند. زمانیکه صفحه مجددا" برای سرویس دهنده ارسال می گردد در ابتدا رشته فوق بررسی و مقادیر ذخیره شده در آن استخراج و اطلاعات مربوطه در صفحه مجددا" بازیابی خواهند شد. هر یک از کنترل های موجود بر روی یک فرم وب ( خود صفحه را هم شامل می شود) شامل یک صفت Viewstate بوده که از کلاس پایه ای Control برای آنها به ارث رسیده است. Viewstate در فریمورک ASP.NET بمنظور ذخیره خودکار مقادیر مربوط به صفحه و کنترل های موجود استفاده می گردد. زمانیکه صفحه برای سرویس دهنده پست می گردد ،یکی از اولین عملیاتی که در این زمینه انجام خواهد گرفت ،برگرداندن viewstate است . صفت viewstate در صفحات وب در یک فیلد مخفی نگهداری می گردد. بمنظور استفاده از صفت فوق می بایست فرم دارای المانی با نام <form runat="Server"> باشد. برای ذخیره مقدار مورد نظر در viewstate می بایست یک المان جدید ایجاد و مقدار مورد نظر را در آن ذخطره نمود. فرمت داده هائی که می بایست در المان ذخیره نمود از نوع string است بنابراین در ابتدا می بایست تبدیلات مربوطه را بر روی آن اعمال نمود.

ViewState("color") = "yellow"

برای بازیابی اطلاعات ذخیره شده در Viewstate می توان نام المان مربوطه را استفاده تا مقدار ذخیره شده در آن برگردانده شود.

ـ Dim strColor as String

ـ strColor = CStr(ViewState("color"))

▪ فیلدهای مخفی . ASP.NET این امکان را فراهم می آورد که از فیلدهای مخفی در یک فرم استفاده کرد. یک فیلد مخفی قابل مشاهده در مرورگر نبوده اما می توان صفات مربوط به آن را تغییر داد. زمانیکه صفحه ای برای سرویس دهنده ارسال می گردد ،محتویات فیلد مخفی از طریق مجموعه Http Form ارسال خواهد شد. یک فیلد مخفی صرفا" یک مقدار را در خود ذخیره کرده و می بایست با صراحت به صفحه وب آن را اضافه نمود. ASP.NET با معرفی کنترل htmlinputhidden امکان تعریف یک فیلد مخفی را فراهم نموده است . بمنظور استفاده از فیلدهای مخفی در یک صفحه می بایست صفحه مورد نظر بر اساس متد Post پروتکل Http ارسال گردد .در صورتیکه اطلاعات ذیربط بر اساس متد GET ارسال گردنند ،امکان استفاده از فیلدهای مخفی وجود نخواهد داشت .

▪ Cookies . یک کوکی شامل حجم کوچکی از داده ها است که در یک فایل متنی بر روی سیستم فایل سرویس گیرنده و یا در حافظه مرورگر سرویس گیرنده ذخیره می گردد. اطلاعات ذخیره شده شامل موارد مرتبط با یک صفحه بوده که از طریق سرویس دهنده برای سرویس گیرنده ارسال می گردد. کوکی ها می توانند بصورت موقت و یا دا ئم ایجاد گردنند. از کوکی می توان برای ذخیره اطلاعات مرتبط با یک سرویس گیرنده خاص ،یک session و یا یک برنامه استفاده کرد. کوکی ها بر روی دستگاههای سرویس گیرنده ذخیره و زمانیکه مرورگر درخواست یک صفحه را داشته باشد ،اطلاعات ذخیره شده در کوکی بهمراه سایر اطلاعات برای سرویس دهنده ارسال خواهند شد. سرویس دهنده از اطلاعات ذخیره شده در کوکی ها با توجه به شرایط حاکم بر نامه استفاده خواهد کرد.

▪ Query String(QS) . QS شامل اطلاعاتی است که به انتهای یک URL صفحه اضافه خواهد شد. مثلا"

http://www.contoso.com/listwidgets.aspx?category=basic&price=۱۰۰

در دستور فوق QS با ? ، شروع و دارای دو مقدار مربوط به فیلدهای Category و Price است . روش فوق یک راه حل ساده و در عین حال محدود برای پشتیبانی از اطلاعات مربوط به وضعیت یک صفحه است . با استفاده از QS می توان بسادگی اطلاعاتی را از یک صفحه به صفحه دیگر ارسال نمود. اغلب مرورگرها و دستگاههای سرویس گیرنده حداکثر طول مجاز برای یک URL را دویست و پنجاه و شش حرف در نظر می گیرنند. بمنظور استفاده از روش فوق می بایست صفحه را از طریق متد GET پروتکل Http ارسال نمود.

گزینه های Server-Based ASP.NET روش های متفاوتی برای پشتیبانی از وضعیت اطلاعاتی یک صفحه از جایگاه سرویس دهنده ارائه نموده است . در ادامه به تشریح برخی از آنان خواهیم پرداخت .

▪ Application State ، تکنولوژی ASP.NET ، این امکان را فراهم نموده که با استفاده از ذخیره اطلاعاتی وضعیت یک برنامه ،اطلاعات ذخیره شده را برای تمام سرویس گیرندگانی که به برنامه متصل هستند ،قابل استفاده نمود. مسئولیت این کار برعهده کلاس HttpApplication گذاشته شده است . در حقیقت روش فوق یک محل ذخیره سازی سراسری را ارائه داده تا از طریق این فضای مشترک دستیابی به اطلاعات آن برای تمامی صفحات وب موجود در یک برنامه فراهم گردد.

▪ Session state . ساختمان داده ئی است که در زمان مراجعه به یک URL خاص ایجاد خواهد شد. مسئولیت این کار برعهده کلاس HttpSessionStateگذاشته شد ه است . ASP.NET این امکان را فراهم نموده که مقادیر مربوط به یک Session خاص را برای هر کاربر و به ازای یک برنامه بصورت جداگانه ذخیره نمود . روش فوق نظیر روش Application state بوده با این تفاوت که حوزه عملکردی آن به Current browser session برمی گردد. در صورتیکه کاربران متعددی از برنامه استفاده می نمایند ،هر یک دارای یک Session متفاوت و مختص بخود خواهند بود. در چنین حالتی اگر کاربری ارتباط خود را با برنامه قطع و مجددا" به برنامه متصل گردد ،کاربر مورد نظر داری یک Session جدید شده که با Session قبلی کاملا" متفاوت خواهد بود.

▪ DataBase Support . پشتیبانی و مدیریت وضعیت اطلاعاتی یک برنامه (یا صفحات) با استفاده از تکنولوژی بانک های اطلاعاتی یک راهکار مفید در این زمینه و خصوصا" مواردیکه حجم اطلاعات ذخیره شده زیاد بوده و یا دامنه پشتیبانی از وضعیت یک برنامه طولانی باشد و یا بخواهیم وضعیت یک برنامه پس از راه اندازی سرویس دهنده همچنان نگهداری شوند ،بسیار مفید و کارساز خواهد بود. روش فوق اغلب بهمراه کوکی ها استفاده می گردد.