2012-03-03 45 views
0

我正在開發一個庫,您可以在客戶端或服務器代碼中使用它。更具體地說,您爲庫創建一些類的實例,並將其指定爲服務器或客戶端。最基本的分佈式Java - 我應該使用哪種通信方法?

客戶端必須向服務器發送約5個屬性而沒有任何層次結構,服務器必須使用一個屬性或一些錯誤描述來回答。

客戶端和服務器不必共享任何狀態,因此如果服務器更改客戶端提供的信息,客戶端不必知道這些更改。

目前,我用一個特殊的分隔字符將所有內容解碼爲一個字符串,並通過TCP-Socket發送。我想在這裏有更多的類型安全,並且正在考慮使用RMI,但就我的簡短研究而言,RMI強制實現了對象的共享狀態,這不是我的目標。因此,我可能需要某種Web服務解決方案?我應該使用JAXB來描述消息並通過套接字發送xml消息嗎?是否有一些好的庫通過Web發送JAXB註釋對象,並且仍然可以控制通信,網絡和服務器故障?

該軟件應該始終能夠在基本的JRE安裝上運行。

感謝您的意見。

+1

JSON?簡單易用。 – Lalaland 2012-03-03 15:41:58

+0

我不知道你的意思是「RMI強制對象上的共享狀態」。 – EJP 2012-03-05 05:54:45

回答

0

標籤中列舉的任何技術都很好。你也可以看看Google Protocol BuffersNetty的溝通。但我不會稱他們爲基礎。 JSON也是一個很好的選擇。 JAXB包含在JVM中,因此它不需要任何額外的庫。

0

您可能會考慮的另一項技術是Versile Java(完全披露:我是Versile開發人員);它在發展中,但已經相當穩定。看到一個簡單的例子的鏈接。 Versile Java執行對象級RMI並僅依賴於標準Java庫。

Versile Java是在這個意義上的「基本」,你所描述的場景的類型是很容易實現,而無需做任何網絡級編程(這是所有通過平臺內部處理)。它是「不基本」的,因爲它提供了比傳遞不可變數據結構更多的功能。