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

时间:2008-10-24 03:04:35

标签: c# .net windows

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

6 个答案:

答案 0 :(得分:7)

我会对此进行疯狂的抨击并说你可能希望办公室应用程序打电话回家到你的exe?在这种情况下,“exe”是服务器,办公室应用程序是客户端。

如果您使用的是.NET 3.0,那么WCF可能是您最好的选择。我将解决方案分为三个部分:

  1. “共享合同”。这些是描述您的服务的接口。如果您具有将在应用程序之间传递的自定义数据对象,则也应在此程序集中定义它们。此程序集在客户端和服务器之间共享。有关详细信息,请参阅“Designing Service Contracts”。
  2. “服务”。这个程序集是你的“exe”,它将引用合同并根据你的服务合同定义类。您的应用还将为您的服务托管ServiceClient。此应用程序的配置文件将定义ServiceClient将如何向客户端公开(可用作Web服务,tcp等)。有关详细信息,请参阅“Implementing Service Contracts”。
  3. “客户端”。您的插件将引用“共享合同”程序集,并将包含基于合同的服务客户端。可以使用svcutil.exe工具自动生成客户端。
  4. “exe”和“plugin”都需要定义绑定的配置文件。

    如果要在客户端和服务器之间传递数据,客户端将从“共享合同”程序集中创建一个对象,并将其传递给服务客户端。客户端的配置文件将确定将数据发送到何处。

    有关如何创建基本WCF服务的分步教程,check out this Tutorial

答案 1 :(得分:2)

答案 2 :(得分:2)

烨。 WCF是要走的路。我建议您查看iDesign.net以使用InProcFactory类。您可以将办公室课程简化为服务,并呼叫您托管服务的其他应用程序。然后,其他服务可以回拨给基于办公室的服务。

您可以使用IPC端点,这将使沟通顺畅。

-Scott

答案 3 :(得分:1)

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

Check out the getting started tutorials.

答案 4 :(得分:1)

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

答案 5 :(得分:1)