我们有一个ASP.NET网络应用程序,需要实时或最佳地显示数据,我们目前正在使用AJAX和Web服务,但这会导致性能问题,因为客户端数量越来越大。数据每隔5-10秒汇集一次,当这个数量乘以1000多个客户端时,它可以使数据检索速度非常慢。
答案 0 :(得分:7)
您可能希望尝试使用SignalR来处理实时数据需求。来自网站:
ASP.NET SignalR是一个面向ASP.NET开发人员的新库,它使得向应用程序添加实时Web功能变得异常简单。什么是“实时网络”功能?它能够让您的服务器端代码实时地将内容推送到连接的客户端。
您可能听说过WebSockets,这是一种新的HTML5 API,支持浏览器和服务器之间的双向通信。 SignalR将在可用时使用WebSockets,如果不是,则优雅地回退到其他技术和技术,而您的应用程序代码保持不变。
SignalR还提供了一个非常简单的高级API,用于在ASP.NET应用程序中执行服务器到客户端RPC(在客户端的浏览器中从服务器端.NET代码调用JavaScript函数),以及添加有用的钩子用于连接管理,例如连接/断开事件,分组连接,授权。
答案 1 :(得分:1)
请尝试下列办法中的一个或多个:
缓存 - 您可以考虑将应用程序数据存储在内存中一段时间。这将减少对数据库服务器的影响。
HTML 5服务器端事件 - 使用服务器端事件,您可以在发生更改时实际通知客户端(推送数据而不是池)。你本质上需要一个ASP.NET事件处理程序(ashx页面),它在客户端推送请求和一些JS代码。
查看this文章,了解有关服务器端事件的更多详细信息和代码示例。