【问题标题】:How to best expose methods in WinForm?如何最好地在 WinForm 中公开方法?
【发布时间】:2011-09-04 16:24:56
【问题描述】:

我有一个使用串行端口连接到电子设备的 C# 表单应用程序。 “'SerialCommunicationManager'”类在应用程序启动时连接到串行端口并处理与设备通信的脏事务。

我想要公开以下方法。

  • 写()
  • SerialDataReceived 事件
  • SerialDataTransmitted 事件

主要是在同一台机器上运行的本地网站是我想要公开方法的网站,但我认为将来也需要外部应用程序。

公开功能的最简单方法是什么?

  • TCPIP 客户端服务器?
  • Web 服务? (我可以在 WinForm 中创建 Web 服务吗?)
  • 其他?

非常感谢

//大卫

【问题讨论】:

  • 我不明白上下文;您从 Windows 窗体开始,以网站结束。我不明白。
  • 表单应用程序已连接到电子设备。我希望其他应用程序(例如网站)能够查看设备的状态并向其发送命令。最大的问题是:如何允许其他应用程序与设备通信。

标签: c# web-services tcp


【解决方案1】:

我会推荐self-hosting a WCF Service。这为您提供和公开此信息的方式提供了极大的灵活性,包括能够通过配置更改提供信息的方法。

【讨论】:

    【解决方案2】:

    在我看来,如果你想正确地做到这一点,你应该分解你的表单应用程序,然后创建:

    • 一种处理串行通信并具有通过远程处理公开的 API 的服务
    • 一个使用 API 并与服务合作的表单应用

    然后,根据您网站的位置,它是否会保持在本地(或接近本地 - LAN):

    • 网站应该使用远程调用服务

    否则,如果您计划拥有多个网站:

    • 在 IIS 中托管的 Web 服务将包装远程处理 API
    • 将使用网络服务的网站

    但是,如果要做的工作太多 - 只需使用远程处理并向网站公开所需的方法。

    【讨论】:

      【解决方案3】:

      在最近的一个项目中,我们做了以下工作:

      • 编写与电子设备通信的控制台应用程序(或 Windows 服务,取决于您的需要)。
      • 使控制台应用程序托管 .NET 4 WCF 服务。
      • 编写一个 .NET 2 Windows 窗体应用程序以通过 Web 服务与控制台应用程序进行通信。

      在这种情况下,我可以想象您提到的网站也使用 Web 服务 (WSDL) 与控制台应用程序进行通信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-13
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多