11.5 Application与Session对象的使用
Application与Session对象是网页数据共享的重要通道,在这一节将介绍其使用技巧和注意事项。
11.5.1 正确使用Application和Session变量
Session 变量不同于 Application 变量,其存储数据是用户专用数据,换句话说,除非是用户相关数据,否则使用 Session 变量只是浪费服务器的内存资源。例如,在 Session_Start()事件处理程序中建立 Session 变量,如下所示。
Sub Session_Start(ByVal Sender As Object,ByVal E As EventArgs)
Session(" DBProvider")= " Microsoft.Jet.OLEDB.4.0;"
Session("DBSource")= Server.Mappath("/Ch08/Users.mdb")
End Sub
上述过程建立Session变量DBProvider和DBSource。在ASP.NET程序中打开数据库连接的程序代码段,如下所示。
strDbCon = "Provider=" & Session(" DBProvider")& _
"Data Source=" & Session("DBSource")
objCon = New OleDbConnection(strDbCon)
objCon.Open()
上述程序代码不论是500或5位用户,Session变量值都一样,存储500或5份相同内容的变量,只是在白白浪费内存空间。
Session变量的目的是存储用户专用数据,对于固定内容的变量,应该使用 Application变量。因为 Appliction 变量是共享给所有用户,它应该是在 Application_Start()事件处理程序中,如下所示。
Sub Application_Start(ByVal Sender As Object,ByVal E As EventArgs)
Application(" DBProvider")= " Microsoft.Jet.OLEDB.4.0;"
Application("DBSource")= Server.Mappath("/Ch09/Users.mdb")
End Sub
在 ASP.NET 程序中建立数据库连接的程序代码段如下所示。
strDbCon = "Provider=" & Application(" DBProvider")& _
"Data Source=" & Application("DBSource")
objCon = New OleDbConnection(strDbCon)
objCon.Open()
上述程序代码不论是500或5 位用户,Application 变量都只有一份,所有用户存取相同的Application 变量。在第 11.7节中将介绍另一种方法来存储数据库连接字符串。
11.5.2 使用Application和Session对象存储对象
Application 和 Session 变量可以用来存储 Hashtable 集合对象,如下所示。
Dim userArray As Hashtable = New Hashtable(5)
Application("UserList")= userArray
不仅如此,还可以存储 ADO.NET 的 DataView 对象,如下所示。
Dim objView As DataView=New DataView(objDs.Tables(0))
Application("Source")= objView
上述程序代码的Application变量存储DataView对象的数据表记录数据。
虽然可以使用 Application 变量存储 ASP.NET 应用程序所需的数据,不过,数据最好是很少更改或只需加载一次的数据。例如,数据表中的商品数据很少更改,为了增加应用程序的执行效率,可以将这些数据使用 Application 变量存储在内存中。
ASP.NET程序范例保存在Ch11\Ch11-5-2文件夹中,在Global.asax文件的 Application_Start()事件处理程序中,从 XML 文件读入 DataView 对象后,建立 Application 变量存储 DataView 对象。
Ch11-5-2.aspx 使用 GridView 控件的数据绑定,以表格显示 Application 变量的 DataView 对象,如图11-9所示。

图11-9 Ch11-5-2.aspx运行结果
上图显示 Ch11-5-2.xml 文件内容,这是第 9 章输出 DataSet 对象建立的 XML 文件。







