很迷惑的问题:MIDAS只能用于三层吗?COM+与DCOM有什么不同?我该使用哪种方案完成任务?(99分)

  • 主题发起人 主题发起人 云淡风轻
  • 开始时间 开始时间

云淡风轻

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi实现在远程异构数据库之间
导数据的功能,是采用一般的c/s应用程序模式(控制导数据的代码写在客户端程序中),
还是李维书中提的ADO/MTS/COM+/MIDAS方式(控制导数据的代码写在COM中),还是
ADO/MTS/DCOM/MIDAS的方式?MIDAS只能用在三层中吗?我们的系统不是三层的,是B/S结
构,那COM(或COM+,或DCOM)放在什么地方(WEB服务器上?)既是远程导数据,那用com+
还是dcom呢?请您指点!
 
如果客户端程序是直接连接到数据库的,那么不管数据库在多么远的地方,也不管数据库
运行在什么主机上,那都是C/S结构。
如果不用多层结构,完全没有必要使用MIDAS,一个结构简单的C/S程序在接受较少客户端
访问时的速度比MIDAS快。
在B/S结构中,如果Web Server(如IIS)与应用服务器在同一台机器上,就不用任何分布
式处理(从理论中来说,它仍是一个多层结构,但不是分布式的),但如果不在同一台机
器上,就需要将MTS/COM+组件导出到Web Server所在的机器上,或者应用服务器采用DCOM。
我现在正在遭受COM+程序布署问题的困扰,程序写好了,但将组件通过代理方式发布到
其它机器上就出问题。
 
Sachow:谢谢你的回答!
你说“程序写好了,但将组件通过代理方式发布到其它机器上就出问题”,我不明白,com
组件不是只放在一台服务器上,其它客户机共享使用么?怎么需要发布到很多机器上?“出
问题”是不是因为这些com在机器上没注册好?你使用的是com,com+还是dcom?
 
我用的是COM+,如果不将COM+对象导出为代理安装到客户机上,客户机访问不了我的服务器
上的组件对象。
我不想用DCOM,原因主要有两点:1、DCOM的配置麻烦;2、作为进程外组件,DCOM的效率应
明显地比作为进程内组件的COM+效率低,但考虑到网络的因素,DCOM是否会比COM+代理方式
慢,还不得而之,我还没有做过这样的实验。但在我的应用中,有B/S版的需求,而Web服务
器与应用服务器是安装在一台计算机上的,这样WebService在访问COM+对象时速度一定会比
用DCOM做服务器的要快。
 
midas只是一种多层架构的思想和方法,实现midas可以使用DCOM,COM+,Socket,
甚至是Soap/WebService。
Dcom是RPC+com。而Com+是Com+Dcom+MTS。Com+可以提供Connection pooling,Object
Pooling,Two-Phase commit(事务)等功能。也可以部署像EJB那样的负载平衡集群。
但由于Com+的机制只能在Windows局域网中发挥特长,Internet的组件目前只能寄希望于
soap/webService。
我建议你如果客户较多可以在web服务器(应用服务器)中使用com+处理数据库操作。当然
数据库引擎最好使用原生ADO引擎。
 
sachow:
<<程序写好了,但将组件通过代理方式发布到其它机器上就出问题
1、是安装的是否出问题么?2、还是访问的时候出问题?
若1:A、客户机缺乏MIDAS.DLL
B、若你的COM+还调用其他。DLL,那么其他。DLL必须拷到SYSTEM32目录下,因为COM+是
有HOSTDLL加载的
若2:可能是客户机没有加入到服务器域中
对于B/S结构,用soap/webService是未来非常好的选择,虽然目前还不太成熟
 
服务器就是一个COM DLL,没有调用其它的东西,在本机上调用的时候一切正常,而在客户
机上不行。我估计不是服务器端组件的问题,主要在客户端发布那里。客户端已经发布了
Midas.dll,而且在两台Win98的客户机上已经能正常使用了,但到了另外的Win2000和WinXP
的客户机上就显示“Interface not supported或是RPC服务器不可用”,我安装着COM+组件
的服务器是我的Win2000 Professional,是不是要个Server版的?
 
"RPC服务器不可用" 是因为客户端没有注册!
“Interface not supported” 的问题,我在Server版上也试过,效果一样!
其他讨论见: http://www.delphibbs.com/delphibbs/dispq.asp?LID=721861
 
直接把COM+的DLL拷到客户机上注册,应该是可以调用的。
如果是代理安装,应该是要加入到服务端域,试试?
服务端最好是安装到SERVER中,因为SERVER调用PRO服务,怎么看都觉别扭。
 
to:孤月独明
"接把COM+的DLL拷到客户机上注册,应该是可以调用的。" 成了本机调用。
“如果是代理安装,应该是要加入到服务端域,试试?” 域方式访问确实没有问题,
但需要域用户登录,麻烦!
“服务端最好是安装到SERVER中,因为SERVER调用PRO服务,怎么看都觉别扭。” 一点也不别扭


 
有没有更简单的办法,能做到尽管减少客户端配置,并不改变客户机现有的工作习惯?
 
to sachow
请问你,你用MTS安装的组件是在同一台机子的吗
还有MTS 那里有下载,望不吝赐教!
 
注册:
regsvr32 C:/WINNT/system32/MIDAS.DLL
应该可以解决问题,试一下吧
 
to:kanble
Midas.dll 已经注册,否则会提示“midas.dll未找到”
 
To wingofwind:
我用的是Win2000,操作系统自带了COM+。MTS是COM+的前身,是NT时代的产品,我没有具体
用过,也不知道在哪里下载。
 
后退
顶部