DCOM连接(200分)

  • 主题发起人 主题发起人 Beyond2002
  • 开始时间 开始时间
B

Beyond2002

Unregistered / Unconfirmed
GUEST, unregistred user!
广域网(ADSL,512K左右)上:服务器使用Win2K,客户端WIn98,第一次连接时速度很慢
(WIn98第一版大概3min,WIn98第二版大概40s),第二次连接则只需3到4s。在局域网
上连接速度很快,第一次连接约为8s左右。请问如何解决连接速度问题?
急!!!
 
你用的是CreateRemote()方法还是TDCOMConnection/TSocketConnection?用TDCOMConnection
第一次连接感觉是比较慢,用TSocketConnetion感觉快一些,用CreateRemote的速度感觉跟
TDCOMConnection差不多,也许稍快一点。
关于加快TDCOMConnection第一次的连接速度,李维的《多层分布式——系统篇》里有讲解,
我记不清了,基本上是说客户端不要安装太多的协议,不要设太多的网关、DNS之类的。
 
用CreateRemote方法,客户端也只是TCP/IP协议
 
数据模板在创建的时候。打开database.open.
关闭:database.close;
它会提高一些速度,最主要的没有特效药,主要靠平时写程序时,注意算法。
特别对于多表查询。时
更要注意算法。我建议在客户端尽量少用delphi的算法。
尽可能在服务器端多用sql来计算。
可以起到事半功倍的效果。
 
To billrobin: 是连接特别慢,还没调用具体的算法
 
组件启动后不要关闭(我是按COM+说的),除掉服务器端启动组件的时间,速度应该会明显
快一些的吧?实在不行的话,是否在下一个项目中考虑采用B/S方式?
 
这是一个c/s架构设置问题,说穿了是ado控件CursorLocation,Cursor type ,cachesize的
设置问题,翻翻李老先生的书,根据你数据量调整一下架构吧.
我建议:
将CursorLocation设置为clUseServer //你的可能是clUseClient;
将Cursor type 设置为ctKeyset
将cachesize设置为1000;
试试吧! 可能大为改观![:)]
 
是取计算机名的问题。
当一个Socket连接确认时,要取通过IP取计算机名--DCOM连接就要这样做的。
在一个网内当然不可能取不到了,在广域网上就慢了。
可以编辑windows的hosts文件来解决。
 
to:Beyond2002,
把应用服务器的IP加到SimpleObjectBroker1组件里。让它自已去找。另外,
不要加计算机名。
因为在一个广域网内重复的可能性太大了。如果这还解决不到问题?您还是看程序吧?
 
我的程序也在广哉网上,和您的方式差不多,怎么不见得很慢呢?怪事
 
没有广域网的经验。学习。
 
参见李维的《多层分布式——系统篇》
 
TO KOKS:
哪儿能下载?
 
我也有此类问题,要不我们共同讨论一下说不定可以有结果呢,:)))
 
慢,我的要18秒,但是第二次就很快了,应该是与Com对象创建有关,与带宽关系不大,我在
局域网和用56k的moden差不多.即使创建很简单的接口(对象)也一样,当然如果中间还要
打开很多表的话要另外算
 
scoket连接是快了点,但是不如dcom连接来的安全
 
在应用层压,打包然后传出来。试试。
 
DCOM第一次连接本来就比较慢,改善的方法客户端协议越少越好,
如果用不着就只装TCP/IP,客户端的DNS设置也要注意,这些都会影响DCOM的连接速度,
还有就是直接把连接的主机设为IP地址,不要设计算机名。
这些在李维的系统篇中都有讲(最后一条我自已认为)
 
后退
顶部