这就是情景。
我的应用程序有多个客户端,还有一个服务器。 服务器本身与客户端断开连接,它只是通过Windows服务(Web服务和FTP)从Web下载一些数据,处理数据并更新所有客户端连接的数据库并从中提取数据。
我希望能够主动通知客户,并以一定的粒度,在发生某些下载时(即只有交易者在发生价格/交易更新时,或者只有工程师在有什么东西时)没有民意调查。
服务器应该向所有连接的客户端发出通知,而不是让他们不断“询问”是否有更新,因为在这种情况下,我必须维持所有客户端的状态。
我想到了XMPP,还有Matrix。
为此,每个客户端都必须打开与Windows服务的持久连接,但我缺乏有关如何实现此功能的确切详细信息。 MAybe有节点! 据我所知,XMPP非常适合我想要完成的任务,并且如果我有需要,可以扩展到更多功能。
我不知道是否要实现我自己的服务器或使用现有服务器之一(我听说jabberd2有一个优秀的Windows服务器)。
但最重要的是:我需要建议A)在Windows上运行的XMPP服务器和B)C#库。除了Matrix,我发现很少,最重要的是我需要通知支持(pubsub)。
答案 0 :(得分:1)
为简单起见,我考虑使用实现long polling技术的WCF服务。 This article提供了有效扩展WCF服务的一些细节。
对于数据库中有新数据的通知,如果您使用的是SQL Server,请尝试SqlDependency。它允许您设置在给定查询的结果发生更改时在代码中触发的事件。我已经有效地使用它了。