COM+真是烦想实现COM+的远程调用。
环境如下:
1、服务端WINXP SP2 局域网通过路由器共享上网
2、COM+安装服务端上。
3、客户端在外网可连接Internet。目前出现的问题是提示: RPC服务器不可用
另:在同一台电脑上安装服务端数据库、COM+、客户端软件都装在同一步电脑上调用正常。。我觉得可能是两个原因:
1、由于IP不在我的服务端电脑上,而在路由器上,所以外网电脑无法访问到。
2、访问到了可能是安全检查不通过,如用户不正确等等。
我看了许多次资料都说COM+要在服务端装一份,在客户端还要装一份代理?但又有朋友跟我说:客户端还要装一份还叫COM+吗

解决方案 »

  1.   

    不知道COM+如何映射端口?哪个端口?
      

  2.   

    COM+得调用135端口和其他一些动态端口
      

  3.   

    如果135被防火墙封了也可能无法访问可以通过修改注册表来换端口you set up your RPC port range under the HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet registry key. If you pick too small a range of ports, you can effectively hinder RPC from working at all on your server. A good range would be to use 20 ports or so, but that can still be too little depending on the number of other RPC-dependant services you may be running. After setting up the port range, you reboot the server, open up the firewall to port 135 (for RPC initial calls), and the multiple-port range that was set above. 
      

  4.   

    接口有两个版本的, 直接从 IUnknown 派生和 IDispatch 派生, 
    从 IUnknown 派生的接口叫 COM Interface, 就必须在客户端安装类型库, 不一定要注册组件, .tlb 文件起码要导入注册表
    从 IDispatch 派生的接口叫调度接口,就不必注册组件, IDispatch本身叫调度接口,每次函数调用要在网络上发2次两回包, IxxxDispatch 就叫智能能接口,所谓智能无非给函数编了个号,调用时就不必发2次包,一次就可以调用,这里的原因是IDispatchCOM+ 理论上是可以在 internet 运行的,理论运行,条件很多
    COM interface 是绝对不能在 internet 运行的
    调度接口就有可能
    要有个代理是必须的, 2003的组件中,找应用服务器,里面有网络的COM+服务,首先得安装
    打开n个端口后,没兴趣去用(5年前试过问题多多),就可以了问题是,建立连接非常慢, 有时要求客户端要有实IP(为什么我也不是很清楚)用delphi就有代替方案, scktsrvr.exe 就是一个很好的代理
    不是 delphi 的可以google找com+代理,com bridge,有第三方的代理,反正是都比ms自带的好设,好用
      

  5.   

    这两天一直看资料,基础不好,看的吃力。。再来这里请大家帮忙!我使用DELPHI7开发COM+,我看了部分代码,COM+在创建远程对象时是用的CreateRemote,在这个方法里面使用到了CoCreateInstanceEx,程序是执行到这步失败的,RPC不可用。
      

  6.   

    似乎COM+是不能实现类似跨网段的调用的啊
    而且最近我也碰过这个问题,明明135端口的连接能够建立的,但是就是无法创建调用接口,也是有点郁闷的
    估计要解决这个问题,也只能通过楼上提过的代理或者通过WebService包一层来实现吧
      

  7.   

    WebService中就可以直接创建COM+对象啊,这样就可以实现通过WebService调用COM+了啊。
      

  8.   

    哦,看来这一个方法值得去考虑下。先弄清楚DELPHI如何实现WebService
      

  9.   

    呵呵,晕嘛,找下咯,应该能够找到的啊
    另外,Delphi实现WebService其实很简单的,当初我就简单花了半天时间看了三章内容,就能够做了啊,推荐书:Delphi6/Kylix2 Soap and Web Service程序设计篇,李唯的啊
      

  10.   

    外网一定连不上的.
    听太可怕的,用borland自带的sokectserver的做代理吧.
    简单方便.