用Delphi开发中间件,经常出现interface not supported 错误(200分)

  • 主题发起人 penPower
  • 开始时间
jrp 你的环境是怎样的?有没有遇到那3个error?
 
对于
>>我试了一下,果不其然,当在另一台客户端调用写有i:=CoclsMTs.Create;的客户端程序
>>时,“报类没有注册”错误。
你在一电脑上运行客户程序之前要先将COM+导出的.MSI包(应用程序代理)到这台电脑上先运行一下
 
肯定是运行了的
你的开发平台是什么?有人建议用win2000+delphi6
我用的是win98+delphi5
 
我导出的是客户端代理,不会是导出服务器代理把?
 
我用的是W2K+D5。
我导出“应用程序代理”的过程的步骤如下,和你的对一下。
打开“组件服务”
展开“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”->
在相应的应用程序点右键,在菜单里选择导出。
出现欢迎页面,按下一步。
在“应用程序导出信息”里先选择目录,并填入文件名(X:/.../XXX.MSI)
在“导出为”栏选择“应用程序代理-安装在其它计算机上,用来访问此计算机(P)”
之后的步骤都一样了。
然后将导出的文件COPY到客户端电脑上,运行XXX.MSI
要在WIN98上运行MSI安装程序,要首选安装MS的InstMsi.exe。这个文件有得下载,具体位置一时想不起来。
 
你们搞得好复杂喔
客户端其实不一定非要服务器导出的客户端包的
只要在客户端注册一下COM组件的TLB文件就可以啦
Delphi中自带的tregsrv.exe就可以(还有源码哇)
注册如下:tregsrv ComFileName.tlb
删除注册如下:tregsrv COMFileName.tlb /U
然后程序中用楼上各位说的
CreateRemote(服务器名或地址)即可啦
如要用MTS事务控制,得注意事务超时
DCOM要注意在服务器上用DCOMCNFG配置好远程访问COM组件的权限
呵呵!
 
楼上两位都说的很对,我也一直是这样做的
有几点需要说明:
1。我认为客户端代理的作用和Tregsvr 的作用基本相同
(如果以yhaochuan的说法,它们就有很大差异,客户端
代理应该包含服务器可名称等信息)
2。楼上说CreateRemote与我的方法相同,而与yhaochuan曾经说的不同
3。MTS怎么配置Dcomcnfig?Dcomcofig只能配置out of process(exe)
 
yhaochuan,jabing:
关于使用Create还是CreateRemote的问题,我回去研究了一下,
发现在安装客户端代理的条件下,Create和CreatRemote都可以用。
在《Delphi5 开发人员指南》上使用的是Create,而李维的
《ADO/MTS/Com》使用的是CreateRemote.它们之间的差别我还不知道。
* 另外我对DComcnfig 管理com 组件仍然不理解。用他来管理
exe(Out of Process)是比较容易理解,但是Dll(in process) 怎么管理?
“interface not support"问题我在安装了一个新的应用
服务器(主域控制器,win2000 server)后,尚未发现有机器有
报类似错误,也许是以前服务器的原因。
第二个问题(*)解答后,我将给分并关闭这个问题。
自己只有5分了,不能开新的问题讨论,请大家慷慨点,不啬赐教。
 
以后大家有问题多讨论,欢迎和我联系:pen_gun@chinaren.com
 
如果用W2K服务器,那么它的COM+就是用来管理in process组件对象的
一般说来,用in process做中间层是比较常用的作法,对资源的要求比较少,也比较安全。
DCOMconfig我也只是在开始学分布式处理时用到而已,后来就转用MTS了,
到了现在就“升级”到COM+了,而微软的廉价解决方案也开始奏效,微软,它的
策略招确实已至化境。
 
1、你用服务器导出的客户端包用Create就可以,可是你不能商业软件时每次安装都
要先装好服务再到导出包吧,也太麻烦了。所以软件发布一般采用TRegsrv方式
和CreatRemote;
Create之所以能访问远程COM/COM+服务器是因为导出的客户包在COM服务器之间起
到代理的作用,而且包里含有特定服务器的信息。调试可以,发布软件不太好。
其实Tregsrv方式可以做到自己用程序控制COM+组件的加载和卸载,呵呵
2.DCOMCNFG是用来管理DCOM远程服务时的一些权限和安全设置的,你可以把OUT-Process
当作IN-process方式的自行注册就可以啦,它是根据你进行注册后的服务组件来控制的
3.祝好运!
 
请问各位大哥:
如果按照上述的方法去设计三层架构的系统的话,那么中间层应用程序服
务器运行在哪一台计算机上啊?是客户断,还是中间层应用程序服务器程序所在的那台计
算机啊?
 
楼上的各位同仁:
有没有用过UML设计过中间层的,如果有的话能不能发个样例给我。
tangtj@mail.nbptt.zj.cn
 
你们说的是tregsvr吧,我找tregsrv找了半天也没找到。
我用tregsvr先注册了tlb库,
然后安装我的客户端程序,然后运行,但报错了,说“没有注册类别”。
另外我用导出的客户端组件(XXX.msi)无法安装,他说error registering your com+ application
但我在一台有delphi运行环境的机器上装了客户端程序后就能访问服务端的数据了。也没注册什么,也没装client端的.msi文件
 
呵呵!在一个没装过delphi的机器上你还需要复制以下文件到系统目录
midas.dll
stdvcl40.dll
这个文件也不能少STDOLE2.tlb
你再试试,祝好运
 
我后来拷了midas.dll,及我自己程序的tlb文件,然后
regsvr32 midas.dll
tregsvr XXX.tlb
最后再安装clientXXX.msi,这是就可以装上了,客户端也能访问服务端了。
 
顶部