我对会话状态模式有基本的了解,我已经通过MSDN上的this article但无法理解何时使用InProc,StateServer和SqlServer会话模式?更具体地说,在何时使用状态服务器什么时候使用sqlserver?Inproc和Outproc会话状态模式
回答
3种不同的模式可以帮助您以不同的方式分散您的状态,从而使您的应用程序在整个农场中更具可扩展性,并使其在自己的操作中更加健壮。
是InProc
InProc方式是其中的会话都将附加到实际运行它的过程中最基本的会话管理方案。这意味着它具有最快的响应时间,因为服务器不必去替代源来获取它所需的数据。虽然技术上最快,但它也是最弱的,因为它只能在运行网站的服务器上使用。它也容易出现内存转储。如果您的网站因任何原因崩溃,会话会随着流程一起转储。对于小而稳定的网站,InProc是完全可以接受的,甚至可能是理想的。 InProc还具有能够在会话中保存任何内存对象的好处。如果您尝试持有巨大的物体,这也会产生问题。
的StateServer
的StateServer是指可以驻留在任何特定的机器上的ASP.Net状态服务器服务。它通常在端口42424上运行,可以为单台机器或多台机器提供服务。它的目的是比SQL服务器状态管理方法更快,但我认为速度的差异可以忽略不计。也许在非常大的企业环境中,这种差异变得明显,但对于我所见过的网络农场而言却并非如此。 StateServer要求会话中的任何对象为Serializable
以便正确存储和传输。这意味着不仅可以将任何对象放置在会话中,所以在构建类时您有计划。状态服务器可以位于您的网站所在的机器上,也可以位于可通过42424端口访问的计算机上。这意味着会话数据与IIS进程分离,因此“免疫”崩溃和挂起。这使您可以拥有使用公共状态服务器的服务器场,并且如果客户端不需要限制到特定服务器,则负载平衡就会变得简单。虽然状态服务器服务相当快速,但它运行在许多网络管理员认为是入侵的另一个“攻击媒介”的端口上。这导致SQL状态服务器。
SqlServer SqlServer模式的操作与StateServer非常相似。对象必须是序列化的,SQL服务器可以是本地的,也可以是远程的,因此它不太容易出现服务器场中的单个服务器崩溃。网络管理员倾向于选择SQL服务器进行状态管理,因为它们可以减少入侵向量。由于你的网站可能需要一个sql服务器来执行数据访问,这只是小猪的后盾。 Sql服务器还允许你明确地检查状态表中的内容。
我的偏好通常是StateServer。启动和运行起来非常简单,并且您可以拥有一个通用的,用于许多不相关的环境(re:dev,qa等)的状态。它不需要实际的维护,而且非常容易设置。它也不需要许可证就像sql server那样运行。但是,随着您对分散性和安全性的需求增加,sql server变得更加友好。仅将InProc用于流量有限的最基本站点或站点。
StateServer也被称为'Outproc' –
- 1. InProc处于会话状态
- 2. ASP.net dataview在outproc会话状态
- 3. 是InProc会话状态负载
- 4. InProc会话状态不工作
- 5. inproc和outproc之间的区别
- 6. ASP.NET会话状态服务器与InProc会话
- 7. 会话状态SQLServer模式
- 8. InProc会话状态,Web场和唯一且粘滞的SessionID?
- 9. 你可以结合inProc和会话状态的最佳?
- 10. ObservableCollection“CollectionChanged”未在OutProc会话状态下触发
- 11. Azure,Asp.Net和inproc会话
- 12. 如何将会话状态从InProc移动到SQLServer
- 13. 为InProc强制执行序列化会话状态访问?
- 14. ASP.NET更改会话状态模式
- 15. 状态服务器会话模式
- 16. 会话:从InProc到SQL会话
- 17. 会话状态反模式(或一般全局状态)
- 18. 有状态会话Bean和HTTP会话
- 19. InProc会话数据消失
- 20. EJB无状态会话bean和有状态会话bean
- 21. 不能使用inproc以外的状态服务器模式
- 22. php.ini和IIS会话状态
- 23. 会话状态
- 24. 会话状态
- 25. 无法序列化会话状态。在'StateServer'和'SQLServer'模式下
- 26. MVP和应用程序控制器模式的会话状态
- 27. 当会话状态为状态服务器/ outproc时,数据没有在Jqgrid中加载
- 28. 如何最好地解决InProc会话状态变量\多实例问题?
- 29. 会话状态CLOSED_LOGIN_FAILED
- 30. ASP.NET会话状态
我认为所提到的文章很好地解释了何时使用每种模式。究竟哪一部分你不明白? – haim770