【问题标题】:Alternative To Sessions? (asp.net mvc c#)会话的替代方案? (asp.net mvc c#)
【发布时间】:2010-11-19 02:44:10
【问题描述】:

有人告诉我,我们要使用的服务器有 2gb 的内存,但当前运行的主应用程序几乎已用尽。 但是对于正在构建的站点,它完全依赖于 Web 服务,我们需要将响应传递给链中的前一个请求...... 即

第一页

var stepone = project.webservice.stepone("companyname","companyid"); //List Array Returned

第二页

var steptwo = project.webservice.steptwo(stepone, otherargs);

由于“他们”不希望我们在会话中存储“很多”,并且使用的是 ASP.net MVC C#,还有什么其他方法可以保持我们的内存占用低但允许我们存储我们的内容需要用户进步。

【问题讨论】:

  • 他们是谁?让他们安装更多的内存。 2GB 对于生产服务器来说太低了。
  • 服务器有3.5,在32Bit操作系统上最大可用;计划在几个月内升级到 64 位,这将允许他们用 ram 填充它。据我所知,2Gig 转到 IIS,其他 1.5 被 OS etal 消耗。

标签: c# asp.net-mvc .net-3.5


【解决方案1】:

使用TempData,但在您自己的提供程序中实现接口ITempDataProvider,该提供程序使用数据库或类似的代替会话。

【讨论】:

  • Upvoted:因为有人投了反对票,对于过程中的一些场景来说,这似乎是一个可行的选择,但在搜索结果的情况下,为了避免重复请求,当前将结果对象存储在会议。临时数据在第二次请求所述数据后丢失,因此在所有情况下似乎都不太可行。
  • 我们决定混合使用 TempData(从技术上讲,“根据我所见”,仍在使用会话)和普通会话。虽然使用 TD 可以确保我们不需要的东西在使用后得到妥善处理,这很好:o)
【解决方案2】:

您可以查看 Microsoft 的 Velocity 分布式高度可扩展的内存缓存。查看 Stephen Walther 的 blog post

【讨论】:

  • 到目前为止,我发现 Velocity 的唯一问题是 CPU 开销,当试图推动它来替换企业缓存实现时,我们的 CPU 周期已经达到顶峰。我们最终选择了 memcache,它不仅是一款经过验证的软件,而且速度非常快。
  • 它显然只在技术预览中,作为一家大公司(谁不能给我我需要的资源)他们不会安装任何尚未签署的东西;所以我不能在 .net 3.5 附带的基本编程集之外工作
  • 我绝对知道这个约束,使用 TempData 结构,然后在预览后,您可以替换您的临时提供程序以使用分布式缓存(如果您需要那种可扩展的缓存)。
  • 用大口径枪射击 IT 并将其外包给了解 Web 应用程序开发的供应商;o) 我肯定会考虑在可以摆脱它的地方使用它,然后希望要么解决问题会消失,否则他们会给我一个完整的服务器,而不是让我与内存猪共享空间。
  • 您是否查看过应用程序当前是如何使用内存的?记忆中的东西是否比他们需要的时间更长?您可以进行一些更改和优化,以减少应用程序的内存需求并为其他事情提供一些可用内存。与引入不同的缓存策略并对其进行彻底测试相比,这些更改可能相对容易、成本更低且更有效。此外,随着数据被序列化和反序列化,缓存类型(磁盘 I/O 或进程外,如数据库)可能会对性能产生不良影响。
【解决方案3】:

您甚至可能不得不放弃 MVC(也许?)并返回使用基本的网络表单 POST 数据并禁用所有事件状态。您可以通过表单变量和页面上的输入来管理您需要的所有数据,只要一个页面 POST 到另一个页面,这将消除会话。

这样做既痛苦又昂贵,但你可以做到。只需引用他们开发此类解决方案所需的工时成本,然后将其与体面服务器的成本进行对比。

【讨论】:

  • 4 周完成设计、代码调试、PEN 和负载测试...在 ASP.net 中显然有很多方法可以给猫剥皮; MVC 非常棒,我不打算针对本质上是 IT 制造的问题进行迁移。最初的规范是他们提供自定义服务器......因此grr
【解决方案4】:

根据数据,您可以将其存储在 cookie 中。

【讨论】:

  • 小字符串/int等变量不是问题;它的更多结果集(大小为 500 的列表数组)
  • * 每个 cookie 最多 4 KB * 总共 300 个 cookie,总共最多 1.2 MB * 从特定服务器或域接受的 20 个 cookie
【解决方案5】:

如果您有数据库服务器,则根据需要创建临时表来存储您的数据。

【讨论】:

  • 不幸的是,除了基本应用程序之外,我没有可用的存储空间;否则这将是一个不错的选择,也是 Sessions Storage 而不是 inproc 的可选选择
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 2018-11-25
  • 2018-01-15
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多