2012-10-03 95 views
0

我開始一個新項目。它包括:將多個桌面應用程序連接到一個在線數據庫

  • Java桌面應用程序可從互聯網下載與客戶端數據庫。
  • 帶有服務器數據庫的互聯網上的PHP網站。

下載應用程序的用戶將使用它來離線添加項目(不重要它們現在是什麼)到本地數據庫。何時/如果他在線,該項目將被添加到服務器數據庫,以便其他連接的用戶(通過桌面應用程序或通過網站)將會看到它。 我GOOGLE了這個問題,發現它比我想的更復雜。其中一個解決辦法是使用一些現成的工具像SymmetricDSDaffodil安全性能可擴展性長期收穫,但他們難以配置和在客戶端和服務器端安裝,並且需要訪問命令提示符,這需要我傳遞給專用主機(當然,這不是真正的問題)。另外,我想要的只是我所描述的,並不是所有這些工具實際提供的。

  • 我能做到這一點我自己在我的Java應用程序,也許用的 web服務器PHP的幫助?

我使用的是MySQL的信息。

編輯:真正重要的是將項目發送到服務器數據庫。例如,使用RSS Feed閱讀閱讀它可能不那麼棘手。

+0

你應該能夠實現你想要什麼SymmetricDS(雖然你可能確實需要一個可以運行自己的Java應用程序服務器)。當你說很難配置時,你是否擔心你的用戶可能需要處理它(在這種情況下,你可能能夠將它嵌入到你自己的應用程序中),或者更關心你可能需要管理的整體複雜性? – Bruno

+0

你其實是對的。我只是根據自己的具體情況詢問了更簡單的方法,而且看起來很有效。我想我使用PHP頁面找到了更短的方法;我將數據發送到URL並通過HTTP進行發佈。 PHP頁面將接收數據並將其保存到數據庫。你有這樣的評論嗎?我知道這是一個部分的解決方案,但我認爲事情變得更清楚。 –

回答

1

基本上,您可以使用HTTP/HTTPS API。當用戶在線時,將項目發送到您的php文件並在本地數據庫中標記「發送」項目。但是你必須控制編輯或刪除的狀態。所以,是的,這很複雜,但是一個解決方案。

+0

謝謝tersakyan,你的回覆非常有幫助。 –

+0

在這裏找到一個很好的代碼片段:http://www.exampledepot.com/egs/java.net/post.html –

1

那麼我想到的最簡單的解決方案是爲每個項目保存最後一個編輯日期(在服務器以及客戶端上)。另外,你必須跟蹤客戶從服務器上次獲得最新更新的時間。

因此,無論何時客戶端上線,服務器都會向他發送所有更新。

但是,您必須確保客戶端和服務器上的時間相同,並且不能解決問題如果兩個客戶端編輯相同的項目會發生什麼情況。

+0

感謝Icewind。該項目不能被多個(它的主人)修改,但我不知道解決方案在哪裏。 –

0

CouchDB非常好地解決了分佈式同步問題,但它是一個NoSQL DB。根據你的應用程序應該做什麼,使用它可能歸結爲在非常應用程序和中央服務器上本地使用CouchDB實例。

儘管如此,您仍然必須處理衝突。 CouchDB將支持您的唯一方法是更輕鬆地檢測衝突以及兩個衝突編輯的數據,因此您的應用程序可以自動或通過用戶幫助來解決衝突。

另一方面,在中央服務器上生成一個唯一的ID可以像將創建用戶的ID添加到每個項目ID一樣簡單。

相關問題