急呀!我的程序是一个三层结构的,一个应用程序服务器,多个客户机,怎样让任何一个客户机增加了记录,其它客户机及时刷新,网络开销最小了?我的程序原先的办法是,当一个客户机更新了,然后发消息给各客户机,各客户机收到后这样处理
clientdataset1.close;
clientdataset1.open;
这样的后果是,当数据记录越来越多时,速度越来越慢,网络开销很大,有不有什么办法在三层结构中加一些处理,变成这样的处理方式,当收到增加记录后只是向各客户机发那些更新的数据了?
哪位高足能告诉我,我此先谢谢了!
clientdataset1.close;
clientdataset1.open;
这样的后果是,当数据记录越来越多时,速度越来越慢,网络开销很大,有不有什么办法在三层结构中加一些处理,变成这样的处理方式,当收到增加记录后只是向各客户机发那些更新的数据了?
哪位高足能告诉我,我此先谢谢了!
一段时间后reflash一次。
记录下更新的所有数据的ID号。在ApplyUpdate之后,将数组recorder[]送到
各个客户端,用数据时,判断一下,如果客户端的缓存中的数据ID号没有。则到
数组中查找,如找到则到主机的数据库中将数据提取出来。这样只是传递了数组,
应该很快的。
然后
clientdataset2.delta:=delta;
clientdataset2.MergeChangeLog ;
这就好了
找到解决方法顺便告诉我
[email protected]
谢谢
应该把delta传给服务器,再有服务器转发给其他客户端
然后
clientdataset2.delta:=delta;
clientdataset2.MergeChangeLog ;
这就好了
这种方法绝对行不通
我曾经处理过这样的问题,最后,我用Socket实现数据库的传输,
当然,及时刷新就不是一个问题了!
当服务端数据更新时,用UDP向客户端发送信息,
是否更新由客户决定,
(呵呵,也许是为小姐) 用Delphi的MIDIA做中间层,那中间层应用服务器是以(DCOM)EXE文件存在在服务器上的,是单元线程的COM组件,每个客户一个线程,每个客户的数据空间是完全隔开的,哪怕你认为你设置了全局对象或全局变量,也不可能在多客户之间共享,只是在各个客户数据空间中维护了一份全局对象的拷贝.
安全,但不灵活.
可是,还真没看到过怎样制作多线程和自由线程组件的书籍.
哪位知道,一定帮我介绍介绍,不胜感激.
每一个客户端,使用三层的话,数据更新之后应该使用applyupdate作一下
更新。
我也正处理这方面的问题,大家不妨探讨。
“应该把delta传给服务器,再有服务器转发给其他客户端
然后
clientdataset2.delta:=delta;
clientdataset2.MergeChangeLog ;
这就好了”delta属性只读!
关注
回调机制没有听过吗?
还有事件呢?
把中间层的AFTERINSERT事件发送到客户,
不就解决了吗?
不是叫你在服务器的AFTERINSERT事件做什么事情哟.
就等于把事件发送到客户.
客户在触发事件就刷新了.