2011-06-14 75 views
0

我正在做一個軟件工程課程,其中不同的團隊正在構建一個大系統(F35閃電飛機的不同子系統!)的不同原型子系統。遠程程序調用

問題是,團隊可以使用不同的編程語言(如C++和Java),具體取決於他們最舒適的方式。但是,這些子系統需要相互通信(例如雷達需要提供導航對象代碼和控制)。因此我們需要提出一個解決方案,讓不同的模塊可以實時交互。

有人建議XML-RPC,因此我正在閱讀它。閱讀完之後,我認爲它用於服務器客戶端體系結構。這是進行進程間通信的好方法嗎?我有什麼選擇?

任何幫助,將不勝感激。

問候, 新手

+1

你被告知使用遠程過程調用,還是隻是一個選項?我會建議反對它簡單的消息傳遞。 – John 2011-06-14 22:01:31

+0

這只是一個選項。我正在尋找一個簡單的實現,可以讓我在不同語言編碼的不同子系統之間進行通信,並且彼此獨立... – Richeek 2011-06-14 22:06:31

+0

瞭解TCP的基礎 - 這將是有價值的!您需要選擇傳輸和消息格式;這些往往是獨立的。 – 2011-06-14 22:10:13

回答

2

有一對夫婦的XML-RPC旁邊的選項。對於短子彈點比較,看一看:

如果您交換更多的是數據化,Protocol Buffers可能是一個選擇。

協議緩衝區是以高效但可擴展的格式對結構化數據進行編碼的一種方式。

就我個人而言,我會首先考慮輕量級交換格式或方法,因爲組件被視爲原型。像REST或一些自定義消息傳遞可能很簡單,但足夠。

+0

感謝您的回答。我檢查了協議緩衝區,它看起來像我需要的。在您發送鏈接的頁面上只有一個問題。 Person結構可以在C++代碼中實例化,然後Java代碼可以使用它的值嗎? – Richeek 2011-06-14 22:18:08

+0

我不完全確定你的問題,但我會認爲,這是這種方法的主要觀點之一。 – miku 2011-06-14 22:20:50

+0

@Newbie:protobuf可以被認爲是一種多語言綁定數據序列化機制,即(i)您創建一個規範。 (原始文件)(ii)用它來代碼化你選擇的語言代碼(可以是C++,Java,What-have-you)。 (iii)在項目中使用生成的代碼進行序列化/反序列化。數據傳輸是獨立於這種機制的,即數據如何從Java程序傳播/移動到說C++程序仍然需要獨立構建(可能是套接字,管道,DBUS等)。 – 2011-06-14 22:35:02

0

如果您已經熟悉XML,那麼這可能是一個合理的答案。 XML的一個優點是您不必擔心不同的機器如何表示數字。一個缺點是需要花費時間將數字轉換爲文本並轉換回數字。