会议的替代方案?(asp.net mvc#)

会议的替代方案?(asp.net mvc#),c#,asp.net-mvc,.net-3.5,C#,Asp.net Mvc,.net 3.5,有人告诉我,我们要使用的服务器有2gb的ram,但其上运行的当前主应用程序几乎耗尽了内存。 但是对于我们正在构建的完全依赖于web服务的站点,我们需要在一个链中传递对先前请求的响应。。。 i、 e 第一页 第二页 由于“他们”不希望我们在会话中存储“很多”,并且使用ASP.net MVC#,还有什么其他方法可以保持我们的内存占用率低,但允许我们存储用户进程所需的数据。使用TempData但在您自己的提供者中实现接口ITempDataProvider,该提供者使用数据库或类似的方法来代替会话。您可

有人告诉我,我们要使用的服务器有2gb的ram,但其上运行的当前主应用程序几乎耗尽了内存。 但是对于我们正在构建的完全依赖于web服务的站点,我们需要在一个链中传递对先前请求的响应。。。 i、 e

第一页

第二页


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

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

您可以查看Distributed HightyMicrosoft提供的可扩展内存缓存。查看Stephen Walther的文章。

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


痛苦和昂贵的事情,但你可以做到。只需向他们引用开发这种解决方案所需的工时成本,然后将其与一台像样的服务器的成本进行对比。

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

如果您有一台数据库服务器,然后根据需要创建临时表来存储数据。

赞成票:有人否决了它,对于流程中的一些场景来说,这似乎是一个可行的选择,但是在搜索结果的情况下,为了避免重复请求,当前正在会话中存储results对象。临时数据在第二次请求所述数据后丢失,因此在所有情况下似乎都不太可行。根据>>我们已决定使用临时数据(从技术上来说,这是“从我看到的”仍在使用会话)和正常会话的混合。不过,使用TD可以确保一旦使用了我们不需要的东西,就可以正确地处理掉,这很好:o)到目前为止,我发现速度的唯一问题是CPU开销,当试图用它来取代企业缓存实现时,我们的CPU周期就达到了极限。我们最终选择了memcache,它不仅是一款久经考验的软件,而且速度极快。显然,它只出现在技术预览中,因为一家大公司(谁也不能给我所需的资源)不会安装任何尚未签署的软件;因此,我无法在.net 3.5附带的基本编程集之外工作。我肯定知道这一限制,请利用TempData结构,然后在预览之外使用temprovider,您可以替换temprovider以使用分布式缓存(如果您需要这种可伸缩的缓存)。使用大口径枪射击,并将其外包给了解web应用程序开发的供应商;o) 我肯定会考虑在我可以摆脱它的地方使用它,然后希望问题会消失,或者他们会给我一个完整的服务器,而不是让我与一个内存占用者共享空间。你回顾了应用程序当前如何使用内存吗?记忆中的东西比需要的时间长吗?您可以进行一些更改和优化,以减少应用程序的内存需求,并为其他事情提供一些内存。与引入不同的缓存策略并对其进行彻底测试相比,这些更改可能相对容易、成本更低、效率更高。此外,当数据被序列化和反序列化时,缓存类型(磁盘I/O或进程外,如数据库)可能会对性能产生不良影响?让他们安装更多的内存。2GB对于生产服务器来说低得离谱。该服务器有3.5,32位操作系统上的最大可用容量;计划在几个月后升级到64位,这将允许他们用ram填充它。2Gig进入IIS,据我所知,其他1.5版已被操作系统等使用。4周完成设计、代码调试、笔和负载测试。。。在ASP.net中,显然有很多种剥猫皮的方法;MVC太棒了,我不打算去解决本质上是IT造成的问题。最初的规范是与他们一起提供一个定制服务器。。。因此grrSmall字符串/int等变量并不是问题所在;其更多的结果集(大小为500的listarrays)*每个cookie最多4 KB*300个cookie总数,最多1.2 MB*20个cookie可从特定服务器或域接受不幸的是,我在基本应用程序之外没有可用的存储空间;否则,这将是一个很好的选择,也是会话存储(而不是inproc)的可选选择
var stepone = project.webservice.stepone("companyname","companyid"); //List Array Returned
var steptwo = project.webservice.steptwo(stepone, otherargs);