我正在开发一个聊天应用程序,其中来自一个客户端的聊天消息进入数据库,其他客户端每5秒轮询一次(使用计时器)是否有任何新消息,如果有,则获取并显示消息。但当一个用户使用较慢的and连接,而另一个用户使用非常快的连接时,这就会产生问题。我想开发一种机制,只在数据库中插入新行时才执行方法,这样就不需要轮询了。只有当新的聊天消息由任何客户端进入数据库时,用户才会获取msgs,否则全部保持空闲。任何帮助都将不胜感激。我使用的是asp.net和C#。
发布于 2011-08-05 16:53:43
您所描述的是从轮询模型转向发布/订阅模型(正如您所理解的,这是一种比轮询更好的聊天/提要方式)。两个可能的资源是本文Publish/Subscribe design pattern implementation in C#和前面关于Pub/Sub architecture的堆栈溢出问题。
发布于 2011-08-05 16:59:37
我不会评论实现应用程序的不同方法,而是专注于回答您提出的问题--您可以使用Query Notifications来完成此任务。您可以使用这些方法做很多事情,但基本前提是,一旦设置好这些方法,您就可以向SQL server提供一个您感兴趣的查询,当结果发生变化时,SQL server将通知您的应用程序。
有一个合理的教程(代码是用VB.NET编写的,但实际上并没有太多变化) here。
https://stackoverflow.com/questions/6953612
复制相似问题