Asp.net mvc MVC 3传输大数据(5MB)
我们有一个MVC项目,该项目将处理显示跟踪日志机制,该机制从多个应用程序收集数据,这些应用程序都与一个主应用程序套件相关。跟踪日志记录工具是一种服务,它收集异常和其他各种日志记录信息,并将它们放在数据库中供以后使用。这个MVC项目就是这种消费的一部分 我相信您可以看出,有很多数据是通过Entity/LINQ返回的。现在,开发人员正在收回所有数据,并使用会话变量来保存这些数据(我想他说,返回的数据相当于3-5MB)。只有512条记录道被发送回视图/浏览器。然后,用户可以通过AJAX调用按他们键入的任何内容进行过滤。开发人员使用旧的Session[“name”]对象将数据放入,并使用LINQ在服务器上对其进行筛选,这样他就不会在每次选择/键入筛选器时都访问跟踪服务 它在本地工作,但不能远程工作。我认为IIS有一个问题,但尚未对此进行研究Asp.net mvc MVC 3传输大数据(5MB),asp.net-mvc,linq,session,large-data,Asp.net Mvc,Linq,Session,Large Data,我们有一个MVC项目,该项目将处理显示跟踪日志机制,该机制从多个应用程序收集数据,这些应用程序都与一个主应用程序套件相关。跟踪日志记录工具是一种服务,它收集异常和其他各种日志记录信息,并将它们放在数据库中供以后使用。这个MVC项目就是这种消费的一部分 我相信您可以看出,有很多数据是通过Entity/LINQ返回的。现在,开发人员正在收回所有数据,并使用会话变量来保存这些数据(我想他说,返回的数据相当于3-5MB)。只有512条记录道被发送回视图/浏览器。然后,用户可以通过AJAX调用按他们键入的
我想知道对于这样的大数据,会话是否是最好的方法,或者是否有更好的建议而不是更好的会话。。我知道MVC是无状态的,我尽我所能保持它除了TempData之外没有任何东西,但不确定如何解决这个问题,否则最好使用HttpRunTime.Cache来存储数据,因为它在过期方式上具有灵活性,特别是当跟踪是应用程序的全局跟踪时,例如
private List<string> GetApplicationSuiteTraces()
{
List<string> applicationSuiteTraces = Cache["ApplicationSuiteTraces"];
if(applicationSuiteTraces == null)
{
applicationSuiteTraces = Service.GetTraces();
Cache.Add("ApplicationSuiteTraces", applicationSuiteTraces, null, DateTime.Now.AddSeconds(600), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
}
return applicationSuiteTraces;
}
private List getApplicationSuite()
{
List applicationSuiteTraces=Cache[“applicationSuiteTraces”];
if(ApplicationSuite==null)
{
ApplicationSuite=Service.GetTraces();
Add(“applicationSuite”,applicationSuite,null,DateTime.Now.AddSeconds(600),Cache.NoSlidingExpiration,CacheItemPriority.High,null);
}
返回应用程序套件;
}
您是否使用会话缓存服务中的数据?或者您正在使用会话做什么?会话用于缓存来自服务的数据,以减少对大量数据的访问。然后MVC应用程序使用这些缓存数据通过linq进行过滤(此时实时性不是问题)为什么不使用缓存对象的标准方式?完美的交钥匙。我有一个关于使用HttpRuntime.Cache的博客。直到你发帖我才想到这件事。再次感谢!