请教Raptor(猛禽)同志:如果通过SocketConnect创建COM+组件接口,该COM+组件不是从IAppServer继承而来.

wangxj333 2003-11-27 06:12:10
如题,如果该COM+组件不是继承自IAppserver,则在ServerName下拉看不到,自行指定ServerName和ServerGUID,则报错对象无效.
如何才能正确的通过TSocketConnect来创建COM+对象呢?
...全文
108 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxj333 2003-12-15
  • 打赏
  • 举报
回复
接分
wangxj333 2003-12-15
  • 打赏
  • 举报
回复
谢谢各位的热心帮助,接风!
wangxj333 2003-12-15
  • 打赏
  • 举报
回复
to leapmars(流铭), halfdream(哈欠)
我改用Web Service了,但碰到了一个怪问题,快帮我看看:
http://expert.csdn.net/Expert/topic/2553/2553257.xml?temp=.5105249
猛禽 2003-12-01
  • 打赏
  • 举报
回复
老朱你贴的什么啊,离题了吧
wangxj333 2003-12-01
  • 打赏
  • 举报
回复
天啦.
halfdream 2003-12-01
  • 打赏
  • 举报
回复
如果有WEBSERVICE经验,时间风险应该不是问题.
服务端可以使用COM->SOAP的工具,
客户端用DELPHI编写调用代码也只是几分钟的事情.

zhucp 2003-11-30
  • 打赏
  • 举报
回复
function TProxySrv.Get_InitObj: IAppServer;
begin
try
OleCheck(ObjectContext.CreateInstance(CLASS_InitSrv, IInitSrv, Result));
finally
SetComplete;
end;
end;
猛禽 2003-11-29
  • 打赏
  • 举报
回复
哈哈,来迟,楼上几位都答得差不多了嘛。:)

声明一下,偶可不是“同志”^_^

因为Borland提供的SocketConnection/WebConnection都是属于MIDAS的组成部分,都是针对IAppServer设计实现的,因为你的COM+不是基于MIDAS的,没有IAppServer,所以直接用是肯定不行的。

流铭的建议是一个方法:等于是自己写一个TCP Tunnel来代理IDispatch接口。当然,也如你所说,存在风险。

还有一个就是用现成的Tunnel,MS提供的CIS是一个解决方案,相对来说会比自己写的要可靠一些,不过据说安全性不怎么样,比如前一段的冲击波病毒中就有利用到此技术的漏洞。

个人认为还是哈欠兄的提议好些,用WebService/SOAP,当然性能上就要差了,有得必有失嘛。
halfdream 2003-11-29
  • 打赏
  • 举报
回复
拨号上网的机器配置DCOM连接太不合适了,要使用也只应该用轻捷些的通讯协议.

有这样几种方式,
1,还是使用socketConnection,自已在服务器设计一个应用服务器作为调用的代理.

2,自定义SOCKET,编写自己的SOCKET服务器,通过它调用COM组件.

3,相当于第二种的变化,运行WEB服务器,写CGI程序,通过它调用COM组件.客户端调用
使用HTTP

4,使用SOAP工具,做WEBSERVICE,同上面2,3本质相同,但有大量现成工具可以用.


猛禽 2003-11-29
  • 打赏
  • 举报
回复
因为偶一向是用MIDAS滴,所以CIS也只是略知一二,从来不用,也用不着。

既然楼主搞不定,看来用CIS这条路是不通了。

或者你可以出钱去买流铭兄的TCP Tunnel

要不只有用WebService,当然这样时间上就要多一些了
wangxj333 2003-11-29
  • 打赏
  • 举报
回复
to Raptor(猛禽):
"MS提供的CIS是一个解决方案",我就是因为使用了MS的CIS解决方案,但始终不能成功,才想到Socktet,Web连接方式的.
客户一直在等着我的远程解决方案,我用了CIS却一直不能成功.看了各位高手的建议,时间风险过大.实在不行,只有寻求微软技术支持了,支持一次1,000元啊.
看我这个帖子:
http://expert.csdn.net/Expert/topic/2469/2469244.xml?temp=.8422968
如果各位帮我解决了这个难题,我将感激不尽啊.
leapmars 2003-11-29
  • 打赏
  • 举报
回复
另外, 楼主可不要 开口闭口的喊“同志”。我怕怕! ^_^
leapmars 2003-11-29
  • 打赏
  • 举报
回复
呵呵,用 WebService/SOAP 的确是不错滴!

我说的那个方法,已经运用在我做的一个项目中,目前来看还是比较稳定滴。^_^

用 SocketConnection 的风险 主要在于 Scktsrvr.exe 有些问题。
wangxj333 2003-11-28
  • 打赏
  • 举报
回复
哦,to leapmars(流铭)同志:这样改了还能不能用啊,即使能用会不会时不时冒出一些让人难以理解的错误呢?这个风险太大了吧.
我们的产品已经发布,原来都是用DCOM来连接的,但DCOM在Internet上的连接一直不能测试成功,就又想到用TSocketConnect来创建COM+对象,可又出现其它错误.
这个是我配置DCOM Internet的帖子,各位看看吧.
http://expert.csdn.net/Expert/topic/2469/2469244.xml?temp=.7533686
leapmars 2003-11-27
  • 打赏
  • 举报
回复
需要修改的单元包括 SConnect.pas, MConnect.pas,并且要删除对一些相关单元的引用,比如 midas.pas,databkr.pas。主要是把 里面涉及到 IAppServer 的地方要换成 IDispatch。 你自己试试吧。
leapmars 2003-11-27
  • 打赏
  • 举报
回复
完全可以。但需要修改一些源代码。
halfdream 2003-11-27
  • 打赏
  • 举报
回复
TSocketConnection设计只允许对IAPPSERVER的COM远程调用.
halfdream 2003-11-27
  • 打赏
  • 举报
回复
使用TSocketConnection就不是COM+了.

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