C# 应用程序与 C++ 和 VB.Net 中的其他应用程序之间的 IPC
IPC between a C# application and other applications in C++ and VB.Net
我有一个 C# 服务器应用程序,它需要与另外 3 个客户端应用程序通信并控制:一个在 C# 中,一个在C++中,一个在 VB.Net 中。所有这些都是Windows表单应用程序。他们基本上需要交换一些字符串和数字,而不是重载。在 C# 和这些不同语言之间进行 IPC 的最佳方法是什么?请注意,客户端不相互通信,它们只与服务器通信。
C#需要与C++对话,所以我想WCF不好,因为WCF只在两个.Net应用程序之间工作?
是否可以在以下所有语言中方便地使用命名管道:C#、C++ 和 VB.Net?
我还想知道将来是否必须添加VB6,VBScript和PowerShell脚本作为客户端,适用于所有这6种语言的最佳IPC选项是什么?我是否仍然可以使用命名管道?
实际上,配置为通过 HTTP 公开服务的 WCF 可能是要支持的语言列表的最佳选择。
如果您不喜欢 WCF,请考虑公开 HTTP REST 接口,即通过在 MVC 中编写服务器 ASP.Net。
命名管道支持 - C#/VB.Net,C++ - 好,VB6 - 我不知道,VBScript - 绝对不是开箱即用的,PowerShell - 是的,因为它可以使用.Net库。
您列出的语言的最快解决方案是命名管道,更好的是内存映射文件。两者都在 .NET 4.0 和非托管C++中实现。
我建议查看内存映射文件。创建用作单生产者、多使用者、单向通道的文件和关联视图相对简单。例如,您可以使用该区域的前 4 个字节来存储写入的最后一个字节的更新值(取模视图大小 - 4 个字节)和一个 EventWaitHandle 来同步生产者/使用者访问。两个通道访问单独的内存映射文件将为您提供一个双工通道。
.NET(C# 和 VB.NET)的链接和非托管C++。
然后,您可能希望将协议缓冲区视为序列化二进制数据的非常有效的方法。
0MQ是Linux领域的优秀产品,但Windows版本有所简化,并且不支持IPC。
您可以尝试不同的库,例如OpenDDS,ZeroMQ等。虽然Windows上的ZeroMQ还不支持IPC(但支持TCP)。
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 从 Windows 中的其他应用程序 GUI 中提取数据
- 打开应用程序主窗口 在系统托盘图标中的其他应用程序之上
- 如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
- Xlib XSENDEVENT在其他应用程序/过程中
- CreateProcess:某些应用程序运行其他应用程序
- 我的COCOS2D游戏开始,而不是其他音乐应用程序停止
- Create_task():称为“接口”的应用程序,该接口已编辑为其他线程进行编组
- 全球安装的键盘钩可防止键盘输入其他应用程序
- 如何将OpenCV的输出显示或流式传输到HTML页面或其他一些客户端应用程序
- 创建 COM 接口指针在开发计算机上有效,但会导致其他计算机上的应用程序崩溃
- Cython 带 STL 矢量和没有 NumPy 可以从其他应用程序调用,缺少什么?
- 其他静态阵列破坏了OMAPL138目标(CCS5.2)上的DSP应用程序
- 我可以在OpenFrameWorks中调用应用程序以外的其他内容
- 如何在 Linux 应用程序中专门使用其他键盘
- 与其他应用程序的交互
- 关键部分,如果是多线程应用程序中的其他条件
- 默认的Qt控制台应用程序不会"Hello World"...或做任何其他事情
- 是否有预处理器宏可以让我知道应用程序是控制台类型还是其他类型