c# -关于服务器向客户端发送推送通知的设计问题-如何实现
本文关键字:何实现 问题 实现 通知 服务器 客户端 | 更新日期: 2023-09-27 18:02:16
是这样的场景。
我的应用程序上有多个客户端和一个服务器。服务器本身与客户端断开连接,它只是通过windows服务(web服务和FTP)从web下载一些数据,处理数据并更新所有客户端连接的数据库并从中提取数据。
我希望能够主动通知客户,并具有一定程度的粒度,当一些下载发生(即只有交易员当价格/交易更新发生,或只有工程师当有东西给他们)没有轮询。
服务器应该向所有连接的客户端发出通知,而不是让它们不断地"询问"是否有更新,因为在这种情况下,我必须维护所有客户端的状态。
我想到了XMPP和矩阵。
要做到这一点,每个客户端必须打开与windows服务的持久连接,但我缺乏关于如何实现这一点的确切细节。也许有节点!据我所知,XMPP非常适合我想要完成的任务,并且为我提供了可扩展性,如果我需要的话,可以扩展到一些更多功能。我不知道是实现我自己的服务器还是使用现有的一个(我听说jabberd2有一个优秀的windows服务器)。
但最重要的是:我需要关于A)在Windows上运行的XMPP服务器和B) c#库的建议。除了Matrix,我发现很少,最重要的是我需要通知支持(pubsub)。
为简单起见,我考虑使用实现长轮询技术的WCF服务。本文详细介绍了如何有效地扩展WCF服务。
如果您使用的是SQL Server,则可以使用SqlDependency来通知数据库中有新数据。它允许您设置一个事件,每当给定查询的结果发生变化时,该事件就会在代码中触发。我已经有效地用过了