最近在写个DCOM的程序,关于proxy/stub部分一直有点搞不清楚,请高手指点一下1. 进程内组件(DLL形式)可以将proxy/stub部分合并在内部,这一点可以理解,
但如果是进程外组件的话,是不是proxy/stub部分就只能独立出来了,而不能和EXE合并在一起了?
刚才在CSDN上搜索了一下,有一种回答是
》》 如果接口没有用到自定义数据结构就不需要存根\代理。ole自带
不是很明白,谁能解释一下 按照自己的理解,进程外组件的话proxy/stub应该是必须的,这样客户端使用的时候就可以通过导入proxy/stub这个代理DLL获得相关的接口信息
如果没有的话,客户端又从哪儿得到相关的接口信息呢?2. 第二个问题是关于DCOM的,假设三个部件是 client.exe(客户端) servi.exe(服务器端) 和 serviPS.dll(Proxy/Stub)
如果在二台机器上配置的话,为什么在客户端也同样要具有servi.exe呢?
我觉得客户端只要有serviPS.dll不是应该就够了吗?
但如果是进程外组件的话,是不是proxy/stub部分就只能独立出来了,而不能和EXE合并在一起了?
刚才在CSDN上搜索了一下,有一种回答是
》》 如果接口没有用到自定义数据结构就不需要存根\代理。ole自带
不是很明白,谁能解释一下 按照自己的理解,进程外组件的话proxy/stub应该是必须的,这样客户端使用的时候就可以通过导入proxy/stub这个代理DLL获得相关的接口信息
如果没有的话,客户端又从哪儿得到相关的接口信息呢?2. 第二个问题是关于DCOM的,假设三个部件是 client.exe(客户端) servi.exe(服务器端) 和 serviPS.dll(Proxy/Stub)
如果在二台机器上配置的话,为什么在客户端也同样要具有servi.exe呢?
我觉得客户端只要有serviPS.dll不是应该就够了吗?
那我创建的COM组件就是自定义接口类型的。
看来proxy/stub肯定是必须的了。
第一个问题明白了。servi.exe就是一个提供COM组件的服务。
我看的是《COM技术内幕》,里面要求在客户端和服务器端都要执行servi.exe,
这一点想不通。
在客户端和服务器端都要进行组件注册,
但实际的代码只要在服务器端运行就OK了。