兄弟正在开发COM+,客户端想用dcom连接,再做个DCOM服务器,完成接口转换过程。处理过程如下:
  客户端需要知道该DCOM服务器的接口,连接到该服务器后通过该服务器传递Olevariant类型的参数并调用COM+组件(因为我想做出可用其他方式调用的com+组件)来完成事务性操作,当然也需要返回数据。
  但小弟不明白DCOM服务器那里应该怎么去写,需要自定义列集实现接口转换?请大虾指点一二,感激不尽…………

解决方案 »

  1.   

    你发誓也没有用
    现在这里人气很差
    建议你看一下李维的那本ADO/MTS/COM+
      

  2.   

    客户端->DCOM->COM+?是这样么?
    为什么不直接调用COM+
      

  3.   

    利用COM+库文件进行动态调用,不需要用DCOM控件。
      

  4.   

    function TIsapiserver.execSql(STRSQL: string): integer;这个是你的Dcom的服务段函数
    function TIsapiserver.execSql(STRSQL: string): integer;
    var
      obj: variant;
    begin
      coinitialize(nil);
      try
        obj := createoleobject('pmts.mtsreport');//你的com+
        obj.queryexe(strsql);//你的方法
        result := s_ok;
      finally
        CoUninitialize;
      end;
    end;
      

  5.   

    to  eastliangliang(青苹果)(有家厨房大掌柜—辞职中) ,charlish(刘金胜) 
    不使用DCOM如何能跨机器调用com+组件?我了解的三层结构主要有以下几种(不对地方请指出):
    1)客户端直接连接到自己编写的服务器上(一般是dcom),服务器直接连接数据库,但没有享受到事务;
    2)客户端通过SCK,WEBCON等根据IP(适合因特网)连接到iis上,再通过httpsvr转连COM+
    3)还有就是我这种情况,想利用现有的COM+组件通过dcom连接,可方便应用于内部网再次感谢 theone_jxm() ,不过我希望要的是不关联任何具体组件信息,只是将请求转发。我希望创建的是线程模型和COM+相同的单一服务器COM组件,通过MARSHALINTERFACE方式调用COM+接口,不知是否需要自定义列集???
    还有李维所有的书都有,最经典的两本看了好几遍
      

  6.   

    如果不知道dcom怎么写可以用向导
    file->new->选择要写的liberary就行了
    Good Luck!
      

  7.   

    你的要求太特别了,等于是做了一个DCOM应用来作代理,这种应用过于特殊,一般书里是不会说的,而且我想不出有什么情况需要一个这样的东东。
    如果你真要做,自已去看scktsrvr的源码,它是用SOCKET来实现你要的功能。
      

  8.   

    如果用DCOM应用来作代理,在5.0版本时有些问题,但在7.0我也不是很清楚啦。你这样的做法是想溶合MIDAS和COM+的优点,但是我觉得这样做会更加复杂。
        当然在不同的应用可以使用不同的手法。你这种做法也是正确的。
      

  9.   

    其实我们可以把COM+组件看作是标准的封装企业逻辑的中间件,这样就是升级到DOTNET也能平滑的去过渡,并且能用到事务、安全等特性。
      至于客户端,我的观点是不一定要特别瘦,太瘦会加重服务器负担。现在硬件发展很快,我将一些显示逻辑分离出来写到客户端。
      这样客户端和COM+组件之间的通讯就可以分离出来,不管是用什么方式实现,只是充当“中介”或“代理”的角色。当在因特网上调用,可以使用基于TCP/IP协议的WEBCON,而内部网使用DCOM效率应该比WEBCON要高(我是不喜欢使用SCK),也能提供一定程度的安全性,但缺点是配置较复杂,实施成本较高。
      不管怎样,我规划的这种方式理论上应该是可行的,如果我能搞定会把代码贴出来共享,更希望大家多帮忙,谢谢
      

  10.   

    好啊﹐俺也想知道 shsunb(我怕来不及)是好人