2013-06-04 58 views
1

我有一個C#程序在本地系統上運行,需要能夠做兩件事。設計一個跨平臺的通信接口

  1. 在運行Windows,Linux或Android的遠程系統上異步分離遠程作業。
  2. 爲這些系統提供一種方式將這些作業的輸出(StdOut/StdErr)發送回本地系統。

以前與遠程windows系統通信時我已經使用WCF。我在遠程Windows系統上創建了一個WCF服務器,然後我的本地機器可以通過該WCF通道發送命令和消息。當我嘗試用Linux和Android來做同樣的事情時,事情變得更加複雜。

我想我可以設置使用REST本地WCF服務,這樣,所有3個平臺能夠通過JSON REST使用任何方便的語言(最有可能C++)發送消息給它。但是,完成要求#1的最佳方式是什麼?

我應該在打算在Linux和Android上運行的C++中創建REST服務器嗎? WCF甚至可以使用未在.Net中編寫的C++ REST服務器嗎? 只需使用TCP套接字就可以做更簡單的事情嗎?

安全性不是問題,因爲它用於安全的專用網絡。我只是尋找最簡單的方式來運行遠程命令/進程並接收來自這些遠程系統的響應消息。

回答

0

這可能真的取決於您使用的基礎設施和服務。如果您身處亞馬遜Web服務世界,您可以使用簡單隊列服務(SQS)來接收消息。然後,遠程系統可以輪詢隊列並根據從SQS隊列中取出的消息運行作業。

1

我用ZMQ和JSON出於這樣的目的:(通過ZMQ)創建自定義的私有網絡拓撲使用通信通過TCP JSON消息。當然你可以使用任何序列化格式(我在下面列出了一些替代方案)。

我不能給你一個明確的「這是你應該做的是什麼」的回答,因爲這個問題是相當開放的。

  • ZMQ:http://www.zeromq.org/
    • 非常好的跨平臺的抽象套接字庫
    • 可以使用不同的傳輸協議,包括TCP
    • 發送消息的只是簡單的字節數組,留下序列化格式的選擇最多你
  • 一些序列化格式(按我的個人喜好):