2010-03-28 223 views
5

前言我是網絡開發新手。我正在圍繞有價值的文檔庫(初始CRUD能力)創建一組核心的RESTful Web服務。在理論上,我在理論上創建了一個完美可重用和可擴展的後端,供將來未預料到的應用程序使用。創建Web服務的最佳實踐

我的問題圍繞着這樣做的最佳做法。我最初的要求是我也創造了一個獨特的前端。我會將前端和後端完全分開的項目來提高重用性。這會增加開銷。

查看使用GWT,Restlet和Java EE技術堆棧(如果這會影響安裝程序的話)。

回答

2

最重要的是設計一個乾淨的Java API - 獨立於REST,RMI或任何你想使用的協議。從乾淨的Java API中,您可以支持任何訪問方法。

除非您有這些其他訪問方法的用例,否則請不要立即構建它們。您可以在需要時進行構建。

最簡單的添加界面是基於Web的界面,其中您的Web應用程序與核心API在相同的JVM中運行。如果這適用於你的用例,我會這樣做。建立一個單獨的控制檯應用程序,通過REST(或其他)協議訪問您的核心API是更多的工作..

+0

你是在談論實際與數據庫交互的Java層是否正確? – Holograham 2010-03-28 20:33:14

+0

正確。與數據庫進行交互並執行業務邏輯,驗證邏輯等。 – 2010-03-28 20:34:38

+0

這個答案很好。我唯一要補充的是考慮你的部署/實現問題 - 你很高興你的視圖層和你的業務/數據層在同一個JVM上運行嗎?或者,例如,您的數據層是否需要坐在防火牆後面?如果這些對你來說並不重要,通過一切手段把你的重點放在設計一個好的API上,並在以後留下奇特的東西。 – 2010-03-29 11:10:54

1

Martin Fowler不久前寫了一篇關於REST基礎的非常好的文章:Richardson Maturity Model。發現它對了解REST的原理非常有幫助。

+0

謝謝你會閱讀...雖然這是否意味着我完全拙劣的問題? – Holograham 2010-03-28 19:38:17

+0

好的:P這絕對是一篇富有洞察力的文章。 – Holograham 2010-03-28 19:55:43

0

如果您知道您將要使用GWT作爲前端,您可能需要考慮使用GWT-RPC而不是REST。更多討論here。然而,如果您認爲您最終可能希望通過REST API公開您的數據,或者在前端使用不同的技術,那麼REST可能是更好的選擇。

gwt-rest項目可能也會有所幫助。

+0

謝謝,我已經考慮過,REST是基於可重用性要求的最終決定。 – Holograham 2010-03-28 19:48:04

0

一位同事和我寫了一個GWT系統,使用單獨的項目爲前端和後端。保持代碼執行的地方非常明確是很有幫助的。但我不確定我是否會在未來的系統中進行分離。

此外,由於您是網絡開發新手,我不認爲您應該期望做出完美可重複使用的後端。你將會學到很多東西。我認爲敏捷編碼人員會推薦一種迭代方法(a)讓一個小方面工作,然後(b)重構它以使它變得美麗。

1

如果您想使用基於REST的後端服務,您應該使用RestyGWT項目,該項目允許您使用GWT-RPC編程風格來訪問基於JSON的寧靜服務。

使用基於REST的JSON服務優於傳統的GWT-RPC服務的好處是,這些服務可以被其他客戶端甚至混搭使用。