首页 新闻 会员 周边

c/s获取服务器端数据的问题?????????

0
悬赏园豆:5 [已解决问题] 解决于 2010-11-02 22:26

客户端的 基础数据每次登陆程序后都要去服务器端获取最新版数据。我不想每次登陆后都去访问一次服务器,也觉得客户端做个定时器去访问也不合适,因为基础数据更新的频率不是很大。我的想法是 建立个日志表,每次对基础数据更新或插入都在日志表中插入记录。客户端还是要判断这个表是否有变化,但还是要客户端去定时看这表是否有奕化。能不能在我对基础数据保存时,或者专门做个发布按钮,就向客户端发送一个指令。客户端跟据这个指令去执行更新操作。第一次做cs与bs结合的程序,不知这样能否实现,谢谢!

mysun的主页 mysun | 初学一级 | 园豆:14
提问于:2010-10-28 13:15
< >
分享
最佳答案
0

1:  首先,你要说明是在互联网环境,还是在局域网内,如果是互联网,则难度就高了,比如你是在内网中,那么,你服务器上的程序,要对内网中的这台机器主动发送数据,就需要你的客户端程序具备打洞功能(类似QQ);

2:如果是在局域网中,则好实现,一楼的WCF回调是一种方法。原理到头来无非是客户端开放一个端口侦听。全部方法有SOCKET,REMOTING,WCF,WEBSERVICE,协议有UDP,TCP(HTTP)等等。你问的问题太广泛了,实现的方式也太多了。。。

收获园豆:3
陆敏技 | 菜鸟二级 |园豆:275 | 2010-10-28 16:06
1、互联网环境内。客户端从服务器上获取数据到本地。 2、WCF 应该走http协议 我现在做的是客户端只要一登陆就去服务器获取数据,并把数据更新到本地。服务器上的数据更新的频率不会很高,由于数据量大,我不想每次都去服务器上把这些数据更新到本地。服务器端要是能通知客户端来取数据就好了。
mysun | 园豆:14 (初学一级) | 2010-10-28 16:12
互联网HTTP协议,服务器无法主动通知客户端(注意,这是定论)。唯一的办法你刚才也说到了,客户端登录的时候自己去取是否存在更新。如果更新,则获取数据。
陆敏技 | 园豆:275 (菜鸟二级) | 2010-10-28 16:15
是啊,http是不会主动触发的,但在wcf中广播或都双通道是不是可以实现这个功能?
mysun | 园豆:14 (初学一级) | 2010-10-28 20:22
@mysun:WCF相当于是.NET的通信模式的集大成者。所以它包含的内容很多。当你想用WCF实现针对客户端的回调或者广播的时候,它必定不是采用的HTTP协议。
陆敏技 | 园豆:275 (菜鸟二级) | 2010-10-29 09:26
其他回答(2)
0

如果客户端是C/S的话,可以用WCF回调,在服务器数据修改时,通知客户端

收获园豆:1
dec_ | 园豆:206 (菜鸟二级) | 2010-10-28 14:14
谢谢,能说的具体点吗,或者哪有相关参考,就是让服务器修改数据后通知到客户端。客户端在去执行更新操作。谢谢
支持(0) 反对(0) mysun | 园豆:14 (初学一级) | 2010-10-28 14:18
0

你说的功能不好实现。〔局域网除外〕

web 本来是无状态连接在客户端不请求的情况下,服务端是无法确定它的准确地址的。即使qq之所以可以得到服务端信息,也是因为它登录了,在服务端做了登记。

还是用登录的时候访问服务端来确定是否有信息需要更新、有就下载。

收获园豆:1
邢少 | 园豆:10926 (专家六级) | 2010-10-29 09:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册