( تعداد نمایش : 473 )

حوه پیکربندی session در برنامه های وب ASP .NET

در بخش هشتم با مفاهیم و معماری 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 (بخش هفتم) “, _
” کوکی های سفارشی و نحوه عملکرد آنها”, ۹۴)
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>

شکل ۱ نحوه عملکرد و خروجی برنامه فوق را نشان می دهد .

شکل ۱:  نحوه عملکرد session state

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

دیدگاه خود را بیان کنید.

باید وارد سایت شده باشید برای دیدگاه دادن