2010-04-12 57 views
1

我想創建一個遠程web服務,現在只能在本地使用。該應用程序控制串行端口上連接的三個設備(每個設備分開控制)。問題是我不知道如何處理返回設備返回請求數據的信息。例如 - 我向移動設備發送移動命令(這很慢,可能需要一分鐘或更長時間)。我可以在客戶端(和服務器端)設置一個很長的超時時間,並且如果操作完成或返回例如true/false,這是一個壞主意嗎?有大超時的SOAP可以嗎? 另一個問題是,Linux上的Mono(Ubuntu 9.10,Mono 2.4)是否足夠穩定,可用於製作Web服務,或者我應該選擇Java還是其他語言?用於串口設備的Webservice

我願意提供建議。

感謝您的幫助!

回答

2

使用大超時並不是一個好主意。它浪費了服務器和客戶端上的資源,並且在分配的超時到期之前,例如服務器不可用時,您將無法檢測到「真實」超時條件。

你真的有兩個選擇。首先是使用輪詢。立即從動作請求命令中返回,確認接收到命令(而不是完成它)。然後定期發送請求,詢問命令是否完成。

另一種替代方案要求客戶端能夠註冊一個回調端點,服務器在動作完成時將調用該回調端點。這使整個過程異步,但要求客戶端能夠在服務器模式下運行。這對於WCF很容易實現 - 但我不知道這個功能是否可用於Mono。

+0

您可以指出我正確的方向如何與SOAP ...我必須要照顧。 感謝您的回答,這很有幫助! – redman 2010-04-12 17:31:06

+0

如果是輪詢,則需要有兩個Web服務方法,例如SendStartCommand和GetCommandStatus。如果您選擇異步選項,則客戶端必須實施SOAP方法StartCommandCallback,並將該端點作爲SendStartCommand方法中的參數發送。我建議從投票開始,這對你來說會更容易。 – kgiannakakis 2010-04-12 18:15:03