exe之间的通信?

Posted

技术标签:

【中文标题】exe之间的通信?【英文标题】:Communication between exe? 【发布时间】:2013-02-28 11:00:37 【问题描述】:

我在一个 Windows Server 2012 上有多个用户(他们正在使用远程桌面)。

我有两个 (vb.net) 程序,它们需要相互通信 - 也就是说......每个用户都有两个需要通信的应用程序。

在同一个盒子上运行多个实例(每个 RDS 用户在一个实例上)时,让两个应用进行通信的最简单(也是最可行)的方法是什么?

谢谢!

【问题讨论】:

你觉得哪个最简单? 你尝试了什么? 您有什么要求?表现?可比性(两个程序可以是不同的版本)?异步还是同步?您可以启动其他我们正在处理的exe吗?每台服务器可以登录多个用户吗? 可能重复:A program sharing TEXT with its copy (opened twice) 我提到了一些可能性here,也可以看看这篇文章:.NET Interprocess Communication 一个有趣的方法。 【参考方案1】:

有很多选择:

消息队列(例如,MSMQ)。 ASP.NET WebAPI self-host WCF self-host。 ...

也许,在你的情况下,我会选择使用消息队列。而且,由于 MSMQ 随 Windows 一起提供(要安装它,请转到控制面板中的添加/删除 Windows 功能)并且 .NET Framework 对其提供开箱即用的支持,因此它可能是一个不错的选择。

旁注

当我提到 WCF/WebAPI 自托管时,我的意思是每个进程都可以有一个非常小的 REST 或 SOAP(或其他)API,这可能允许整个进程中的任何一个都可以充当客户端和/或服务器。这是进行进程间消息传递的好方法

【讨论】:

感谢您在这里帮助我。由于 MSMQ 在 TS/RDS 服务器上只有 1 个队列,因此同一服务器上的所有用户都必须处理消息,即使它们不是为他们准备的 - 这将导致不必要的过载 - 对吧? WebApi 自托管听起来很有趣,但这需要单独的程序才能运行。 @MojoDK 不,您不需要单独的程序。它的自宿主。按“原样”阅读。您可以在当前的 EXE 中“嵌入”一个 WebAPI。【参考方案2】:

你可以:

1) 使用 SendMessage api - http://msdn.microsoft.com/en-gb/library/windows/desktop/ms644950(v=vs.85).aspx

2) 运行客户端-服务器http://www.codeproject.com/Articles/12318/Building-Client-Server-applications-with-VB-NET-fo

3) 使用UDP广播http://www.solidautomation.com/bryon/Using_UDP_and_Winsock_in_Visual_Basic_6.htm

【讨论】:

SendMessage - 如果在同一个机器上运行同一个程序的 10-15 个版本(每个用户一个),这不会引起问题吗? 也许 - 我认为您可以向所有监听应用程序广播消息【参考方案3】:

可用选项进程间通信为:WCF Remoting ASP.Net WebSevices WM_COPYDATASocket programing

Interprocess Communications on MSDN 将是资源

【讨论】:

以上是关于exe之间的通信?的主要内容,如果未能解决你的问题,请参考以下文章

win32两个应用程序窗口之间进行进程通信要怎么写

WPF怎么能跨进程通信

windows xp中的进程间通信

12.组件化开发2-非父子组件之间通信-祖先和后代之间的通信

窗口之间通信类

vue的通信方式---祖父孙三个级别的之间的隔代通信