如何在WinForm中最好地公开方法?

时间:2011-09-04 07:25:53

标签: c# web-services tcp

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

我想要的是暴露以下方法。

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

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

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

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

非常感谢

//大卫

enter image description here

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

在我看来,如果你想要正确地做,你应该拆分你的表单应用程序,并创建:

  • 处理串行通信并具有通过远程处理公开的API的服务
  • 使用API​​并使用该服务的表单应用

然后,根据您网站的位置,它是否会保留在本地(或靠近本地 - 局域网):

  • 网站应使用远程处理来呼叫服务

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

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

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

答案 2 :(得分:1)

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

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

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