3

我們打算設計一個具有三個「層」的系統。如何在此係統內通信?

  1. HQ,單個服務器
  2. 許多 「節點」 的區域基礎上
  3. 用戶,配備了iPad。

HQ與雙向與用戶雙向通信的節點進行雙向通信。用戶從不與總部溝通,反之亦然。

這是法令從HQ一個Windows應用程序(採用Delphi),併爲用戶解鎖iPhone和iPad原生桌面應用程序的權力。他們對節點沒有意見。

如果有令人信服的論據技術,我也許可以從「法令」的Windows程序「喜歡」打下來(並且對於isntance,使基於它的瀏覽器)。節點沒有GUI,他們只是坐在那裏玩中間人。

這些事情溝通的最佳方式是什麼(SOAP/HTTP/AJAX/jQuery /家庭釀造協議在TCP/something-else之上?)是否最好使用相同的協議結束結束,或不同的協議hq < - >節點和節點< - > iPad?

每個這兩個接口的兩端可能希望啓動事務(如果我搖我自己的協議,我可以很容易地做到),那麼我應該使用推/拉/長輪詢還是什麼?

我希望這個描述有意義。如果沒有,請提問。謝謝。


更新:
文件大小是typcially低於1MB什麼也沒有可能是超過10MB甚至5MB。在確認第一個文件之前,不會發送第二個文件。

文件從總部到節點流向iPad「下坡」。文件永遠不會「上坡」流動,但會有一些小數據包(除了ack),這些數據包是由iPad上的用戶操作啓動的。這些將轉到本地節點,然後轉到總部。我們可能在說話< 128字節。

我想也會有一般控制&維護交通以低速率,在各個方向。

回答

5

對於推/拉(發佈/訂閱或對等通信),可以使用跨平臺的消息代理。我不確定是否有適用於Microsoft Message Queue(MSMQ)的(iOS)客戶端庫,但我也會評估開放源代碼解決方案,如HornetQ,Apache ActiveMQ,Apollo,OpenMQ,Apache QPidRabbitMQ

所有這些解決方案爲分佈式消息傳遞提供了可靠的基礎,如故障切換,集羣,持久性,高性能和多個客戶端連接。可以交換任何內容類型(JSON,二進制,純文本)的基礎結構消息,並且在頂部消息中可以包含路由和優先級信息。他們還支持事務處理消息。

對於許多企業質量的開源消息產品,有德爾福和免費Pascal client libraries available。 (我是他們中的一些人的作者,支持ActiveMQ,Apollo,HornetQ,OpenMQ和RabbitMQ)

+2

我想你應該提到你是這些客戶端庫中的一部分的作者。 – 2011-04-08 10:14:51

+1

我認爲你應該爲他們提供URL :-) +1和謝謝。 YOu列出了很多選項,但如果您*有*選擇,那麼您會選擇哪一個? – Mawg 2011-04-09 01:12:37

+1

@Mawg:來自Habari JMS客戶端支持的消息代理,我建議看看Apache ActiveMQ。通過Fusesource http://fusesource.com/提供商業支持,Fuse消息代理基於ActiveMQ。 「ActiveMQ in Action」一書的兩個示例章節(PDF)位於http://www.manning.com/snyder/,幻燈片演示文稿位於http://www.slideshare.net/bruce.snyder/messaging-與-ActiveMQ的演示。其次是OpenMQ,一款精益而堅實的產品。 Habari客戶端庫可從http://www.habarisoft.com/habari.html獲得。 – mjn 2011-04-09 07:58:49

1

恕我直言,有太多的必要條件來決定使用什麼技術。什麼數據交換,多久一次,多大?是否有請求/響應時間限制?等等。在您深入瞭解您的需求之前,永遠不要選擇技術。

+0

+1一個公平的評論。在fct中,我已經更新了這個問題。 – Mawg 2011-04-09 01:16:37