远程服务器方法:
Public Function Fun1(ByRef NewVal As Object)
    
End Function对象类型参数声明按ByRef方式传递,当客户端调用时,对象实际是怎么传递的?请知情者说明一下后台处理过程;
声明为ByRef和ByVal有何区别?Object是否需要实现特别的接口?
那位有这方面的参考资料请告知,非常感谢!

解决方案 »

  1.   

    声明为ByRef和ByVal有何区别?Object是否需要实现特别的接口?
    ---------------------------
    传地址和传值,仔细想想就知道。
      

  2.   

    1、首先 NewVal 对象的实例类型必须在服务器可客户端都是已注册的
    2、该对象类型必须是 Persistable 的(有代表性的就是 ADODB.RecordSet 类,自定义的类必须指定 Persistable 属性并实现相关事件)调用过程:
    1、无论是 ByVal 还是 ByRef,客户端将该对象实例数据化(触发 Class_WriteProperties 事件)生成二进制数据流发送到服务器;
    2、服务器根据数据中的相关配置产生一个新的对象实例进行还原(触发 Class_ReadProperties 事件),将该对象传送给 COM+ 对象实例进行相关调用;
    3、COM+ 调用结束后在服务器上将该对象实例数据化返回到客户端进行还原(ByVal 和 ByRef 的区别仅在于还原时是否会新建对象实例),然后将还原的对象返回给调用程序。在 COM+ 调用中不推荐使用对象参数,效率不高。