WCFRIA 本身是异步调用的方法,并支持回调。RIA服务的回调太过死板。
我在开发中碰到:在服务端处理CSV文件解析时,因客户需要,需要做一个回调方法更新客户端进度条。具体的思路是:RIA提供两个接口,一个是上传文件到服务器。另一个是解析该文件。目前卡在解析文件过程中需要实时更新客户端进度条。
听说SL5.0 RIA 本身已经实现了双工,但本人首次接触SL。
望各位大大不吝赐教!最好可以给个例子。
拜谢!!!
我改了思路,不做实时更新进度条了。。
现在只需要实现,在程序解析CSV文件完成之后,通知客户端。这个需要怎么做呢?
求高手指点!
其实你的这个场景根本就不适合由服务器主动推送数据到客户端.
你的这上需求最合适也是最简单的做法是, 由客户端每隔一定时间(比如每隔一秒) 主动向服务器请求进度数据, 并进一步更新自己的进度条.
服务器那边就更简单了, 开放一个全局静态属性, 再写个函数读取并返回这个属性值即可.
当处理文件时, 处理函数不断地设置这个属性的值. 这样客户端就可以得到实时的进度。
我试了,静态属性 不适用并发的时候
@逢雨不出门:
这不是很简单就可以解决的问题吗?我给你提的是大概的思路,具体的实现参照具体情况即可。
以你的问题为例,你可以把那个静态进度缓存做成字典,客户端可以生成一个GUID作为自己的标识,在请求进度的时候把这个GUID传给服务器,服务器按照这个key来检索相应的数据就ok了。
直接 socket可否呢?
不行,WCF RIA 本身就是异步的。用不了socket
如果 CSV文件解析这个步骤 在服务器端开始处理时就能知道需要多少时间的话,就比较容易,不用回调就实现。
但我估计这个步骤要到 处理完能知道总共花了多少时间。所以建议在客户端做一个假的进度条, 其余的可以参考 @夏狼哉 的建议。