CGI Web 程序与CORBA Server 的连接时,一次点击发送多次请求?!(20分)

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

blueeagle

Unregistered / Unconfirmed
GUEST, unregistred user!
我用CGI开发的WEB程序,在Webactionitem中调用corba 服务器中的方法,
但是web客户点击一次对应的超连接(超连接由CGI程序动态产生),就调用一次
CORBA服务器方法,但是实际测试时,却是用户点击一次,会调用5至
六次方法,请问这是什么原因,该如何解决?
 
的确存在这个问题,这是网络roundtrip太多的现象。这个问题在原理上只能在尽量避免,而不能完全解决。
1、你最好用Midas3.0(对应Delphi5.0)以上的版本,因为Midas3.0比Midas2.0由于有效地降低了应用系统
需要的远程调用,所以调用速度快了将近一倍。
2、要解决这个问题,你就要减少使用服务对象时,尽量减小网络roundtrip,实际要做的是:
花精力去设计高效率的中间件里的服务对象。
 
我用的是delphi5.5应该还可以吧?我的中间件对象是corba对象,我不知道你说的开发高效率
的中间件对象是什么意思,能不能烦您介绍的详细一点,比如说讲一讲你对这个问题的具体的
解决方法,因为我要根据客户的请求作一些统计工作,多谢!

 
To blueeagle:
我当然你的中间对象是CORBA服务对象。
1、对于用哪个版本的问题,无所谓,不过我建议你用Delphi6的Midas。
2、主要的问题是你对中间对象(也例如你现在CORBA服务对象)的规划构造方案。
我给你详细地解释一下吧。你这个问题是因为网络roundtrip次数太多所致,网络roundtrip
来回了五、六次,你首要的问题是要解决网络roundtrip的来回次数。因为Stub与Skeleton之间
的调用以及其他接口等调用对你来说是透明的,也就是说,当你调用一次CORBA服务对象的方法
或者其他元素时,Delphi为了达到你的操作和返回结果,可能会先到远程数据中介获取你所调用
的对象的GUID、所在地址或者什么的,然后返回客户端的Stub,Stub又继续调用,然后远程数据
中介又返回所要调用的方法,Stub再继续调用,最后Skeleton可能才真正去调用该方法去实现,
之后才把真正的结果返回给Stub,然后客户端才得到它想要的东西。建议你客户端用静态的方法
去调用服务对象,那样不但速度会快点,而且可以相应减少网络roundtrip的来回次数。你还可以
其他措施去减少网络roundtrip的来回次数。
这个问题在原理上只能在尽量避免,减少网络roundtrip的来回次数,而不能完全解决。我建议
你最好去找一些有关CORBA或者中间件对象的书看一下。
 
后退
顶部