sql - 防止 ASP .NET 页面必须轮询数据库以进行更改

标签 sql database

我有一个 ASP .NET Web 服务,它利用来自客户端的长期连接。

  • 客户端连接并等待 15 分钟以获取响应。
  • 就在 15 分钟之前,ASP .NET Web 服务以 OK 响应。
  • 客户端重复此连接建立。

在 15 分钟内,Web 服务检查 SQL 表中记录的字段值是否发生变化。如果该值更改,则立即使用 ReadMessage 向客户端发送响应。数据库的检查/轮询每 30 秒进行一次。这有几个缺点:

  1. 它的扩展性不好。它适用于 1 或 2 个客户端,但当您最终拥有 10,000 个客户端连接时,数据库将进行大量轮询。
  2. 这会导致处理延迟,因为最多可能需要 30 秒才能通知客户。

我想找到一种方法来通知事件 http 客户端的 Web 服务记录已更新。

还应注意,每个客户端连接到 Web 服务在表中都有其自己的特定记录。

最佳答案

我认为SqlDependency是你要找的。查询通知允许应用程序在查询结果更改时收到通知

关于sql - 防止 ASP .NET 页面必须轮询数据库以进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8218170/

相关文章:

sql - PostgreSQL:加速一张大表与许多小表的多个 JOIN

sql - 如何在 SQL 存储过程中传递动态 View 名称而不使用动态查询?

简单术语的 MySql 字段类型

c# - 如何使用 C# 将 DateTime 或 DbNull 发送到数据库?

c# - 在 ASP.NET C# 页面转到不同页面时在后台运行存储过程

仅对新值求和的 SQL

c# - 查找双重记录

javascript - 在项目中使用 Google Apps 脚本函数

mysql - 如何在mysql中创建一元多对多关系

database - Haskell persistent w/esqueleto : read entire table, 和计数记录