ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:261KB ,
资源ID:1276936      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1276936.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在SQL Server数据库里存储Session.doc)为本站会员(滴答)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

在SQL Server数据库里存储Session.doc

1、 1 在 SQL Server 数据库里存储 Session HTTP 是个状态很不确定的协议,为了允许用户通过请求保存状态信息,ASP.NET 提供了 Session 存储机制。这些 Session 变量按每个用户被存储起来。在传统的 ASP 里,你只能在 Web 服务器的内存里暂时存储 Session 变量,但是这个方法已经被证明了在扩展性和可依赖性上的不足。在 ASP.NET 里,你可以为你的每个请求定制 Session 状态存储。 本文将探讨存储 Session 变量可伸缩性和可靠性都很好的方式之一的 SQL Server 。 在传统的 ASP 里 ,默 认的 Session 状态保存

2、在服务器的内存中。 但是,这种做法带来两方面的问题 : ( 1)它让服务器超负荷,影响了网站服务器的伸缩性能。 ( 2)它不能有效地应用于 Web 服务器群。 让我在一些细节上讨论这些问题,使你能为你选择了 Session 存储感到庆幸。 Session 变量依据每个用户为基础生成。 默认情况下,它们都保留在 Web服务器的内存中。 想象一个有着成千上万用户的网站。 由于巨大的用户数量, Web 服务器存储的活跃 Session 的数目也将非常的多。 这意味着你存放着非常多的 session 数据在 Web 服 务器的内存中。 如果不断的对服务器增加负载, 它可能达到饱和,以至造成对应用程序整

3、体扩展性能上的不良影响。 为了解决这个影响到扩展性能的问题,实现 Web 集群。所谓的 Web 集群是一组网络服务器并行运行, 服务器集群里的每个 Web 服务器都有您的网站的一个镜像。您的网站的流通负载平均分配给每个可用的服务器,从而达到负载平衡。 在 Web 服务器的内存里存储 Session 变量会阻碍 Web 集群的建立,下面将举例来说明: 假定有三个 Web 服务器: S1 , S2 ,和 S3 。并行地连接在一起接受用户请求。 假定这个时候 有一个请求 R1 来到服务器集群并且负载平衡逻辑判定 S2,S3都因为某些其他的任务而没有空闲,但是 S1可以处理这个请求。很显然,这个请求会

4、被送到 S1 进行处理。现在,想象在这个处理过程当中你在 S1的内存中存储了某个 Session 变量。到目前为止,一切还很好。过了一些时间,同样的用户有了另一个请求 R2,这个请求需要上一个请求所存储的 Session 变量。但是这个时候 S1 已经被一些任务使用着,而 S2, S3却处于空闲的状态。你可以猜到根据每一条的负载平衡规则, R2 将会被送到 S2 进行处理。但是,如果那发生了,S2怎么能够 得到 Session变量?毕竟,它们存储在和 S2完全没有任何关联的 Web服务器 S1的内存中。这意味着 R2 仍然得等待 S1 的空闲。这种事情很显然是 Web服务器群资源的浪费。 AS

5、P.NET 2.0 及其 Session 信息存储 2 ASP.NET 2.0 允许你存储 session 变量在三个不同地方 : ( 1)在网站服务器的内存中存储 (进程中的 )。 ( 2)在一台专门用来存放 Session 变量的服务器中存储。 ( Session 状态信息存储服务器 ) ( 3)在一个 SQL Server 的数据库里面存储。 默认情况是第一种存储模式 。 模式二和模式三通常被称为“进程外”的模式,因为 Session 变量的存储和Web站点没有关系。 在这篇文章,你将被限制在只 探索 第三种模式。在 SQL Server数据库里存储 Session 变量具有以下优点 :

6、 ( 1)可扩展性 : 如果您正在找一个高度可扩展性的方法来储存 Session 变量 , SQL Server 正是如此,它比其它的可扩展性更好。 Web 服务器群可以很容易地获取 Session 变量,因为它们都储存在一个独立的数据库。 ( 2)可靠性 :因为数据是很真实的存放在数据库里面,它比其他方法都要好。不用去担 心服务器重启的问题。 ( 3)安全 : SQL Server 比在内存或 Session 状态信息存储服务器中更安全。 你可以更简单的通过配置 SQL Server 的安全选项来保护你的数据。 在 web.config 文件里,可以通过定义一个 来配置 Session状态模

