2011-09-04 39 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)與控制檯應用程序進行通信。