|
|
|
|
|
 |
|
|
SAKHA
RAVESH
CO. |
|
ا مروز
◄ |
جمعه |
12 |
شهريور |
1389 |
2010 |
Sep. |
3 |
Friday |
ToDay
►
|
|
|
صفحه اصلی |
مقالات |
نکته ها |
دايره المعارف
|
خودآموزها |
تازه ها |
خود آزمون ها
|
|
عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
|
State Management در ASP. NET 2.0 (بخش نهم) |
مديريت وب |
5834 |
3 |
5 |
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 |
: |
نحوه انتقال اطلاعات بين صفحات |
|
بخش
هفتم |
كوكی های سفارشی |
|
نحوه عملكرد كوكی های سفارشی |
|
بخش
هشتم |
Session State |
|
مفاهيم و معماری session |
در
بخش هشتم
با مفاهيم و معماری session
آشنا شديم . در اين بخش و قبل از پرداختن به نحوه پيكربندی
session در برنامه های وب ، به بررسی يك نمونه مثال خواهيم پرداخت تا از اين
رهگذر بتوانيم در عمل با متدها و خصلت های كلاس HttpSessionState
بيشتر آشنا شويم .
مثال
در اين مثال هدف آشنائی با نحوه ذخيره و بازيابی داده در
session است . بدين منظور يك شی با نام Articles و شامل سه فيلد عمومی به
شرح زير تعريف شده است :
-
Title : عنوان يك
مقاله را در خود ذخيره می نمايد .
-
Abstract : شرح
مختصری از مقاله را در خود ذخيره می نمايد .
-
ViewCount : تعداد
دفعات مشاهده يك مقاله را مشخص می نمايد .
شی فوق از يك
constructor خاص استفاده می نمايد تا فرآيند ايجاد و مقداردهی آن به سادگی
انجام شود .
Public
Class Articles
Public Title
As
String
Public Abstract
As
String
Public ViewCount
As
Integer
Public Sub
New(ByVal
Title As
String,
ByVal Abstract
As
String,
ByVal ViewCount
As
Integer)
Me.Title
= Title
Me.Abstract
= Abstract
Me.ViewCount
= ViewCount
End
Sub
End Class |
اشياء
Articles در زمان استقرار صفحه در حافظه ايجاد و در
session state ذخيره می گردند . در ادامه
و پس از انتخاب
يك آيتم توسط كاربر از طريق ليست
موجود ، شی مرتبط با آيتم انتخاب شده از
session بازيابی و اطلاعات مرتبط با آن در خروجی نمايش
داده می شود .
|
صفحه SessionStateExample.aspx |
<%@
Page
Language="VB"
Culture="fa-IR"
UICulture="fa-IR"
%>
<script
runat="server">
Public Class
Articles
Public
Title As
String
Public Abstract
As
String
Public ViewCount
As
Integer
Public
Sub
New(ByVal
Title As
String,
ByVal Abstract
As
String,
ByVal ViewCount
As
Integer)
Me.Title = Title
Me.Abstract = Abstract
Me.ViewCount = ViewCount
End
Sub
End Class
Protected
Sub Page_Load(ByVal
sender As
Object,
ByVal e
As EventArgs)
Handles
MyBase.Load
If
Me.IsPostBack =
False
Then
|
مرحله اول :
ايجاد اشياء ' |
Dim
ArticleInfo1
As
New Articles("State
Management در ASP. NET 2.0 (بخش هشتم) ", _
" بررسی Session State ", 43)
Dim
ArticleInfo2
As
New Articles("State
Management در ASP. NET 2.0 (بخش هفتم) ", _
" كوكی های سفارشی و نحوه عملكرد آنها", 94)
Dim
ArticleInfo3
As
New Articles("State
Management در ASP. NET 2.0 (بخش ششم) ", _
" نحوه انتقال اطلاعات بين صفحات با استفاده از Query String",
103)
Dim
ArticleInfo4
As
New Articles("
State Management در ASP. NET 2.0 (بخش پنجم) ", _
" نحوه دريافت اطلاعات از صفحه مبداء در cross-page posting",
99)
|
مرحله
دوم : اضافه كردن اشياء به session state ' |
Session("Article1")
= ArticleInfo1
Session("Article2")
= ArticleInfo2
Session("Article3")
= ArticleInfo3
Session("Article4")
= ArticleInfo4
|
مرحله سوم
: اضافه كردن سطر به ليست ' |
lstItems.Items.Clear()
lstItems.Items.Add(ArticleInfo1.Title)
lstItems.Items.Add(ArticleInfo2.Title)
lstItems.Items.Add(ArticleInfo3.Title)
lstItems.Items.Add(ArticleInfo4.Title)
End
If
|
نمايش برخی اطلاعات پايه در رابطه با session
'
جهت بررسی اطلاعات پيكربندی '
|
Dim
strCookieLess
As
String
Dim strNewSession
As
String
If Session.IsCookieless
Then
strCookieLess =
"بلی"
Else
strCookieLess =
"خير"
End
If
If Session.IsNewSession
Then
strNewSession =
"بلی"
Else
strNewSession =
"خير"
End
If
lblSession.Text =
"شناسه : " &
Session.SessionID
lblSession.Text &=
"<br>تعداد اشياء
: "
lblSession.Text &= Session.Count.ToString()
lblSession.Text &= "<br>مد : "
& Session.Mode.ToString()
lblSession.Text &=
"<br>آيا session
ايجاد شده Cookieless است؟ "
lblSession.Text &= strCookieLess
lblSession.Text &= "<br> آيا session
جديد است ؟ "
lblSession.Text &= strNewSession
lblSession.Text &= "<br> اعتبار
session (بر حسب دقيقه ) : "
lblSession.Text &= Session.Timeout.ToString()
End
Sub
Protected
Sub cmdMoreInfo_Click(ByVal
sender As
Object,
ByVal e
As EventArgs)
Handles cmdMoreInfo.Click
If
lstItems.SelectedIndex = -1
Then
lblRecord.Text =
"آيتمی انتخاب نشده است"
Else
|
مرحله
اول :ايجاد نام كليد صحيح بر اساس ايندكس ' |
Dim Key
As
String
Key =
"Article" & (lstItems.SelectedIndex + 1).ToString()
|
مرحله دوم : بازيابی اشياء از
session state ' |
Dim ArticleInfo
As Articles =
CType(Session(Key),
Articles)
|
مرحله
سوم : نمايش اطلاعات مرتبط با شی بازيابی شده ' |
lblRecord.Text =
"عنوان مقاله :" &
ArticleInfo.Title
lblRecord.Text &=
"<br>شرح: "
lblRecord.Text &= ArticleInfo.Abstract
lblRecord.Text &= "<br>تعداد دفعات
مشاهده : " & ArticleInfo.ViewCount.ToString()
End
If
End
Sub
</script>
<html
xmlns="http://www.w3.org/1999/xhtml"
dir="rtl">
<head
runat="server">
<title>تست
session </title>
</head>
<body>
<form
id="form1"
runat="server">
<asp:Label
id="lblSession"
runat="server"
Width="472px"
Height="61px"
Font-Size="Smaller"
Font-Names="Tahoma"
Font-Bold="False"></asp:Label><br
/><br
/>
<div
>
<asp:ListBox
id="lstItems"
runat="server"
Width="345px"
Height="106px"
Font-Names="Tahoma"></asp:ListBox><br
/> <br
/>
<asp:Button
id="cmdMoreInfo"
runat="server"
Text="اطلاعات
بيشتر "
Font-Names="Tahoma"></asp:Button><br
/><br
/><br
/>
<asp:Label
id="lblRecord"
runat="server"
Font-Size="Small"
Font-Names="Tahoma"
></asp:Label>
</div>
</form>
</body>
</html>
|
شكل 1 نحوه عملكرد و
خروجی برنامه فوق را نشان می دهد .

شكل 1: نحوه
عملكرد session state
حتی المقدور می بايست
از تعداد session اندكی در برنامه استفاده گردد چراكه
مديريت آنها مستلزم انجام عمليات اضافه و استفاده از منابع محدود موجود در سمت
سرويس دهنده است . پياده كنندگان برنامه های وب برای رفع اين نگرانی می توانند يك
دكمه Log out را در صفحه مورد نظر خود پيش بينی نمايند
تا پس از كليك بر روی آن ، با استفاده از متد
Session.Abandon اقدام به حذف session گردد ( آزاد سازی
حافظه سرويس دهنده زودتر از موعد مقرر و مشخص شده توسط خصلت
Timeout ) .
در بخش دهم بحث خود را در ارتباط با
session state
ادامه داده و با نحوه پيكربندی آن در برنامه های وب آشنا خواهيم شد .
|
| |

|
جستجو
|
|
جستجو
|
|
|
|
مقالات
|
|
مشاهده گروه ها
|
|
|
 |
|
تهيه شده در شرکت سخا
روش - 1382 |