7、式 。 备注 : 如果是在 Web 服务器群里, Web 服务器群的每一台服务器的 IIS METABASE的应用程序路径应该是完全相同的。 Session 结束事件不会因为任何进程之外的模式发生。 配置 SQL Server 来储存 Session 状态 在你真正的在 SQL Server 存储 Session 状态之前, 你需要先配置它。 配置工作都是通过一个名为 aspnet_regsql.exe 的命令行工具来完成的。 在 SQL Server 里面,你可以在三个可能的地点存储 Session 状态, (1)临时存储 : 在这种情况下, Session 状态保存在 SQL Server

8、 的 tempdb 数据库里面。 该工具建立一个数据库名为 aspstate 并增加特定的存储过程来管理要保存的 Session 信息。 这个工具还创建 tempdb 数据库所需的表。 如果您重新 启动 SQL Server 服务, Session 信息不会丢失。 3 (2)持久存储 : 该工具建立一个数据库名为 aspstate 并增加特定的存储过程来管理要保存的 Session 信息。 Session 状态信息储存在 aspstate 数据库里。 这种方法的优点是,即使您重新启动的 SQL Server 。 Session 信息也不会丢失。 (2)定制存储 :Session 状态信息和数据

9、存储过程都有用户定制存储。 同时数据库的名称必须在配置文件中声明。 下面的表列出了这个工具与 Session 存储配置相关的各种命令行开关: 命 令行开关 备注 -S 指定你想要存储 Session 状态信息的 SQL Server 服务器的 IP 地址或者服务器名。 -U 指定和 SQL Server 连接时使用的用户名。 -P 指定和 SQL Server 连接时使用的用户的密码。 -E 指出你想要连接的 SQL Server 服务器需要完整的安全策略 -ssadd 添加支持服务器模式的 session 状态 -ssremove 移除支持服务器模式的 session 状态 -sstype

10、Session 状态支持的类型 ,一下是可以支持的类型 : t 代表临时存储 p 代表持久存储 c 代表定制储存 -d 用于使用的数据库的名字 如果要转换 -sstype,就用命令“ c“ 表单和创建的存储过程 作为一个开发人员 , 你可能从来无法直接影响 session状态数据库。 然而 , 当你运行 ASPNET_REGSQL.EXE 工具 , 你将会对表单和数据库的创建会有一个很好的理解。 4 配置 1:在 SQL 数据库服务器中创建表单 配置 2:在数据库服务器中创建存储过程 配置你的网站来存储 Session 状态 一旦你配置你的 SQL 服务器来 支持 session 状态存储,下

11、一步就是配置你的网站了。 web.config 的标记 允许你指定 session 存储的信息。下列的表中列出了一些这个标记得重要属性: 属性 描述 mode Mode 属性可以使用一下的几个值: Off:指示这个 session 状态关闭 . InProc: 指示这个 session 将被存储在 web 服务器的内存中。这是默认的设置 StateServer:指示这个 session将被储存在一个状态服务器中 SQLServer: 指示这个 session将被储存在一个 SQL服务器的数据库中 . Custom: 指示你将会有一个定制的 session 存储机制,这个机制使用了 ASP.NE

12、T 的提供的模式 sqlConnectionString 如果模式被设置为 SQL 服务器,你必须指定这个属性。这个属性指定了那个 SQL 服务器数据库的连接字符串。这个数据库的是用来进行状态的存储的。注意,如果你使用了临时的5 或者持久的存储选项时候,你不需要在连接字符串中指定数据库的名称(见上) 。 allowCustomSqlDatabase 如果你想去存储 session 状态在一个你自己的 SQL 服务器的数据库中的时候,你必须设置这个属性为“ TRUE”。一旦这个属性被设置为 true,你要在上面说描述的连接字符串中指定数据库的名称。 例子 你可以开发一个简单的网站,设置它来存储一

13、个在 SQL 服务器数据库中的sesseion 状态,来示例你到目前为止所学的东西。 设置 SQL 服务器 打开 Visual Studio.NET 2005 命令提示器,使用一下命令 aspnet_regsql -ssadd -S .sqlexpress -E -sstype p aspnet_regsql -ssadd -S .sqlexpress -E -sstype p 现在,你正在使用带着完整安全属性的 SQL Express 数据库。 配置 3 展示了一个把带着 session 状态类型的工具设置为 “persistent“的例子。 配置 3:运行 _regsql.exe 工具 创

