2011-09-04 55 views
6

我有一个使用串口连接到电子设备的C#表单应用程序。 “SerialCommunicationManager”类在应用程序启动时挂接到串行端口,并处理与设备通话的肮脏业务。如何最好地暴露WinForm中的方法?

我想揭露下面的方法。

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

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

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

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

非常感谢

//大卫

enter image description here

+0

我不明白的情况下;你从Windows窗体开始并以网站结束。我不明白这一点。 –

+0

表单应用程序连接到电子设备。我希望其他应用程序(例如网站)能够查看设备的状态并向其发送命令。最大的问题是:如何让其他应用程序与设备通话。 – David

回答

4

我会建议self-hosting a WCF Service。这就为您提供了巨大的灵活性,包括如何提供和公开这些信息,包括能够通过配置更改服务的方式。

1

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

  • ,处理串口通信,并具有通过远程
  • 展示的API服务
  • 与该服务使用的API,使一种方式

然后,根据你的网站的地方,如果它仍将当地一个窗体应用程序(或接近当地 - LAN):

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

否则,如果您计划拥有多个网站:在IIS里托管

  • 网络服务,将包裹远程调用API
  • 网站将使用网络服务

但是,如果它是太多的工作要做 - 只要使用远程处理并将所需的方法暴露给网络站点。

1

在最近的一个项目,我们做了以下内容:

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

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