使用SqlCacheDependency,以获得实时更新?-ASP.NET
-
19-09-2019 - |
题
我想显示器实时更新的网页上(基于一种状态领域中的一数据库表,是改变了外部过程)。基于我的研究,有几种方法这样做。
- 长询(彗星)-这似乎是复杂的实施
- 定期投票-我可以有一个阿贾克斯的方法触发一个数据库命中每5秒可以获得当前的状态。但我担心这将具有性能的问题。
然后我读了关于使用 SqlCacheDependency
-基本上缓存变得无效,根据字段的表。我假定我可以用事件trigerred当缓存是无效的,以显示更新后的用户?
什么是一件容易的解决方案,将不会有效问题吗?
解决方案
而不是查询数据库中一个更具扩展性和性能的方法将是调查是否存在一个文件在您的网服务器的东西喜欢轻质js文件。该文件的内容并不重要,但是要给你一个想法,你可以有一个JSON对象的某种其更加详细地介绍其结果的进程。
然后你背景的过程,是这样做的处理作为最后的步骤可以创建文件或电话网服务网络层这样做。
这里就是它能工作。
用户按下按钮这个员额的服务器
服务器踢的进程和返回的识别符如C3201620-E622-4fe2-9F3A-E02FFA613F59
网UI然后投票peridodically的存在C3201620-E622-4fe2-9F3A-E02FFA613F59.js,javascript会管理的404错误和保持重新尝试,直到它收到200
希望这给你一些想法。
代码例来处理404在jQuery
$.ajax({
url: '/CheckForStatusChange/C3201620-E622-4fe2-9F3A-E02FFA613F59.json',
type: "GET",
success: function(result) {
},
error: function(request, status, error) {
//handle error here and setTimeOut
});
其他提示
你有2个问题:
- 检索的数据来推
- 推动数据的客户
项目#1是容易的,假定你有一个相当有效的查询,而你没有查询每一个用户;只是查询,得到的数据,并推动它。你可以使用的SqlDependency选择,或者你可以投票;它取决于多重数据。
第2项是有点麻烦,因为你需要任命中的服务器不断,或者使用一颗彗星服务器。我们已经写了一个高度可伸缩性。净彗星服务器, WebSync, 过在冷冻山,可能适合该法案。基本上,你有一个单独的进程,推动出版社,WebSync会处理该推动数据,以你的客户。