维生素C.net
Talents come from diligence, and knowledge is gained by accumulation 天才源于勤奋,知识源于积累。
难忘的1654天
博客园  首页  新随笔  新文章  联系  管理  订阅 订阅
随笔- 220  文章- 1  评论- 1631 
ASP.NET: State Server Gems

ASP.NET state-server(aspnet_state.exe进程)是以windows service的方式启动的,以会话状态(session state)的进程外(out-of-process)的数据存储来服务的。对于这个组件,有一点很重要的地方需要注意: it is important to note that it doesn’t oppose any authentication barrier to requestors。换言之,任何可以访问网络的人都可以潜在的获得所有session的数据。如果要保护session state并只让web server machine访问它,可以使用防火墙和IPSec策略来完成,当然也可以通过更改默认的端口(默认是42424端口)。然而,在web.config里简单的更改这个端口值是不够的(1.x和2.0都一样),还要修改注册表才可以
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters
把端口值写进port里(DWORD类型)
默认来说,state server只监听连接的本地回调接口(local loopback interface),如果状态服务器在另一台机器而不是web server上的话,就必须明确的允许远程连接(remote connection),注册表也是要改的,在上面的注册表的位置下要设置AllowRemoteConnection为一个非零的值。
2005年9月的MSDN Magazine中Fast, Scalable, and Secure Session State Management for Your Web Applications详细讲解了设计和部署高性能和安全会话的解决方案。

关于会话状态的一些需要注意的地方:
默认情况下,ASP.NET 应用程序将会话状态存储在辅助进程的内存中,特别是 Cache 对象的专用槽中。选中 InProc 模式时,会话状态将存储在 Cache 对象内的槽中。此槽被标记为专用槽,无法通过编程方式进行访问。换句话说,如果枚举 ASP.NET 数据缓存中的所有项目,将不会返回类似于给定会话状态的任何对象。Cache 对象提供两类槽:专用槽和公用槽。编程人员可以添加和处理公用槽,但专用槽只能由系统(特别是 system.web 部件中定义的类)专用。
到目前为止,InProc 可能是最快的访问选项。但请记住,会话中存储的数据越多,Web 服务器所消耗的内存就越多,这样会潜在地增加性能降低的风险。如果您计划使用任何进程外解决方案,应该认真考虑一下序列化和反序列化可能带来的影响。进程外解决方案使用 Windows NT 服务 (aspnet_state.exe) 或 SQL Server 表来存储会话值。因此,会话状态保留在 ASP.NET 辅助进程之外,并且需要使用额外的代码层,在会话状态和实际的存储介质之间进行序列化和反序列化操作。只要处理请求就会发生此操作,而且随后必须对其进行最高程度的优化。
因为需要将会话数据从外部储备库复制到本地会话词典中,所以请求导致性能下降了 15%(进程外)到 25% (SQL Server)。请注意,虽然这只是一种粗略的估计,但它应该接近于最低程度的影响,最高程度的影响将远高于此。实际上,这种估计并没有完全考虑到会话状态中实际保存的类型的复杂程度。
在进程外存储方案中,会话状态存活的时间较长,使应用程序的功能更强大,因为它可以防止 Microsoft® Internet 信息服务 (IIS) 和 ASP.NET 失败。通过将会话状态与应用程序相分离,您还可以更容易地将现有应用程序扩展到 Web Farm 和 Web Garden 体系结构中。另外,会话状态存储在外部进程中,从根本上消除了由于进程循环而导致的周期性数据丢失的风险。

附:

posted on 2005-10-27 09:50 维生素C.NET 阅读(1491) 评论(4)  编辑 收藏 所属分类: XHTML & Web Standard

发表评论
  回复  引用    
2006-02-23 14:38 | taye2 [未注册用户]
序列化和反序列化并没有想象中的开销那样大.
假设使用StateServer..产生15%的影响有一定的保留..
但SQL则确实会产生相当大的影响

如果主服务器和StateServer在同一台..则可以将开销减至更少..

我觉得StateServer还是很值的..特别是..分布式时..更加会显的重要了
  回复  引用    
2006-02-26 13:42 | jian [未注册用户]
与该网站无法联系
  回复  引用    
2007-01-25 16:16 | 天使 [未注册用户]
没有我要找的东西啊??好烦呀,
  回复  引用    
2007-05-05 00:45 | orichisonic [未注册用户]
曾经在asp.net高级编程中看到过inproc等三个的用法,这里解释的更地道
社区  新闻  新用户注册  刷新评论列表  

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印
所属分类的其他文章:
· http的基础知识帮助减少代码量和复杂度的一个Demo
· Microsoft Expression Web Designer
· ASP.NET: State Server Gems
· lifework总结的的Enterprise Library v1.0概述
· Microsoft Visual Studio Extensions for WinFX Beta 1
· Unable to get the project ile from the web server错误的解决方法
· 一个OOP的课程设计,不难实现,贴出来请大家指正。
· 出窥.net上的Nemerle语言
· Mono 1.1.5 正式发布,密切关联.net 2.0
· 春天终于来了
最新IT新闻:
· 腾讯CEO马化腾:中国互联网业准备再过冬
· F8 Keynote Speech[多图]
· 奥运核心资源被分食 搜狐央视网谁忽悠谁?
· 微软推新型搜索技术"BrowseRank"挑战谷歌
· 2008年7月26日IT博客精选
博客园新闻频道  博客园首页  社区
 






