2011-05-23 53 views
3

我有一個包含大約10個用C#3.0/.NET 3.5編寫的dll的類庫。該庫提供對運行遠程服務器的產品的API訪問權限。通信是使用TCP套接字完成的。Java客戶端與C#類庫之間的Web橋樑

我正在尋找一種方法來編寫客戶端應用程序的Android/Linux在Java中。問題是API 非常大,將其從C#轉換爲java可能會花費大量資源和時間。試圖避免轉換。

任何人都可以考慮一種實現使用C#API的工作Android客戶端的方式,而無需將其嵌入到客戶端中? 想到如何讓Web服務完成所有針對核心API的工作並從Java訪問它,問題在於與服務器的TCP連接必須始終保持打開狀態,並且Web服務解決方案是無狀態的。也許一種使用持久連接的Web服務的方式(有這樣的事情嗎?)。有創意嗎?

+0

您能否擴展爲什麼TCP連接必須始終保持打開狀態? – MrEyes 2011-05-23 21:49:38

回答

1

爲什麼tcp連接必須一直打開? Web服務將是一個不錯的選擇,因爲在Java端你可以生成存根/代理類,並且幾乎沒有工作。

+0

它必須保持打開狀態並保持活動狀態。該API需要一個登錄和一個持久會話。這是關鍵的安全系統。我不確定如何使用Web服務來實現這一點。想法? – Idan 2011-05-23 21:51:40

+0

幾年前我有同樣的問題,並沒有解決它。不過,我相信這是可以解決的。 Web服務可以在http上工作,肯定會被黑客攻擊以支持會話cookie。問一個新問題,我對此一無所知。考慮每19分鐘進行一次保持活動的虛擬web服務調用,以保持會話活着。 – usr 2011-05-23 21:56:40

+0

我不確定會話cookie是否足以滿足系統必須回答的安全需求。這就是爲什麼我正在尋找一種方法來實現與Web服務器的持續TCP連接或任何其他創意方法。 – Idan 2011-05-23 22:06:13

0

這裏有一個創意:通過持久性TCP連接實現二進制協議,允許您調用服務器內部的任何方法。例如,客戶端可能會發送:

{類: 'BankService',方法: 'StealMoney',參數:{量:123}}

你的服務器進程將使用反射執行此。

+0

非常好的想法...也許預先路由命令的性能功能,但我喜歡這個想法。唯一不利的一面是我可以在這裏看到的是,我不能放棄這個API,因爲沒有對象或開發人員可以使用的方法。謝謝@usr – Idan 2011-05-24 07:30:15

0

對不起,花了這麼長時間迴應。在非Android場景中,JNBridgePro(www.jnbridge.com)將是一個很好的解決方案。我們從來沒有任何人在Android上運行過Java,但我們很樂意與您一起工作。

披露:我爲JNBridge工作。