2010-06-29 26 views
3

我目前正處於(非常)小型數據庫應用程序的研究階段。Java中的三層(非Web)數據庫應用程序 - 哪些API /技術適合?

這是一個本地慈善機構,只有3或4個客戶端機器將運行系統 - 但爲了從客戶端移除一些額外的邏輯,我傾向於使用三層架構(那裏是一個不斷通讀和更新的數據在適當的時候,客戶端不需要知道)

即客戶< - >服務器邏輯< - >數據庫

雖然我主管與Java本身和一些框架/庫,我不是特別熟悉哪些框架可以幫助我。很顯然,我將使用JDBC作爲數據庫的一部分,但客戶端和服務器之間的通信是目前的絆腳石 - 我並不是真的想要去任何接近原始套接字的地方,例如(過度殺傷,或者至少是另一個解決方案必須存在)

我已經問了幾位開發者,我知道他們對使用什麼API的看法,雖然他們一直很有幫助,但我仍然不太確定該去哪裏。到目前爲止,我聽說過RESTful的東西,SOAP,COBRA和其他一些技術。 SOAP是引起我注意的主要方式之一(因爲有一些很好的例子可以在普通的應用程序中使用它,而不僅僅是在網頁中使用它),但我仍然不確定該去哪裏 - 它似乎不適合一般(EJB也彈出來了,但是我聽到了很多針對它的仇恨 - 這是應得的嗎?)

感覺好像爲了找出'我最需要的工具'我真的需要學習每一個完整的'得到'他們(這顯然是不切實際的)

任何人都可以給我指導如何選擇這樣的API(當我以前沒有用過它們)或給我關於一些常見的問題,還是僅僅是一個實驗大量的案例,看看哪個最適合?

或者我可能完全錯過了標記,並有一個框架針對這種確切的情況沒有明顯的缺點?

非常感謝您的幫助。

編輯:

完全忘記提到其實際作用:這是不是非常複雜 - 慈善機構運行的傳輸方案,所以其持有的驅動程序,客戶端驅動里程記錄等信息進行查看和編輯驅動器唯一真正的複雜性,因爲可以將驅動程序分配給重複(正在進行)的驅動器,這些驅動器可以預見到會永遠持續下去。但是每個持續驅動的實例必須是獨一無二的,因爲它們可以單獨取消或編輯

我爲三層釣魚的主要原因是因爲作爲慈善機構(許多年長的志願者計算機用戶並不是非常可怕'精明')我可能會很頻繁地更新UI,以消除對新手用戶不太清楚的錯誤和位。所以我的計劃是先讓服務器和數據庫之間的後端絕對「無懈可擊」,然後將我所有的注意力都集中在用戶界面上,這樣我就可以繼續開發和迭代它,而不用擔心後端(因爲我會開發它的遠程部分,重點更新在客戶端稍微簡單)

所有這些屬性可能喊'做一個基於網絡的系統' - 這裏的障礙是,他們經過各種棘手的集成與一些應用程序他們已經運行了,我不確定我可以通過網絡應用程序完成(正確)。

+0

也許你可以解釋你的應用程序有多複雜? – 2010-06-29 19:54:56

+0

@Romain - 是的,你是完全正確的。相應地更新了問題,歡呼 – 2010-06-29 20:22:46

回答

2

對於服務器本身,您需要某種JavaEE服務器。

這裏的常見實現是GlassFish(參考實現)和Apache Tomcat ......假設您不需要比Servlet容器更先進的任何東西。如果你只是使用網絡服務,你將不會有機會。

對於客戶端,我假設你將有一個GUI應用程序,可能是使用Swing或SWF。你也可以選擇製作一個Web應用程序,因爲你已經有了一個Web服務器。

對於客戶端到服務器通信,您可以使用JAX-WS(SOAP Web服務)或JAX-RS(RESTful服務)實現。 JAX-WS的實現包括Sun的Metro(其發貨爲part of Java 6 SE)或Apache CXF

JAX-RS實現包括JerseyApache CXF

至於數據庫層,JDBC並不是您唯一的選擇。 Java也有Java Persistence API(JPA,目前版本爲2.0)。

JPA通常用於J2EE應用程序(特別是Web應用程序)以簡化數據庫層。常見的實現是EclipseLink JPA(廢止Oracle TopLink)和HibernateAnnotations。所有這些都基於組成JavaEE的各種標準:Servlet 2.5,JAX-WS 2.0,JAX-RS 1.1和JPA 2.0。

+0

感謝所有的鏈接+信息 - 給予了所有這些技術的更清晰一點。適合在一起。 但唯一的問題是我不得不從頭開始的問題 - 我該如何選擇這些技術組合?它是純粹的個人品味你喜歡什麼工作,或者他們擅長具體的事情?例如,哪個選擇JAXWS或JAXRS? – 2010-06-29 20:38:56

+0

'JAX-WS'比'JAX-RS'更廣泛的支持,如果有幫助的話......它現在甚至在標準的JRE中,所以你不必爲它包含一個單獨的庫(儘管你可以選擇在服務器端,因爲我聽說CXF更容易處理)。 – Powerlord 2010-06-29 20:50:27

1

EJB也彈出,但我聽到了很多的仇恨針對它 - 這是 實至名歸?

EJB規範的版本1和版本2完全是當之無愧的。但是EJB v3代表了一種巨大的簡化,使它們使用起來非常愉快。實際上,我可以很好地推薦使用實體bean而不是手動JDBC。

至於通信協議,在最新的EJB 3.1規範中將EJB公開爲REST或SOAP服務是荒謬的簡單 - 只需添加一些註釋並設置即可!

+0

我同意EJB 3.x簡單得多,我只是質疑他的情況下需要一箇中間層。當然,對於中間層,您會引入另一個管理點和另一個失敗點。 – 2010-06-29 19:54:21

相關問題