我正在开发一个聊天应用程序,其中一个客户端的聊天消息进入数据库,其他客户端每 5 秒(使用计时器)轮询是否有任何新消息,如果是,则获取并显示消息。但是,当一个用户的连接速度较慢而另一个用户的连接速度非常快时,就会产生问题。我想开发一种机制,仅当在数据库中插入新行时才执行方法,这样就不再需要轮询。只有当任何客户端有新的聊天消息进入数据库时,用户才会获取消息,否则都保持空闲状态。任何帮助将不胜感激。我正在使用 asp.net 和 C#。
问问题
337 次
2 回答
2
您所描述的是从轮询模型转变为发布/订阅模型(您可以理解,这是一种比轮询更好的聊天/订阅方式)。两个可能的资源是这篇文章Publish/Subscribe design pattern implementation in C#和 this previous stack overflow question about Pub/Sub architecture。
于 2011-08-05T08:53:42.860 回答
1
我不会评论实现您的应用程序的不同方法,而是专注于回答您提出的问题 - 您可以使用Query Notifications完成此操作。你可以用这些做很多事情,但基本前提是一旦你设置好了,你给 SQL Server 一个你感兴趣的查询,当结果改变时它会通知你的应用程序。
这里有一个合理的教程(代码在 VB.NET 中,但实际上并没有太大变化)。
于 2011-08-05T08:59:36.727 回答