【问题标题】:Best Practice to check SQL Database for a change in ASP.NET检查 SQL 数据库以了解 ASP.NET 中的更改的最佳实践
【发布时间】:2016-11-28 02:58:30
【问题描述】:
我有一个网页,一旦数据库中的值发生更改,就需要立即刷新该网页。我看到很多反向 AJAX 功能可以让会话保持运行。
我的主要问题是,你认为我应该使用什么?
我的另一个问题是......我不能只在 javascript 中做一个无限循环,然后调用一个 webmethod 来检查数据库吗?为什么我需要彗星套接字或网络服务或类似的东西?
【问题讨论】:
标签:
javascript
asp.net
ajax
reverse-ajax
【解决方案1】:
老派的解决方案是实现一个“心跳”,每 15 秒左右(这显然可以更改)发出一个轻量级 AJAX“HEAD”请求,服务器端控制器会在回复中指出有内容要接收的标头。
应用程序可以再次请求更多数据。请注意,您可以在一个请求中执行此操作,而且效果也很好 - 特别是如果您的数据可能会经常更改。
这本质上就是您所说的“无限循环”,但这是一个误导性术语。通常使用重复的setTimeout() 调用来实现 - 不要使用setInterval()。您想在发送另一个请求之前等待响应或超时,否则事情可能会变得复杂并让您头疼。
考虑到对服务器的请求将随着该应用程序获得的流量而迅速成倍增加。每个请求都应该是安全的,但轻量级的。处理请求的服务器应该实现一种缓存形式,您不希望每个心跳请求都调用数据库。
这种老派的方法很有效,我已经看到它到处都在使用。不过,开发人员可以使用更新的技术:
一种较新的方法是使用WebSockets,但由于您使用的是asp.net,我建议您查看Microsoft's SignalR,它结合了多种技术并确保在旧浏览器/设备上的兼容性。