عمومی

مروری بر راههای انتقال متغیرها و داده از یک صفحه به صفحه دیگر ( State Management )

يكی از مهمترين تفاوت های موجود بين برنامه های وب و Desktop  ، مديريت state است كه در آن می بايست به اين پرسش پاسخ داده شود كه نحوه نگهداری اطلاعات در ارتباط با كاربر جاری به چه صورت است ؟

در يك برنامه ويندوز ، state بطور اتوماتيك مديريت می گردد. حافظه به حد فراوان يافت می شود و همواره در دسترس است. در برنامه های وب داستان بگونه ای ديگر است. هزاران كاربر ممكن است بطور همزمان برنامه ای مشابه را بر روی كامپيوتری يكسان ( سرويس دهنده وب ) اجراء و هر يك از آنان از طريق پروتكل HTTP ( برگرفته شده از  Hypertext Transfer Protocol) كه دارای ماهيتی stateless است با سرويس دهنده وب ارتباط برقرار نمايند. مجموعه شرايط فوق باعث شده است كه نتوان برنامه های وب را با سناريوئی دقيقاً مشابه با برنامه های ويندوز طراحی و پياده سازی كرد.

هيچگونه فريمورك برنامه نويسی وب ، صرفنظر از ميزان پيشرفته بودن آن ، نمی تواند ماهيت stateless بودن پروتكل HTTP را تغيير دهد. پس از هر درخواست و پاسخ به آن ، ارتباط منطقی سرويس گيرنده با سرويس دهنده قطع خواهد شد. معماری فوق ، اين اطمينان را ايجاد می نمايد كه برنامه های وب بتوانند به هزاران كاربر بطور همزمان و بدون نگرانی در خصوص حافظه پاسخ دهند. استفاده از روش های مختلف برای ذخيره اطلاعات بين درخواست های متعدد يك كاربر و بازيابی آنها در زمانی كه به آنها نياز است از جمله مشكلات معماری فوق برای پياده كنندگان برنامه های وب محسوب می گردد.

آشنائی و درك مناسب نسبت به محدوديت های  state ، يكی از مفاهيم كليدی در زمان ايجاد برنامه های وب كارآ و قدرتمند است.

 مديريت state و مسائل در ارتباط با آن

در يك برنامه ويندوز ، كاربران با يك برنامه در حال اجراء بطور پيوسته ارتباط برقرار می نمايند. بخشی از حافظه موجود بر روی كامپيوتر Desktop  برای ذخيره  تنظيمات جاری اطلاعات محيط كار كاربر اختصاص داده می شود.
در يك برنامه وب ، داستان كاملاً متفاوت است. شايد از ديد كاربران يك سايت حرفه ای اينگونه برداشت شود كه يك برنامه بطور مستمر در حال اجراء است و به آنان سرويس های لازم را می دهد . با اینکه ظاهر موضوع درست بنظر می آيد ولی در داستان بگونه ای ديگر دنبال می شود.  برنامه های وب از يك الگوی دستيابی غيرمتصل كارا استفاده می نمايند. در اين الگو ، سرويس گيرنده پس از ارتباط با سرويس دهنده از آن درخواست يك صفحه را می نمايد. پس از پاسخ به سرويس گيرنده ، ارتباط منطقی ايجاد شده قطع و سرويس دهنده بی خيال هر گونه اطلاعاتی در رابطه با سرويس گيرنده می گردد. پس از دريافت صفحه درخواستی توسط سرويس گيرنده ، برنامه اجراء خود را متوقف و ASP.NET engine اشياء مربوط به صفحه را دور می اندازد.

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

در صورتی كه لازم است اطلاعات بين چندين عمليات كاربر نگهداری شوند ، می بايست از راهكارهای مختلفی به منظور مديريت state استفاده كرد.

به شما پیشنهاد می شود مقاله ما  را برای کسب اطلاعات در مورد آموزش asp.net مطالعه نمایید.

نمایش بیشتر
دکمه بازگشت به بالا