首页 新闻 会员 周边 捐助

WCF RIA 服务端方法如何回调客户端方法实现进度条

0
悬赏园豆:100 [待解决问题]

WCFRIA 本身是异步调用的方法,并支持回调。RIA服务的回调太过死板。

我在开发中碰到:在服务端处理CSV文件解析时,因客户需要,需要做一个回调方法更新客户端进度条。具体的思路是:RIA提供两个接口,一个是上传文件到服务器。另一个是解析该文件。目前卡在解析文件过程中需要实时更新客户端进度条。

听说SL5.0 RIA 本身已经实现了双工,但本人首次接触SL。

望各位大大不吝赐教!最好可以给个例子。

拜谢!!!

问题补充:

我改了思路,不做实时更新进度条了。。

现在只需要实现,在程序解析CSV文件完成之后,通知客户端。这个需要怎么做呢?

求高手指点!

逢雨不出门的主页 逢雨不出门 | 初学一级 | 园豆:102
提问于:2012-11-16 19:33
< >
分享
所有回答(4)
0
az235 | 园豆:8483 (大侠五级) | 2012-11-16 20:20

这个帖子和我的问题不太一样。而且,这个也是提问,并没有回答啊

支持(0) 反对(0) 逢雨不出门 | 园豆:102 (初学一级) | 2012-11-19 15:56
1

其实你的这个场景根本就不适合由服务器主动推送数据到客户端.

你的这上需求最合适也是最简单的做法是, 由客户端每隔一定时间(比如每隔一秒) 主动向服务器请求进度数据, 并进一步更新自己的进度条.

服务器那边就更简单了, 开放一个全局静态属性, 再写个函数读取并返回这个属性值即可.

当处理文件时, 处理函数不断地设置这个属性的值. 这样客户端就可以得到实时的进度。

夏狼哉 | 园豆:833 (小虾三级) | 2012-11-17 10:02

我试了,静态属性 不适用并发的时候

支持(0) 反对(0) 逢雨不出门 | 园豆:102 (初学一级) | 2012-11-19 15:52

@逢雨不出门: 

这不是很简单就可以解决的问题吗?我给你提的是大概的思路,具体的实现参照具体情况即可。

以你的问题为例,你可以把那个静态进度缓存做成字典,客户端可以生成一个GUID作为自己的标识,在请求进度的时候把这个GUID传给服务器,服务器按照这个key来检索相应的数据就ok了。

支持(0) 反对(0) 夏狼哉 | 园豆:833 (小虾三级) | 2012-11-19 16:23
0

直接 socket可否呢?

中小刀 | 园豆:208 (菜鸟二级) | 2012-11-18 12:25

不行,WCF RIA 本身就是异步的。用不了socket

支持(0) 反对(0) 逢雨不出门 | 园豆:102 (初学一级) | 2012-11-19 15:53
0

如果 CSV文件解析这个步骤 在服务器端开始处理时就能知道需要多少时间的话,就比较容易,不用回调就实现。

但我估计这个步骤要到 处理完能知道总共花了多少时间。所以建议在客户端做一个假的进度条, 其余的可以参考 @夏狼哉 的建议。

geass.. | 园豆:1821 (小虾三级) | 2012-11-18 20:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册