عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
State Management در ASP. NET 2.0 (بخش هفتم) |
مديريت وب |
12220 |
8 |
3.5 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
State Management در ASP. NET 2.0
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 خواهيم پرداخت .