C/S结构中,客户端A更新数据后客户端B如何自动刷新数据?

时间:2021-06-16 19:02:20
C/S结构中,客户端A更新数据后客户端B如何自动刷新数据列表?
怎么做才能最佳化?
如果做个定时器,数据感知表格就会移动影响客户使用。

6 个解决方案

#1


A向S发通知,S再通知所有的其他客户端
tcp是可以主动推信息的
但是这样会受网络防火墙(如果有的话)的限制

#2


建议
 加个 按扭 刷新一下即可

#3


如果用了数据感知元件的话,要实现还不容易呢

#4


如果不跨越路由且在同一网段的话,可以用UDP通知,同时接收就OK!

#5


如果系统简单用UDP比较好,如果系统结构复杂实现起来有一定难度。

#6


> C/S结构中,客户端A更新数据后客户端B如何自动刷新数据列表?
> 怎么做才能最佳化?
> 如果做个定时器,数据感知表格就会移动影响客户使用。

考虑不要用数据感知,
或者,用内存表来隔离直接的数据感知。

比如,用ClienDataSet+Grid类控件来显示数据;
用另一个Query取得最新数据,将其与ClientDataSet做比对,
多则Insert,少则Delete,数据不同则修改;

这样,用户在Grid类控件上感觉到的闪动最小。

当然,要觉得闪动更小,可能连Grid类控件也要换,
比如换成ListView的升级版控件?
比如自己用Grid写一个升级版控件?
这个,要你具体分析了。

#1


A向S发通知,S再通知所有的其他客户端
tcp是可以主动推信息的
但是这样会受网络防火墙(如果有的话)的限制

#2


建议
 加个 按扭 刷新一下即可

#3


如果用了数据感知元件的话,要实现还不容易呢

#4


如果不跨越路由且在同一网段的话,可以用UDP通知,同时接收就OK!

#5


如果系统简单用UDP比较好,如果系统结构复杂实现起来有一定难度。

#6


> C/S结构中,客户端A更新数据后客户端B如何自动刷新数据列表?
> 怎么做才能最佳化?
> 如果做个定时器,数据感知表格就会移动影响客户使用。

考虑不要用数据感知,
或者,用内存表来隔离直接的数据感知。

比如,用ClienDataSet+Grid类控件来显示数据;
用另一个Query取得最新数据,将其与ClientDataSet做比对,
多则Insert,少则Delete,数据不同则修改;

这样,用户在Grid类控件上感觉到的闪动最小。

当然,要觉得闪动更小,可能连Grid类控件也要换,
比如换成ListView的升级版控件?
比如自己用Grid写一个升级版控件?
这个,要你具体分析了。