2016-06-23 109 views

回答

0

由於這是一個廣泛的問題,你問的想法讓我傾訴一些想法。

從哪裏開始?定義雙方理解的Web服務協議。例如,定義android客戶端可以將消息推送到(使用PUT或POST)的URI,並且vb.net客戶端可以輪詢更新(使用GET)。由於我們在這裏使用一個URI,因此發送給URI的負載必須定義要執行的操作。例如,Android客戶端可以發送消息「{command:restart}」,那麼vb.net客戶端應該知道如果收到消息,他必須重新啓動機器。

雖然這裏有一些注意事項。 vb.net客戶端需要輪詢URI來獲取命令,因此在發送命令和執行命令之間會有一些延遲,甚至更好,現在你甚至不知道命令是否被執行。沒有認證每個人都可以向Web服務發出命令,聽起來像是很有趣,至少對於其他方來說,最後你需要清除URI中的命令,如果它被執行或更新的話。否則,在這個例子中,進入重啓循環。

所以第一個問題可以用ext來解決ra URI,其中android客戶端可以輪詢vb.net客戶端提供的某些系統狀態王。例如,vb.net客戶端可能會在重新啓動之前將消息「{state:restarting}」發送到URI。當然,每次發生某事時,vb.net客戶端都需要更新該URI。安全問題?安全性很難。您可能需要創建一個證書並簽署發送的請求,以便服務器使用它。然後服務器可以檢查是否真的是誰發送了這個請求。或者有人擁有你的證書,重播請求或找到某種方式來打破整個事情。因此,您還可能想要使用TLS以及一些certificate pinning的國王。您可能已經知道這一點,但我會重複它:不要通過不安全的網絡發送憑據。 base64(在basic authentication中使用)也不是某種加密。最後的問題可以通過可以包含在命令中的隨機數來解決。或者當vb.net客戶端收到該命令時,從URI中清除該命令(使用DELETE)。它應該更新狀態URI,以便android客戶端不再發送請求。

或者你放棄了整個網絡服務的東西使用技術,如Web Sockets。然後android客戶端可以發送一個命令到套接字。服務器接收命令並將其發送到vb.net套接字。當vb.net套接字收到該命令時,它會向服務器發送某種傳遞收據並執行該命令。服務器收到收據並向Android客戶端發送一個確認信息,以便它知道執行命令將會執行

正如你看到有很多實現這樣的解決方案,所以讓我總結什麼時候做:

  • 確定你使用的情況。系統必須支持哪些操作以及參與方如何參與。
  • 找到每個用例的角落案例。例如需要解決的認證問題。
  • 做了一些研究,以最好的方式支持你的想法。也許Web服務不是最好的解決方案?什麼是Web服務? (似乎是任何人使用的流行語之王)。也許Web Sockets,XML RPC甚至SOAP是更好的候選人?
  • 定義組件的協議
  • 實現它

一個最後一個音符。我知道這是一個相當長的答案?這可能會在讀者頭腦中產生很多問題。但是,不要氣餒!你不必做任何我在這裏寫的東西。那麼除了安全的事情可能。

+0

謝謝你 將閱讀有關此主題我仍然是學生,這是我的畢業設計 我對這些主題了解不多 –

相關問題