如何在数据库表更改时在.NET应用程序中接收通知?

Mar*_*tor 0 .net c# database sql-server

我一直想知道巨大的应用程序(例如Facebook)是如何实时地通知用户事件(例如有人给你发消息),而不是每秒/分钟汇集数据库等等(我认为Facebook不会检查是否存在每秒登录用户的任何新消息).当数据库更改(插入或更新行)时,Sql Server中是否有任何方法可以在C#应用程序中接收通知?

(希望)让事情变得更加实用:

您将如何处理连接到数据库服务器的桌面聊天应用程序,并允许用户互相发送消息,为接收消息的人提供即时通知?

您如何处理通知用户他们在"离线"时收到的消息?

假设应用程序将处理数百/数千个用户,并且通知应该(相对)即时(没有每隔10秒汇集数据库以查看是否有任何新消息).

小智 5

使用数据库作为通信枢纽的中心将成为瓶颈,并且可能无法很好地扩展.既然你提到过.NET,你应该查看SignalR. https://www.asp.net/signalr

在一个简单的用例中,您可以写入数据库并同时发送通知事件,以告知客户端检查您刚刚写入数据库的新内容.