我有一个项目是监控的,数据库的数据每秒中都在变化,我像在silverlight 的UI上也反应这样的变化,也就是每秒去数据库里面取数据,再来更新silverlight的datagrid。请问具体怎么做呢?我现在用RIA Service,不过不知道为什么不能更新。有谁有代码的例子吗?
你这里涉及到两段式更新模式,一是数据库到RIA Service,一是RIA Service到SilverLight.
有Pull和Push两种模式:
先说Pull,SilverLight 采用轮询的模式调用RIA Service以检索数据是否更新,如果已更新,则调用RIA Service重新获取数据,可以使用 HTTP Polling Duplex 绑定简化数据更新检索操作;
再说Push,使用WCF Callback契约,SilverLight向RIA Service订阅数据更新通知,RIA Service通过SqlDependency或OracleDependency向数据库订阅更新,当数据库有更新发生时,通知RIA Service,接下来分两种模式:
一,RIA Service收到更新通知后再调用SilverLight注册的回调接口通知SilverLight,SilverLight收到更新通知后,再调用RIA Service重新获取数据。
二,RIA Service收到更新通知后从数据库中查询出增量数据,然后调用SilverLight注册的回调接口,直接将增量数据推送给SilverLight,SilverLight收到增量数据后再更新自己的UI.