好的,在服务器端有一个桌面应用程序,用于将一些信息插入数据库(新闻,图像等),我有客户端从数据库收集这些信息并将它们存储到本地XML中。
因此,每个客户端都会从数据库中下载新闻并显示它们。
问题是我如何通知客户有更新。
我的解决方案
我认为使用类似UpdateID的数据库,并且每次数据更新到数据库UpdateID都应该是Incremented +1,然后每个客户端都应该在其XML中有一个属性UpdateID,并检查他们的UpdateID是否与Server UpdateID匹配,如果不是比这是一个新的更新。 在每次成功更新时,客户端都应将服务器UpdateID放入其XML UpdateID中。
有没有更好的方法来实现这一目标?
PS:即时使用的数据重新呈现层是WCF服务
答案 0 :(得分:7)
我认为您提出的拉模型可能是最容易实现的,也是最简单的问题解决方案。但是,知道您正在使用WCF Web服务,您可以使用WCF Callbacks
实现推送模型。在这个模型中,您可以像平常一样编写服务合同,但客户端在服务器上注册自己。在服务器上的数据更新时,服务器在所有已注册的客户端上调用回调函数,该客户端通过获取新数据进行响应。
此模型的典型展示应用是票务系统,票证经常被预订和发布。这种方法消除了客户端不断轮询服务器的需要。
名为Eliminate Server Polling with WCF Callbacks的文章提供了有关该主题的更多详细信息,并附带了票务系统示例。 This article也描述了这种方法。
我并不是说这比你自己建议的要好,但可能值得研究。