State Management در ASP. NET 2.0 (بخش هفتم)
آنچه تاكنون گفته شده است :
بخش اول |
مفاهيم اوليه |
: |
ضرورت مديريت state در برنامه هاي وب |
بخش دوم |
view state |
: |
نحوه ايمن سازي اطلاعات ذخيره شده در view state |
بخش سوم |
view state |
: |
نحوه نگهداري Member Variables و اشياء سفارشي |
بخش چهارم |
cross-page posting |
: |
انتقال اطلاعات از يك صفحه به صفحه اي ديگر |
بخش پنجم |
cross-page posting |
: |
نحوه دريافت اطلاعات از صفحه مبداء |
بخش ششم |
Query String |
: |
نحوه انتقال اطلاعات بين صفحات |
در اين بخش با كوكي هاي سفارشي و نحوه عملكرد آنها براي ذخيره و بازيابي اطلاعات آشنا خواهيم شد .
مفاهيم و چالش ها
كوكي هاي سفارشي يكي ديگر از روش هاي موجود جهت ذخيره اطلاعات به منظور استفاده در ساير صفحات مي باشند . كوكي ، فايل هاي كوچكي مي باشند كه بر روي هارد ديسك سرويس گيرنده ( و يا حافظه مرورگر وب در صورتي كه قصد ذخيره موقت آنها وجود داشته باشد ) ايجاد مي گردند .
يكي از مزاياي كوكي ها عملكرد غيرمحسوس آنها و عدم آگاهي كاربر نسبت به ذخيره اطلاعات است . علاوه بر اين كه مي توان از كوكي ها در هر يك از صفحات برنامه استفاده كرد ، امكان استفاده از اطلاعات ذخيره شده در آنها طي بازديدهاي آتي كاربر نيز وجود دارد ( مكاني براي ذخيره اطلاعات با طول عمر بيشتر) .
كوكي ها داراي محدوديت ها و يا چالش هاي مختص به خود نيز مي باشند :
-
ذخيره حجم اندكي از اطلاعات : صرفا" امكان ذخيره حجم اندكي از اطلاعات به صورت متن در آنها وجود دارد .
-
عدم ايمن بودن : در صورتي كه كاربر كوكي و فايل مربوط به آن را پيدا مي كند ، مي تواند به سادگي به آن دستيابي پيدا نمايد ( خواندن ، حذف ) .
-
امكان حذف آنها توسط كاربران : همواره اين احتمال وجود خواهد داشت كه كاربران اقدام به حذف كوكي هاي موجود بر روي كامپيوتر خود نمايند .
-
وجود محدوديت در برخي مرورگرها با توجه به نوع دستگاه سرويس گيرنده : كوكي ها مي توانند در تعداد مخاطبان با توجه به نوع دستگاه آنها محدوديت ايجاد نمايند . به عنوان نمونه ، بكارگيري كوكي به همراه مرورگرهاي از قبل تعبيه شده در دستگاه هاي موبايل مناسب نمي باشد .
-
وابسته به تنظيمات كاربر : برخي از كاربران امكان ايجاد كوكي را از طريق مرورگر خود غيرفعال مي نمايند . اين كار مي تواند مسائل متعددي را براي برنامه هاي وب به دنبال داشته باشد .
عوامل فوق باعث شده است كه كوكي به عنوان يك گزينه ضعيف براي ذخيره اطلاعات مورد توجه قرار گيرد . در مواردي كه اطلاعات پيچيده ، خصوصي و يا حجم آنها زياد باشد ، استفاده از كوكي بسيار محدود مي گردد .
نحوه ذخيره و بازيابي اطلاعات
فرآيند ذخيره و بازيابي اطلاعات در يك كوكي به سادگي انجام مي شود . اشياء Request و Response يك مجموعه Cookies را ارائه مي نمايند . كوكي ها از طريق شي Request بازيابي و مقداردهي آنها از طريق شي Response انجام مي شود . براي مقداردهي يك كوكي ، صرفا" مي بايست يك شي جديد HttpCookie را ايجاد كرد . در ادامه مي توان اطلاعات مورد نظر را در آن و از نوع رشته ذخيره و به پاسخ فعلي وب اضافه كرد .
' ايجاد شي كوكي Dim cookie As New HttpCookie("Preferences") ' مقداردهي كوكي cookie("LanguagePref") = "English" ' اضافه كردن كوكي به پاسخ جاري وب Response.Cookies.Add(cookie) |
كوكي فوق تا زماني كه كاربر مرورگر را close نكند ، وجود خواهد داشت و با هر درخواست ارسال مي گردد . براي ايجاد يك كوكي با طول عمر بيشتر ، مي توان براي آن يك تاريخ سررسيد را تعريف كرد ( عمر مفيد ) .
' مدت زمان حيات كوكي يك سال تعيين شده است Cookie.Expires = DateTime.Now.AddYears(1) |
براي بازيابي كوكي ، مي توان از طريق نام استفاده شده در مجموعه Request.Cookies اقدام نمود.
' بررسي وجود كوكي قبل از دستيابي به آن Dim language As String If Cookie IsNot Nothing Then language = Cookie("LanguagePref") End If |
تنها روش موجود براي حذف يك كوكي ، جايگزين كردن آن با يك كوكي است كه تاريخ اعتبار آن به اتمام رسيده باشد . كد زير نحوه انجام اين كار را نشان مي دهد .
Dim cookie As New HttpCookie("LanguagePref") cookie.Expires = DateTime.Now.AddDays(-1) Response.Cookies.Add(cookie) |
مثال
در اين مثال هدف آشنائي با نحوه ايجاد ، مقداردهي و بازيابي يك كوكي است .
در اولين مرتبه اي كه صفحه درخواست مي گردد به دليل عدم وجود كوكي مورد نظر ، پيام "كاربر ناشناس " نمايش داده شده و با ارائه يك text box اين امكان در اختيار كاربر گذاشته مي شود تا نام مورد نظر خود را جهت ذخيره در كوكي درج نمايد . پس از اين كار و همزمان با درخواست صفحه و با توجه به وجود كوكي مورد نظر ، يك پيام خوش آمدگوئي نمايش داده مي شود . كوكي ايجاد شده در اين مثال به مدت يك سال از تاريخ ايجاد ، اعتبار خواهد داشت .
عمليات تشخيص وجود كوكي و نمايش يك پيام خوش آمدگوئي از طريق روتين Page_Load انجام مي شود . روتين cmdStoreCookiee_Click مسئوليت ايجاد كوكي و تعيين يك تاريخ اعتبار براي آن را برعهده دارد .
صفحه CookieExample.aspx |
<%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Load Dim Cookie As HttpCookie = Request.Cookies("Preferences") If Cookie Is Nothing Then lblWelcome.Text = "<b>كاربر ناشناس</b>" Else lblWelcome.Text = "<b>كوكي موجود است </b><br><br>" lblWelcome.Text &= "خوش آمديد, " & Cookie("Name") End If End Sub
Protected Sub cmdStoreCookiee_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles cmdStoreCookie.Click Dim Cookie As HttpCookie = Request.Cookies("Preferences") If Cookie Is Nothing Then Cookie = New HttpCookie("Preferences") End If Cookie("Name") = txtName.Text Cookie.Expires = DateTime.Now.AddYears(1) Response.Cookies.Add(Cookie) lblWelcome.Text = "<b>كوكي ايجاد گرديد</b><br><br>" lblWelcome.Text &= "كاربر جديد : " & Cookie("Name") End Sub
</ script>
< html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" > <head runat="server"> <title>تست كوكي</title> </head> <body style="font-family: Tahoma"> <form id="form1" runat="server"> <asp:Label ID="lblWelcome" runat="server" EnableViewState="False" Font-Names="Tahoma" > </asp:Label><br /> <br /> نام:<asp:TextBox ID="txtName" runat="server" Width="178px" Font-Names="Tahoma"> </asp:TextBox><br /><br /> <asp:Button ID="cmdStoreCookie" runat="server" Text="ايجاد كوكي" Font-Names="Tahoma" /> </form> </body> </html> |
شكل 1 ، نحوه عملكرد برنامه فوق را در اولين مرتبه دستيابي ( و با فرض عدم وجود كوكي ) نشان مي دهد .
شكل 1 : نحوه عملكرد كوكي هاي سفارشي
و اما آخرين نكته اين كه ، برخي از ويژگي هاي ارائه شده در ASP. NET با استفاده از كوكي خدمات خود را ارائه مي نمايند . session state كه به پياده كنندگان اجازه مي دهد بطور موقت اطلاعات مرتبط با كاربر را در حافظه سرويس دهنده ذخيره نمايند و امنيت فرم ها كه اين امكان را در اختيار پياده كنندگان قرار مي دهد تا بخش هائي از يك وب سايت را محدود به كاربران تائيد شده نمايند ، دو نمونه متداول در اين رابطه مي باشند .
در بخش هشتم به بررسي Session State خواهيم پرداخت .
برگرفته از سايت سخا روش