通知客户更新的最佳方式?

时间:2011-10-11 11:08:30

标签: c# database notifications

好的,在服务器端有一个桌面应用程序,用于将一些信息插入数据库(新闻,图像等),我有客户端从数据库收集这些信息并将它们存储到本地XML中。

因此,每个客户端都会从数据库中下载新闻并显示它们。

问题是我如何通知客户有更新。

我的解决方案

我认为使用类似UpdateID的数据库,并且每次数据更新到数据库UpdateID都应该是Incremented +1,然后每个客户端都应该在其XML中有一个属性UpdateID,并检查他们的UpdateID是否与Server UpdateID匹配,如果不是比这是一个新的更新。 在每次成功更新时,客户端都应将服务器UpdateID放入其XML UpdateID中。

有没有更好的方法来实现这一目标?

PS:即时使用的数据重新呈现层是WCF服务

1 个答案:

答案 0 :(得分:7)

我认为您提出的拉模型可能是最容易实现的,也是最简单的问题解决方案。但是,知道您正在使用WCF Web服务,您可以使用WCF Callbacks实现推送模型。在这个模型中,您可以像平常一样编写服务合同,但客户端在服务器上注册自己。在服务器上的数据更新时,服务器在所有已注册的客户端上调用回调函数,该客户端通过获取新数据进行响应。

此模型的典型展示应用是票务系统,票证经常被预订和发布。这种方法消除了客户端不断轮询服务器的需要。

名为Eliminate Server Polling with WCF Callbacks的文章提供了有关该主题的更多详细信息,并附带了票务系统示例。 This article也描述了这种方法。

我并不是说这比你自己建议的要好,但可能值得研究。