如何在.NET中进行应用程序内部通信

本文关键字:应用程序 内部 通信 NET | 更新日期: 2023-09-27 17:48:53

用C#将数据从一个Windows窗体应用程序(一个办公插件)传递到另一个(用C#编写的exe)的最佳方式是什么?

如何在.NET中进行应用程序内部通信

我会对此进行疯狂的尝试,并说你可能希望办公应用程序将家打电话到你的exe?在这种情况下;exe";是服务器,office应用程序是客户端。

如果你使用的是.NET3.0,WCF可能是你的最佳选择

  1. "共享合同";。这些是描述您的服务的接口。如果您有将在应用程序之间传递的自定义数据对象,则也应在此程序集中定义它们。此程序集在客户端和服务器之间共享。参见";设计服务合同;了解更多信息
  2. "服务";。这个程序集是您的";exe";它将引用合约并根据您的服务合约定义类。您的应用程序还将为您的服务托管ServiceClient。此应用程序的配置文件将定义ServiceClient将如何向客户端公开(可用作web服务、tcp等)。参见";实施服务合同";了解更多信息
  3. "客户";。您的插件将引用";共享合同";程序集,并将包含基于合约的服务客户端。客户端可以使用svcutil.exe工具自动生成

两个";exe";以及";插件";将需要定义绑定的配置文件。

当您想要在客户端和服务器之间传递数据时,您的客户端将从";共享合同";汇编并将其传递给服务客户端。客户端的配置文件将确定将数据发送到哪里。

有关如何创建基本WCF服务的分步教程,请查看本教程。

是的。WCF是我们要走的路。我建议查看iDesign.net以使用InProcFactory类。您可以将您的office类填充到一个服务中,并调用托管服务的其他应用程序。然后,另一个服务可以回叫到基于办公室的服务中。

您可以使用IPC端点,这将使通信快速。

-Scott

WCF是实现这一点的最简单方法之一。你可以在每个应用程序中注册一个服务端点,或者如果一个是服务,另一个是客户端,你可以只使用一个服务主机。

查看入门教程。

有很多方法可以实现这一点。我过去使用过命名管道。对命名管道的支持现在也内置在.NET中(按照3.0?),所以它是相当直接的。

老派,但它有效-使用WM_COPYDATA在windows应用程序之间发送消息