关于在COM中“代理(Proxy)和存根(Stub)”的疑问?请高手指教。

imjack 2003-07-22 07:18:16
在COM架构中调用者和被调用者如果在不同的套间,就不可以直接调用,而必须通过代理(Proxy)和占位(Stub)程序调用,通过Proxy和Stub之间的通讯来完成调用者和被调用者之间的调用,即:Server -- Stub -- Network --- Proxy --- Client,我的疑问是直接通过Server -- Network --- Client能实现吗?为什么一定要使用Proxy和Stub?
...全文
368 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Promise91 2003-11-25
  • 打赏
  • 举报
回复
................
lop5712 2003-11-16
  • 打赏
  • 举报
回复
RPC是指远程过程调用,COM之所以要用Proxy/Stub,而不用WinSocket等通信手段直接通信是因为COM要实现位置透明性,即客户不需要知道服务器在哪。

另一个重要原因是因为封装需要,客户如果和服务器直接通信,那么他们之间就得建立一个协议,指明参数的传递格式,用什么加密手段加密,公钥是什么等,这有违服务器的封装性,而且也留有严重的安全隐患(因为会话是由客户和服务器共同建立的,而客户和服务器并不是同一组织编写,客户方可以留下漏洞),而使用Proxy/Stub,Proxy和Stub都是编写服务器的组织编写的,留下漏洞的原因就只能是那个组织水平有限。
wshcdr 2003-11-16
  • 打赏
  • 举报
回复
MARK
imjack 2003-07-23
  • 打赏
  • 举报
回复
恕我愚昧,我还是没明白。RPC是指 Remote Procedure Call吗?
Phourm 2003-07-23
  • 打赏
  • 举报
回复
楼主的意思可能是用COM来通讯为什么不是和Socket通讯一样直接连接而要通过代(Proxy)和(Stub)

COM在这里应该认为是DCOM最后也是要走Socket的,只是这些DCOM都帮你做好了,所以你不用自己写一个Socket来RPC一下,他让你感觉服务器就在本机上一样.

不是说COM不能做Socket,用COM和做Socket没有什么关系
luohualiushui 2003-07-23
  • 打赏
  • 举报
回复
我说得很清楚了,数据当然是靠RPC来传的
但是只有代理/存根dll知道把传来的数据包unmarshal成什么东西
imjack 2003-07-23
  • 打赏
  • 举报
回复
难道 Server 就不能直接通过网络来接受 Client 传过来的东西吗?
luohualiushui 2003-07-22
  • 打赏
  • 举报
回复
如果没有proxy/stub
那么server怎么知道client传来的是什么东西,同样client也不知道server传来的是什么东西

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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