每当在数据库中插入新行时,我想在c#中执行代码

时间:2011-08-05 08:42:43

标签: c# database events insert ajax-polling

我正在开发一个聊天应用程序,其中来自一个客户端的聊天消息进入数据库,其他客户端每5秒轮询一次(使用计时器)是否有任何新消息,如果是,则获取消息并显示。但是当一个用户处于较慢的连接而另一个用户处于非常快的连接时,这会产生问题。我想开发一种机制,只要在数据库中插入新行时就会执行一个方法,这样就不会保留轮询的需要。只有当新的聊天消息由任何客户端进入数据库时​​,用户才会获取消息,否则所有消息都将保持空闲状态。任何帮助将受到高度赞赏。我正在使用asp.net和C#。

2 个答案:

答案 0 :(得分:2)

您所描述的是从轮询模型转变为发布/订阅模型(您可以理解这是一种比轮询更好的聊天/提要方式)。本文Publish/Subscribe design pattern implementation in C#有两个可能的资源,以及之前关于Pub/Sub architecture的堆栈溢出问题。

答案 1 :(得分:1)

我将远离评论实施应用程序的不同方法,并专注于回答您提出的问题 - 您可以使用Query Notifications完成此操作。您可以使用这些方法做很多事情,但基本前提是,一旦设置完毕,就会为SQL服务器提供您感兴趣的查询,并在结果发生变化时通知您的应用程序。

有一个合理的教程(代码在VB.NET中,但实际上没有太大变化)here

相关问题