我想在网页上显示实时更新(基于数据库表中由外部进程更改的状态字段)。根据我的研究,有几种方法可以做到这一点。
然后我读到了使用SqlCacheDependency
- 基本上缓存根据表中的字段失效。我假设我可以在缓存无效时使用trigerred事件来向用户显示新的更新?
什么是不容易出现性能问题的简单解决方案?
答案 0 :(得分:1)
不是轮询数据库,而是一种更具伸缩性和性能的方法,就是在Web服务器上查询文件的存在,就像轻量级的js文件。 该文件的内容并不重要,但为了让您了解您可以拥有某种类型的JSON对象,该对象更详细地描述了该过程的结果。
然后,作为最后一步进行处理的后台进程可以在您的Web层上创建文件或调用Web服务来执行此操作。
以下是它的工作原理。
用户按下发布到服务器的按钮
服务器启动进程并返回标识符,例如C3201620-E622-4fe2-9F3A-E02FFA613F59
然后,Web UI会轮流查看C3201620-E622-4fe2-9F3A-E02FFA613F59.js的存在,javascript将管理404错误并继续重试,直到收到200
希望这会给你一些想法。
在jQuery中处理404的代码示例
$.ajax({
url: '/CheckForStatusChange/C3201620-E622-4fe2-9F3A-E02FFA613F59.json',
type: "GET",
success: function(result) {
},
error: function(request, status, error) {
//handle error here and setTimeOut
});
答案 1 :(得分:0)
你有两个问题:
项目#1很简单,假设您有一个相当高效的查询,并且您没有为每个用户查询它;只需查询,获取数据并推送它。您可以使用SqlDependency选项,或者您可以只轮询它;这取决于你的数据有多重。
项目#2有点棘手,因为你需要经常点击服务器,或者使用彗星服务器。我们在Frozen Mountain编写了一个高度可扩展的.NET彗星服务器WebSync,可能符合要求。从本质上讲,您有一个单独的流程来驱动发布,而WebSync将处理将数据推送到您的客户端。