公告

view my mvp profile 看看有多少人来访问我的Blog了!
hotmail

<2005年10月>
日一二三四五六
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

  • 发短消息

常用链接

  • 我的随笔
  • 我的空间
  • 我的短信
  • 我的评论
  • 更多链接
  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿(168)

  • 给我留言
  • 查看留言

我参与的团队

  • 北京.NET俱乐部(2/1362)
  • 烟台.NET俱乐部(0/47)
  • ASP.NET AJAX (Atlas)学习(0/1321)
  • MVP团队(0/498)
  • 博客园培训团队(0/110)
  • Silverlight学习与研究(0/277)
  • CLR基础研究团队(0/359)

随笔分类(148)

  • ASP.NET(26)
  • Code Warehouse(20)
  • IronRuby,DLR(2)
  • LINQ(3)
  • Reading(3)
  • Training@cnblogs(23)
  • Ubuntu(4)
  • Windows Live(6)
  • Windows Mobile(7)
  • XHTML & Web Standard(54)

随笔档案(220)

  • 2008年3月 (2)
  • 2008年1月 (3)
  • 2007年12月 (3)
  • 2007年9月 (1)
  • 2007年8月 (2)
  • 2007年7月 (3)
  • 2007年6月 (3)
  • 2007年3月 (4)
  • 2007年2月 (3)
  • 2007年1月 (1)
  • 2006年12月 (1)
  • 2006年11月 (8)
  • 2006年10月 (6)
  • 2006年9月 (11)
  • 2006年8月 (5)
  • 2006年7月 (4)
  • 2006年6月 (1)
  • 2006年5月 (10)
  • 2006年4月 (8)
  • 2006年2月 (2)
  • 2006年1月 (1)
  • 2005年12月 (11)
  • 2005年11月 (13)
  • 2005年10月 (3)
  • 2005年9月 (1)
  • 2005年8月 (4)
  • 2005年7月 (3)
  • 2005年6月 (4)
  • 2005年4月 (5)
  • 2005年3月 (10)
  • 2005年2月 (7)
  • 2005年1月 (28)
  • 2004年12月 (15)
  • 2004年11月 (10)
  • 2004年10月 (5)
  • 2004年9月 (1)
  • 2004年6月 (13)
  • 2004年5月 (5)

文章档案(1)

  • 2005年5月 (1)

相册

  • ASPNET2tutorial
  • BlogUsing
  • My love and my friends
  • newGallery
  • 下一代网络图片

.net网站收藏

  • ASP.NET2.0 Tutorial
  • CodeBetter.com
  • F#
  • IIS.net
  • MS NewsGroup
  • NewsGroups
  • OnlyVC.org
  • VWD2005GuidedTour
  • ZDNet China软件技术专区

OSS 2007

  • Charsh
  • Kaneboy
  • Official Team Blog

Python

  • BeginnersGuide

好友的BLOG

  • DemoFox@JoyCode
  • DflyingChen
  • dudu
  • EricLee
  • hbifts
  • idior
  • Jesee Qing
  • Lion
  • Rickie
  • Samuel
  • Steph`s Website
  • 翱翔.Net
  • 陈敬熙
  • 发条木偶
  • 葛涵涛
  • 古道风
  • 寒枫天伤
  • 老猫の理想
  • 刘老师
  • 刘彦博
  • 吕震宇
  • 木野狐
  • 佘广
  • 王sir
  • 小涛
  • 小新
  • 肖老师
  • 旋哥

搜索

  •  

积分与排名

  • 积分 - 390207
  • 排名 - 52

最新评论

  • 1. re: .NET Beginner Training Step by Step开始启动
  • 申请加入
  • --paulo
  • 2. re: 在配置使用Membership或其他的Providers的ASP.NET2.0时一定要设置applicationName属性
  • 我正急切需要知道这个applicationname有什么用处,真是太感谢博主了!
  • --激动了
  • 3. re: .NET Beginner Training Step by Step开始启动
  • 我要加入 我要加入
  • --赵岩
  • 4. re: .NET Beginner Training Step by Step开始启动
  • dd
  • --Simens
  • 5. re: .NET Beginner Training Step by Step开始启动
  • ID: kettle8

    申请加入
  • --wangbo

阅读排行榜

  • 1. 英文名字及含义(24905)
  • 2. SQL Server 2005 Remote Access(14569)
  • 3. Visual Studio 2005 Team Edition和SQL Server 2005的下载(14239)
  • 4. Windows Installer 3.1(11111)
  • 5. Visual Studio 2005 Professional Released(10846)

评论排行榜

  • 1. .NET Beginner Training Step by Step开始启动(309)
  • 2. Windows Live Messenger 8.0 Beta 的邀请(100)
  • 3. 加入[ 下一代网络web技术(Next Generation Web Application)团队Blog ](85)
  • 4. 博客园新手.net技术培训活动(55)
  • 5. 为什么在vista上做开发?(54)
Copyright ©2008 维生素C.NET