【问题标题】:How to do intra-application communication in .NET如何在 .NET 中进行应用程序内通信
【发布时间】:2008-10-24 03:04:34
【问题描述】:

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

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

    我会猛烈抨击并说您可能希望办公应用程序打电话回家到您的 exe?在这种情况下,“exe”是服务器,而 office 应用程序是客户端。

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

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

    “exe”和“plugin”都需要定义绑定的配置文件。

    当您想在客户端和服务器之间传递数据时,您的客户端将从“共享合同”程序集中创建一个对象并将其传递给服务客户端。客户端的配置文件会确定数据发送到哪里。

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

    【讨论】:

      【解决方案2】:

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

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

      -斯科特

      【讨论】:

        【解决方案3】:

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

        Check out the getting started tutorials.

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-06-25
              • 2023-03-24
              • 2011-09-15
              • 2015-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多