在 DCOM 远程调用中,客户端调用的时候,报“应用程序调用已为另一个线程整理的接口”(在线等待)

oldbone 2004-09-02 09:40:04
你好,我在写一个DCOM的程序的时候遇到如下的问题:
服务器:是一个exe 的 automation 的服务器上面只是定义一个属性 info 简单从服务器的计算机上的时间,并返回一个字符串给开发客户端;
客户端:在服务器和客户端都用了CoInitializeSecurity和CoInitialize进行安全访问设定和com初始化;假定TCOMIInterface为TCOMITestServer m_Obj;在客户端 采用m_Obj = CoTestServer::Create(); m_Obj = CoTestServer::CreateRemote(WideString(sName));创建本地对象没有问题,但在远程对象的时候服务器和客户端都必须用同样的用户名称和密码;(用DCOMCNFG进行了相应的设置),否则就没有办法访问远程对象。但是如果采用 CoGetClassObject 取得远程服务器的类工厂IClassFactory,然后IClassFactory通过CreateInstance生成一个com对象的实例,但在调用com接口方法的时候,程序报“应用程序调用已为另一个线程整理的接口”,不知您是否遇到这样的问题,是否有解决的办法 ,多谢,我的邮箱是:zhhzzybit@163.net
...全文
432 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Persistent8813 2004-09-26
  • 打赏
  • 举报
回复
我试了,DECOMCONNECTION只要配置成EVRYONE访问,可以不用登录域进行访问的,但WINDOWS客户端一定要是登录进入。(不能是取消)如果讨论可加QQ:23756137
BCB 2004-09-06
  • 打赏
  • 举报
回复
DCOM的安全机制要求客户端的用户名与密码须是服务端的一个用户,
最特殊的情况要求:双方的用户名与密码相同。
我参加过OPC SERVER的项目,就是一个DCOM应用。
oldbone 2004-09-06
  • 打赏
  • 举报
回复
请各位大虾发表意见
oldbone 2004-09-06
  • 打赏
  • 举报
回复
请各位大虾多发表意见
oldbone 2004-09-06
  • 打赏
  • 举报
回复
多谢Raptor(猛禽), BCB(天下三分明月夜,二分无赖是扬州),看来客户端只有用域用户进行访问了,如果各位大虾没有其他意见,我准备结贴了
猛禽 2004-09-06
  • 打赏
  • 举报
回复
WINDOWS的用户安全机制就是与域用户管理绑定的。所以它要求客户端调用服务端前必须通过域用户身份验证(特例就是服务端与客端用相同的用户名密码)。绕过此安全机制的办法之一就是tunnel,如MIDAS提供的SOCKETCONNECTION或WEBCONNECTION
oldbone 2004-09-06
  • 打赏
  • 举报
回复
to :BCB
我现在客户端可以通过CoCreateInstanceEx和QueryInterface调用服务器上的com对象,但是这个客户端必须在一个以一个域用户进行登陆,否则就不成功,而服务器与客户端是否在一个域里面并不影响客户端的调用,是不是在DCOM中客户端必须以域用户进行登陆?另外,能否分享一下你在DCOM开发上的心得?
猛禽 2004-09-04
  • 打赏
  • 举报
回复
CORBA和SSL都不熟.

SocketConnection不过是一个tunnel(见拙文《我观MIDAS》http://blog.csdn.net/raptor/archive/2004/06/23/24071.aspx),它通过代理DCOM请求而实现绕过WINDOWS的安全机制,有得有失。

至于复杂业务逻辑的问题,DCOM不是一个好的方案,应该换用MTS/COM+。

另,BCB做DataSnap应用会有一些问题,推荐用Delphi做。
oldbone 2004-09-03
  • 打赏
  • 举报
回复
to Raptor(猛禽) :
用 RemoteDataModule+DCOMConnection,我个人认为用 RemoteDataModule+ScokConnection可能还好一点,还没有这么多的限制,但是这两种方式是否在 业务对象的封装上是否都有点不好处理,并且如果业务的对象比较多的话,则必然会出现大的 RemoteDataModule 或者多个RemoteDataModule ,这必然会加大服务器的负担,同时,我个人感觉 borland 的datasnap 技术尽管降低 DCOM 开发难度,但是从在业务对象的封装上是否不太好实现,另外 ,在 BCB 中 RemoteDataModule 的实现感觉有点怪?当然这是我个人观点,不知道你是否有其他好的建议?
dragonchina58 2004-09-03
  • 打赏
  • 举报
回复
我有一个很急的问题请教各位仁兄,我用c++buider6,现在需要将CORBA与SSL结合起来,以满足CORBA传输安全性。请问哪位有经验,请详细说明如何编写服务器与客户端代码??非常感谢!!
猛禽 2004-09-03
  • 打赏
  • 举报
回复
俺们以前做的DCOM都是用RemoteDataModule+DCOMConnection,自己写这么多代码多麻烦啊,错了还找不到在哪里。
oldbone 2004-09-03
  • 打赏
  • 举报
回复
to Raptor(猛禽) :
这段代码基本上是从MSDN 上下来的,首先取得远程对象的类工厂,然后由类工厂产生com 对象的实例。
不知道你在 DCOM 方面有什么建议?是不是在服务器端用 DataSnap 中的 RemoteDataModul ,然后由客户端的 DcomConnetion 来连接?还是有其他的思路?能否指教!!!
猛禽 2004-09-03
  • 打赏
  • 举报
回复
没试过这样做DCOM的。
oldbone 2004-09-02
  • 打赏
  • 举报
回复
请各位大虾,多关注
oldbone 2004-09-02
  • 打赏
  • 举报
回复
请各位大虾,多关注
oldbone 2004-09-02
  • 打赏
  • 举报
回复
gz!

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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