2010-09-01 147 views
2

我正在寻找一种方法来缓解将数据从一个应用程序/进程转移到另一个应用程序/进程的困难。两个应用程序/进程如何通过COM进行通信?

据说比同一个操作系统中的进程通信的UDP或TCP更好(这里是Windows XP)。

你能提供一些核心代码来说明这一点吗?

+0

我认为你需要提供一些更多的信息,有多少数据,我们在谈论例如,性能限制等人这样可以给你一个更好的答案。 – 2010-09-01 03:57:47

+0

顺便说一句,我不会说COM是一种'简单'的方式来传递数据,它有它自己的挑战。 – 2010-09-01 03:58:50

+0

试图使用COM来进行通信,类似于UDP或TCP可以提供的通信有点像驾驶公路平地机去购买杂货。 – 2010-09-01 04:46:11

回答

1

嗯,是的,COM支持远程过程调用进程外的一个COM服务器。您从客户端进行调用,它会在另一个进程中运行,就像在该进程中调用它一样。代码片段没有什么意义,因为它看起来像正常的函数调用一样

有一个相当数量的管道和配置你必须照顾,使这项工作。您通常需要代理/存根DLL,以帮助编组函数调用的参数。它们通常是由您编写的描述接口的IDL自动生成的。如果你传递的参数是'不寻常的',那么你可能需要编写一个自定义编组器。这通常可以通过不传递不透明的指针或可变大小的数据块来避免。

Visual Studio可以自动完成很多东西,ATL非常有帮助。无意中做错事情肯定要困难得多。如果你以前从未这样做过,期待几个月的时间来加速这一进程。获得好的学习资料可能很困难,这已经过时了。这种东西现在是在托管环境中完成的。自动生成所需的代理更容易。

1

在我的项目中,我决定使用命名管道进行进程间通信。

+0

使用重叠模式有什么好处? – user198729 2010-09-01 16:00:30

+0

“重叠操作使得一个管道可以同时读写数据,并且单个线程可以在多个管道句柄上执行同时进行的I/O操作,这使得单线程管道服务器可以高效地处理与多个管道客户端的通信。 “ – 2010-09-02 08:57:19

+0

所以在重叠模式下,读/写操作立即返回,对吧? – wamp 2010-09-07 06:50:58

相关问题