如何在ASP.NET中实现实时更新
|
我看过几个网站向您展示数据库中正在发生的事情的实时更新.一个例子可能是 >股票报价网站,实时显示股票价格 我假设这将涉及某种轮询机制,每隔几秒查询一次数据库并在网页上呈现它.但是当我从绩效的角度考虑时,这个想法让我感到害怕. 在我正在处理的应用程序中,我需要显示用户已提交的操作的实时状态.用户等待该过程完成.当操作完成时,状态由另一个进程(可以是Windows服务)更新.我应该每秒查询一次数据库以获取更新状态吗? 解决方法它不一定在db中完成.正如你所说的那样昂贵.虽然db可能是一个后备存储,但可能会使用一种更有效的机制来配合轮询操作,例如将实时状态存储在内存中以及最后在db上.您可以比每秒从表中的SELECT状态更有效地轮询内存.正如我在评论中提到的,在某些情况下,您可以通过动画伪造状态更新的外观来获得很多好处,例如,使用估算,不经常检查数据源. 编辑 (优化使用更少的db资源实时) 不是每个用户轮询数据库以每X秒检查一次作业状态,而是略微改变情况的行为.每次将作业添加到数据库时,请读取数据库一次,以将有关所有作业的元数据放入缓存中.因此,内存缓存将反映[user49 … user3,user2,user1,userCurrent] 50个用户的作业(如果每个作业1个). (也许我应该把它写成[job49 … job2,job1,job_current]但同样的想法) 然后,各个用户的网页将轮询始终保持最新的缓存.在此示例中,db仅在缓存中读取50次(每个作业提交一次).如果这50个用户平均等待1分钟进行作业处理并每秒轮询一次状态,则用户群总共轮询缓存50个用户x 60秒= 3000次. 在50分钟的时间内,这是50个数据库读取而不是3000个. (平均每分钟一个.)缓存总是新鲜的,但处理负载.它比考虑每个用户每秒点击数据库要小得多.您可以在缓存中存储其他统计信息和信息,以帮助进行估算等.只要新缓存提供更高的效率,它就是大规模数据库命中的可行替代方案. 注意:通过缓存,我指的是像Application或第三方解决方案这样的全局存储,而不是快速超出范围的ASP.NET页面缓存.使用ASP.NET机制进行缓存可能不适合您的情况. 另一个注意事项:db将知道何时附加另一个作业记录,无论从哪里开始,因此触发器可以初始化缓存更新. 尽管有一个很好的数据库解决方案,但是很多用户经常轮询可能会产生Web服务器连接问题,并且您可能需要在该级别使用不同的解决方案,具体取决于流量. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- MVC SessionStateAttribute不作为全局属性
- asp.net-mvc – 如何使用Simple Injector装饰ASP.NET MVC控
- asp.net-mvc – 不需要必需属性的bool属性
- asp.net-mvc – BestPractices:在MVC-Controller中使用多个
- asp.net-mvc – 为什么HttpContext.Current在asp.net mvc中
- asp.net-mvc-2 – 什么是Html.Validate和Html.ValidateFor方
- 使用ASP.NET MVC4 jquery/javascript捆绑
- asp.net – 如何使用SignalR的跨域连接(CORS – 访问控制允
- asp.net – jQuery单击事件处理程序被调用两次复选框
- Asp.Net MVC缺少样式并默认为登录页面
- asp.net – 如何映射/ News / 5的路由到我的新闻
- asp.net-mvc-3 – 在部署服务器中编辑ASP.NET MV
- 电子邮件 – 邮箱不可用,客户端没有权限作为此发
- asp.net-mvc – 单选按钮如何与asp.net mvc绑定一
- 使用HtmlAnchor或ASP.NET HyperLink作为导航页内
- asp.net – Visual Studio的访问修饰符下拉列表选
- 使用ASP.NET成员资格提供程序的现成安全令牌服务
- asp.net-mvc-3 – 货币格式化MVC
- asp.net-mvc – 到WebGrid或不到WebGrid …什么是
- asp.net-mvc – 通过programmming导入Ms Access数
