应用之间的通信

Zlo*_*ton 7 c++ sockets windows com activex

我有3个选择:套接字,activeX,com,以便在一台计算机上的应用程序之间进行通信.哪个更快?

Han*_*ant 12

只要它在一台机器上运行,进程间通信就会受到总线带宽的根本限制.内存到内存的副本,无论是在TCP/IP堆栈中完成,命名管道支持代码还是共享内存.这使得它们都同样有效.

但有一个细节很重要,即传输的数据量以及为完成工作而通过的软件层数.当数据量很大时,内存总线带宽仅限制.对于像COM这样的远程过程调用协议,情况不一定如此.只需要序列化函数调用的参数,如果不传递数组,则只能是少数几个字节.现在开销很重要,当你使用像COM这样的高级协议时,有相当多的开销.

使用套接字的明显缺点是你必须自己编写所有的de/serialization代码.如果具有组件的协议不简单,则不重要.为了方便而交易您的工作时间是典型的选择,只有您可以做到.


小智 11

好吧,想一想 - 套接字是最低级别的,COM是使用套接字,ActiveX是使用COM.哪一个更快?当然,插座.但这只是在询问程序执行速度和数据传输速率时.但是,如果您不知道自己在做什么,使用套接字开发程序会更加困难.更不用说你可能会提出一些比COM差的糟糕实现.此外,当你使用ActiveX时,你可以获得的套接字没有那么多的可重用组件,更不用说如果你想与MS Office通信,你将不得不使用COM.

  • 实际上COM在交叉过程中使用LRPC/LPC(不是套接字),但是在相同的机器情况下.LRPC/LPC非常高效(使用共享内存). (5认同)