我有一個串行硬件設備,我想與多個應用程序共享,這些應用程序可能駐留在多個網絡中的不同計算機上或跨越多個網絡。一個關鍵的要求是系統必須支持雙向通信,這樣客戶端/串行設備可以存在於防火牆和/或不同網絡之後,並且仍然可以通過中央服務器相互通信(發送和接收)。系統的另一個要求是客戶端必須能夠確定網關/串行設備是否離線/在線。串行硬件設備的消息傳遞解決方案
該串行設備能夠接收和發送數據包到無線網絡。與串行設備通信的軟件是用Java編寫的,如果可能的話,我想讓它保持100%的Java解決方案。
我目前正在使用Jive軟件的Openfire服務器和Smack API查看XMPP。使用這種解決方案,串行設備上的數據包將通過XMPP傳送到客戶端。同樣,任何客戶端應用程序都可以通過Smack API將數據包發送到串行設備。數據包只是字節數組,大小限制在100字節左右,所以它們可以轉換爲十六進制字符串並作爲消息正文中的文本發送。系統應該能夠容忍客戶端/串口設備處於脫機狀態,這意味着它們會在再次可用時自動重新連接,但如果客戶端處於脫機狀態,數據包將被丟棄。數據包必須實時發送和接收,因此不希望離線傳送。安全性應由消息系統提供,並提供客戶端API。
我想聽聽其他可能的解決方案。我想過使用JMS,但它似乎有點太重量級,我不確定它是否支持瞭解客戶端和/或網關/串行設備是否脫機的要求。
感謝您的迴應。我已更新我的帖子以提供更多詳細信息。我從帖子中刪除了「最低限度」的措詞,因爲我真正想要的是最低的複雜性/編碼工作。 – Andrew 2008-10-05 19:09:26