14、建和配置一个网站 6 现在,创建一个新的网站,修改 web.config 文件成下列的代码 这里,你添加了这个 标记,设置它的模式属性为 SQLServer。你还要指定 sqlConnectionString 属性,把它指向你的 SQL SERVER。 创建测试网站的 WEB 窗体 在 WEB 站点中添加两个 WEB 窗体。这两个窗体分别叫 page1.aspx 和page2.aspx。第一个 WEB 窗体将显示一个产品列表来选择。被选择的产品被保存在 一个 DataSet 中。然后通过保存这个 DataSet 在一个 session 变量中来把它在请求中传递。第二个 Web 窗体简单的显示了

15、来自 DataSet 中的被选择的产品。 通过一下的步骤来完成第一个 Web 窗体: 拖拉一个 GRIDVIEW 控件和一个 SQL Data Source 控件在 WEB FORM 上 . 配置 SQL Data Source, 从 Northwind 数据库的 Products 表中选择ProductID, ProductName, 与 UnitPrice columns 通过设 置他的 DataSourceID 属性到 SQL Data Source 控件的 ID属性上来绑定 GridView 到 SQL Data Source 上 . 在 GridView 的 samrt 标记上 ,

16、点击 “Allow Selection“ checkbox. 添加一个 HyperLink 控件 ,设置 NavigateUrl 属性到 Page2.aspx. 创建一个 DataSet 和 DataTable. FataTable 包含两个 DataColumns: ProducyName 和 Qty. 然后你存储一个 session 变量 “myds“.当用户选择一个产品的时候 , 你可以创建一个新的 DataRow, 分配产品的资料给它 , 添加这个 ROW去 DataTable. 用户的选择可以在跨多个请求中持续 . 按一下的步骤创建第二张的 Web form 拖拉一个 GridVie

17、w 到 Web form 上 . 添加两个绑定区域 7 设置第一个绑定区域的 HeaderText属性成 “Product Name“. 同样的 ,设置DataField 成 “Product Name“. 设置第二个绑定区域的 HeaderText 属性成 “Quantity“. 同样的 ,设置DataField 成 “ Qty “. 添加下列的代码到第二张 Web Form 的 Page_Load event handler 上 protected void Page_Load(object sender, EventArgs e) GridView1.DataSource=(DataSe

18、t)Session“myds“; GridView1.DataBind(); 这里 ,你设置 GridView 控件的 DataSource 属性到你的储存在 session 上 的DATASET.然后你通过调用 DataBind() 方法来绑定 GridView. 运行 WEB FORMS 的例子 为了测试你的 WEB FORMS, 设置 Page.aspx 作为你的起始页 , 然后运行你的WEB SITE. 你应该看到如图 4 所展示的 : Figure 4: 运行 Page1.aspx 的例子 8 通过” Add to cart”按钮选择一些产品 . 这将会添加一些行在 DataTabl

19、e上 . 记得你正在存储你的 DataSet 在一个 session 变量之中 . 然后 ,通过点击”Show mycart” 超链接导航到 Page.aspx . 图 5 显示了带着前面所选的产Page.aspx. 配置 5: 运行 Page2.aspx 的例子 正如你所见的 , Page2.aspx 正确的显示了你在前页所选的那些条目 . 这显示你的 session 变量被真正的存储在了 SQL服务器的数据库中 ,并被在第二页中找回 . 还有 , 注意你在无关储存模式的 session 中用了相同的存储调用值得标记 . 储存 Session 状态在 SQL 服务器中的劣势虽然存储 sess

20、ion 状态在 SQL 服务器中可以使你的网站更容易拓展和更稳定 . 但是这个 技术有一下的几个劣势执行上 : 在执行的几个项目中 ,一个基于 SQL SERVER 的 session 存储可能是一个最慢地选择 . 因为你的 session 变量是存储在物理的数据库中 .它用了更多的时候去存储和读取数据库 . 这会影响了你的网站的运行速度 . 花费 : 因为你存储你的数据在数据库中 , 你需要一个 SQL 数据库的执照 , 这将给你的网站带来额外的开销 . 连续的数据 : 这个方法要求你所有保存在 session 变量中的数据必须是连续的如果你想存储数据在一个 session 中 ,这也许强制你去标记你自己的类作为 Serializable. 总结 ASP.NET 2.0 可以允许你存储 session 状态到一个 SQL 服务器的数据库中。 ASPNET_REGSQL.EXE 工具配置了数据库来支持这个特性。 更进一步, 标记配置你的网站来支持这个模式。 存储一个session 状态在一个 SQL 服务器中是一种更具拓展,安全性和稳定性的选择。虽9 然, 这种选择的运行相对于其他选择而言将会更慢。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。