繁体   English   中英

在.NET Windows窗体中,如何在两个EXE或应用程序之间发送数据?

[英]In .NET Windows Forms, how can I send data between two EXEs or applications?

我提出的场景基本上就是两个.NET可执行文件之间的交互。

我已经制作了一个用C#开发的.NET Windows窗体应用程序(Application-A),该应用程序在用户的计算机上运行,​​并执行一些特定的活动,因此它收集了一些数据。 现在,我还有另一个.NET Windows Forms可执行文件(Application-B),它也是用C#编写的,它也根据提供的某些输入或数据执行一些特定的活动。

现在我要在这里做的是,从Application-A调用Application-B并将一些数据传递给它。

我该如何完成?

您可以使用几个选项。 下面的每个选项都有一些资源。

  • .NET远程处理
  • WCF
  • 使用通讯文件
  • MSMQ

仅当进程在同一台计算机上时,后两个选项才有效。

由于它们是两个独立的进程,因此我认为最简单的方法是使用.NET Remoting 在这里,您可以找到有关此操作的文档和示例。

远程处理的替代方法是WCF (> = .NET 3.0)。 它比远程处理要好

如果进程始终在同一台机器上,并且不想在本地主机上使用远程处理,则可以通过文件进行通信( 简单的解决方案通常可以正常工作!

其他更复杂的解决方案是使用消息队列( MSMQ )进行通信。 在这里,您可以找到有关如何使用它的示例。

您可以使用MSMQ在应用程序之间进行通信。

但是,任何机制都可以。

您可以使用基于文件的通信(写入已知目录并从中读取)。

WCF是另一种解决方案。

如果两个应用程序都在同一用户计算机上运行,​​则

1-这可以通过进程间通信通道(IPC通道)来实现

2-如果使用的是.NET 4.0,则可以使用内存映射文件

如果两个应用程序都在不同的系统上运行

1-您可以利用.NET Remoting

2-您可以进行基于WCF服务的通信

3-如果使用.NET 2.0或更低版本,Web Service也是一个选项

WCF将来将为您提供很大的灵活性:如果您决定增强此通信以支持多种通信方式,则app.config更改应该是支持不同绑定的大部分工作。

在我参与的一些项目中,有多种通信技术混合在一起,其中一种选择本来就容易维护得多,这使我对WCF的决定具有固有的灵活性(WCF还支持MSMQ,如果需要排队等候通信)。

如果您担心学习曲线,并且确定将来不再需要其他的通信拓扑,那么远程处理可能是一个有用的解决方案。 远程处理可能是设置IPC所需的最简单,最不需要开发人员的工作。

您应该远离诸如Web服务之类的东西-WCF不会遭受Web服务操作中不必要的开销(例如,WCF仍然可以允许二进制传输)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM