2013-05-01 143 views
-1

首先,我意識到這個問題有很大的潛力被關閉爲「不是真正的問題」或類似的東西,因爲它不是直接的「編程問題」但我強烈要求你,在你關閉它之前請先閱讀它,如果你覺得有幫助,請貢獻一下。設計JAVA客戶端 - 服務器應用程序

問題:

我小的Java開發人員,將有開發一個完全成熟的客戶端 - 服務器的Java應用程序的任務。如果我進入更多的細節,應用程序將包含一個將連接到數據庫的服務器,或者將基本上是一個數據庫,許多這些客戶端將連接到該數據庫。

我的應用程序應該能夠:

  1. (客戶端)發送每日報告給服務器
  2. (客戶端)更新自己當一個新的客戶端版本可用

問題/秒:

有些高級JAVA開發人員和有經驗的程序員可以給我一些建議,關於哪些書籍或指南可以抓取,尤其是關於優秀軟件設計的主題n原則? 我也在上面的第2點上搜索了相當多的東西,但是我的搜索沒有產生任何好結果..

謝謝!

+1

與答案無關,但我嫉妒你得到的項目。 – 2013-05-01 16:55:22

回答

1

你的問題很簡單,但沒有一個單一的資源可以引用,以加快「軟件設計」的速度。以下是一些相關領域的推薦讀物,絕非全面,但會讓您走上正軌,快速。

一旦您掌握了基本知識,您就可以輕鬆找到更爲嚴肅的文本,特別是關於OOP類設計和體系結構的主題。 (獲取基本權利比你想象的更難,這將是一個值得追求的目標恕我直言)

  • 好的代碼 - 嘗試代碼完成。另外谷歌的短語代碼聞起來
  • 好類的設計原則 - 閱讀並瞭解SOLID的最基本
  • 良好的代碼設計又名模式 - 嘗試擡起頭設計模式
  • 好的程序設計 - 嘗試設計軟件的設計架構實踐

至於第2點 - 您選擇實施此方法,將決定如何以及是否需要自動更新。 Here's an answer to this question

1

選擇一個主題,我們可以交談了很多圍繞一個或多個飲料:

  • 套接字:局域網,使用java.nio.channels中和java.nio.ByteBuffer中
  • HTTP:廣域網絡
  • CORBA:如果你是受虐狂
  • RMI:在局域網
  • 簡單...
+0

好極了。那麼我應該保持簡單。所以我會選擇套接字。客戶端應該能夠訪問數據庫並寫入數據庫。爲什麼套接字?因爲交換的數據將只是一些布爾值,整數和文本。沒有太複雜的。但首先我想要熟悉良好的設計原則。 – RecursionSnake 2013-05-01 17:04:15

1

你可以用套接字來實現它。如果是這樣,您需要在客戶端創建兩個線程。一個會監聽服務器的線程更新,另一個會每天向服務器發送報告。服務器將有2倍的客戶線程數。

你可以通過RMI來實現,這需要更多的研究,然後你可以調用其他方法來發送報告或獲取更新。

2

你可以想象,這個車輪已經被髮明瞭很多次。

不要使用原始套接字。今天沒有理由爲商品業務工作做這樣的事情。

在它們之上使用一些東西。

隨着您提供的10秒摘要,沒有理由不能使用Web服務(正式的,基於SOAP的Web服務或基於特定的HTTP)。

這樣你就可以使用商品,有據可查,廣泛使用的基礎設施,並有很多例子。在後端拍攝Tomcat或Glassfish,並讓它處理數據庫雜事。

RMI很煩瑣。現在除了傳統系統外,CORBA已經被棄用了,如果你打算去CORBA,那麼你可以去遠程EJB。

現代SOAP Web服務(大部分)是用現代IDE進行拖放。沒有理由寫套接字,寫一個服務器,任何一個。我們有很多Java服務器工具。 Servlet容器無處不在,可靠。

我同意使用Java Web Start作爲GUI。它需要一些設置,但使得部署遠遠更容易。