目前我正在 Windows 上开发一个多进程桌面应用程序。此应用程序将是一个收缩包装的应用程序,将部署在世界各地的客户端机器上。虽然我们可以为机器制定广泛的规格 - 例如带有 .Net 4.0 CF 的 Windows XP SP3,但我们无法控制它们并且我们不能对它们的配置过于具体 - 例如我们不能指定机器必须具有支持 cuda 1.4 的图形处理器等等
其中一些进程是托管的(.Net 4.0),而其他进程是非托管的(C++ Win32)。进程需要共享数据。我迄今为止评估的选项是
- Tcp 套接字
- 命名管道
管道的性能似乎稍好一些,但对于我们的需要 - 两者的性能都是可以接受的。套接字为我们提供了未来跨越机器(和操作系统——我们希望最终支持非微软操作系统)边界的灵活性,因此我们更喜欢使用套接字。
但是 - 我主要担心的是 - 如果我们使用 Tcp 套接字 - 我们可能会遇到防火墙问题吗?是否有其他人部署了使用 TCP 进行 IPC 的桌面应用程序/程序并遇到问题?如果是这样 - 什么样的?
我知道这是一个相当开放的问题,我很乐意重新措辞。但我真的很想知道我们可能会遇到什么样的潜在问题。
编辑:为了更亮一点——我们只传输一些 POD、整数、浮点数和字符串。我们已经建立了一个抽象层,它提供了两种范式——请求/响应和订阅。传输层已经被抽象出来,目前我们有两种实现方式——基于管道的和基于 TCP 的。