Dcomconnection的速度问题(200分)

  • 主题发起人 主题发起人 高小五
  • 开始时间 开始时间

高小五

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端 clientdataset + dcomconnection
服务器端 ado + oracle
为了不占用oracle的连接,每执行一个功能时连接一次dcom,执行完就断开,
发现dcom连接速度非常慢,后改为窗体打开时连接dcom,窗体关闭时断开,
但连接速度仍需要7-8秒,还是不能满足用户的需求。如果在整个程序启动
时就连接dcom,因为我的远程数据模块有十几个,总不能一次全连上?
各位大哥有什么好办法或解决办法,麻烦能给小弟指导一下,不胜感激!
 

把服务器端开发成 COM+ 的组件,并且在 COM+ 中配置成使能连接池,还有在 ODBC 的驱动程序中打开 Oracle 的连接池的功能,这样就会有效提高连接性能。
 
你试试所有数据模块共用一个DCOM连接....当然得声明在一个全局单元中.
在设计时可以在数据模块中放个DOCM连接,在数据模块的OnCreate事件中把所有
ClientDataSet全部指向全局的DCOM连接就可以了
 
DCOMCONNECTION的连接速度是比较慢,但DCOM的连接和数据库的连接好像不是一回事吧
我觉的DCOMCONNECTION一旦连上就别断掉的好
 
感谢 陈一蛟,轻舞肥羊。
to 陈一蛟:DCOM改为Com+困难吗?
to 轻舞肥羊,我的远程数据模块有10几个,不同的功能在不同的数据模块中,
不同程序模块中用到的Dcom的serverGuid不相同,所以不能用一个
dcomconnection
 
to 迷糊:
如果不断的话,如果ORALE的session数据为75,每个客户端有5个连接,
根本不够用,而且现有的系统已经占用了很多连接。
 
我不是说过吗,DCOM的连接和数据库的连接不是一回事,你的远程数据模块不要常连数据库
,只有在需要访问数据库的时候连接,访问完就端掉。数据库的连接是有缓冲的,第二次连接很快。
另外,我觉得客户端也可以用一个dcomconnection,其它远程对象的接口可以通过一个主接口获得。用连接池好像也不错哦,不过没用过,听听大家的!
强烈关注!
 
to 迷糊:
您说得非常有道理,远程数据模块不要常连数据库,我试试。
您的意思是不是说Dcomconnection常连,当通过接口调用远程函数时
才连接数据库,调用完就断开?
另外,我的远程数据模块有多个,不知道用一个Dcomconnection
能不能实现?
 
可以定义一个远程数据模块,通过它的方法返回其他 RDM的接口
如:mainrdm.getrdm1;
//取得rdm1的接口
没做过,但我觉得可行,你试试吧,到时能不能吧结果贴出来
 
to 迷糊,
假如能调的话,实际上要调用的DCOM远程数据模块也肯定
要被激活,所用用一个Dcomconnection与多个区别不大,我
试一下您说的"远程数据模块不要常连数据库"
 
to 迷糊,
我试了一下,效率差不多,每种办法都较慢,除非Dcomconnection
也连接着,ADO也连着速度会快一些,可能是远程数据模块的创建时间与
数据库的连接时间相比实在太小了,效率主要取决于ADO连接ORACLE的速度。
 
多人接受答案了。
 
后退
顶部