首页 新闻 会员 周边

当服务器发现数据发生变化时,就主动通知客户端页面,asp.net该怎么来做呢?

1
悬赏园豆:50 [已解决问题] 解决于 2008-09-25 13:29

如题,我要做一个页面,上边有一个提交按钮,点击后把数据提交给别的网站(此时页面不关闭,提出一个新窗口,新窗口是提交的网站),一段时间以后(此时提交的页面仍然在等待),那个网站返回给我们服务器消息,并修数据库的信息,我想当服务器接到消息,修改了数据后,通知客户端页面,客户端页面,再根据相应的修改,改变页面的值,请教各位,我该如何实现??谢谢

秋风销销的主页 秋风销销 | 初学一级 | 园豆:145
提问于:2008-09-17 15:43
< >
分享
最佳答案
0

从楼主的回复中我看出来,基本上你不想通过系统自动轮询的形式获取服务端反馈,或许是出于系统压力的担心。我想通过一个常见案例帮助你找到一个较理想的解决方案。

不知道你用过淘宝没有,在进行支付宝充值时,他与网上银行系统的交互略与你的应用相似。很显然,阿里没用自动轮询(估计它的担心与你一样)。

一般情形,当你的应用提交数据给别的应用时,用户会有在该别的应用上的操作,而用户也可以在该别的应用上通过双眼获取应用状态,而一切操作完成后,完全可以借助用户的手进行对我应用服务器的“最新状态获取”。只要合作方的应用有明显通知用户“操作已完成”的情形,就可以模仿淘宝留一个静态页(层)给用户,让用户主动刷新。

自动与手动,在不同的场景,却都有长短,呵呵

陛下 | 老鸟四级 |园豆:3938 | 2008-09-17 18:56
其他回答(3)
0

对方返回消息你接收这个就不用说了吧?

在页面中添加一个隐藏的iframe不断刷新或者使用ajax对某个页面进行轮询,目的就是不停的请求一个页面,这个页面可以只返回一个简单的标识,用来返回数据是否已经改变(或者还可以加上新数据是什么,推荐使用JSON)

这样就可以“即时”获取到服务器端的数据变动了,时间可以比较频繁,比如5秒甚至更频繁,没有办法完全实时,因为服务器端无法主动发消息给客户端

丁学 | 园豆:18730 (专家六级) | 2008-09-17 15:52
0

用ICallbackEventHandler.

这是很典型的AJAX需求,你在前台用window.setInterval("前台脚本();",3000);

用回调来获取后台处理结果[在后台获取数据库,监视数据库变化]

如果不清楚,可以查看网上找找ICallbackEventHandler,还不行就EMAIL我:zaluao@gmail.com

zjy | 园豆:3194 (老鸟四级) | 2008-09-17 16:07
0

你可以用Ajax的定时器,定期的去扫描页面,如果发生变化了,就刷新一下页面。

如果是服务器返回给我值前后分别记不同的状态,根据状态的需要去刷新页面,这样性能会更好一些,不会隔段时间就刷新页面。

金鱼 | 园豆:1090 (小虾三级) | 2008-09-17 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册