2014-02-07 50 views
0

我已經使用Spring將RESTFul Web服務用於各種移動客戶端。現在,如果將來我需要建立一個門戶網站來實現相同的功能,這將是一個更合適的選擇,爲什麼?請提供正確的引文如果可能Webservice或Webapp?

選項1:我使一個新的web應用程序,這將消耗先前製造的基於REST web服務 選項2:我讓使用基於REST先前提出的基本代碼(可能在控制器層所需的一些修改)一種新的web應用程序和將這些JAVA代碼與新的webapp集成在一起。

哪個更好或推薦的方法,爲什麼?如果可能,請提供引文。

謝謝。

回答

0

這裏是我的觀點:

選項1:這是一個很好的選擇,它必須基於服務的依賴,這將避免如果服務的任何過程的變化而變化的Web應用程序代碼。但是,這會在新的webapp中添加額外的翻譯。

選項2:這將在服務和客戶端(新的webapp)之間有緊密的耦合。客戶端和服務器無法獨立發展而無需對新應用程序進行更改。這兩個項目都會有不斷的代碼更改。

我建議你去選擇1.我也有關於RESTful服務設計的建議。它可以爲所有控制器設計接口或從現有控制器中提取接口,並且可以將EJB公開爲內部客戶端,如新的webapp。通過這種方式,可以使用RESTful和EJB來實現相同的服務。

+0

您可以提供任何見解,以瞭解如何爲所有控制器設計接口或從現有控制器提取接口。以及如何揭露它?我是J2EE的新手,所以我沒有太多的知識。如果您可以提供任何示例鏈接,這將有所幫助。 –

+0

@NayanjyotiDeka是的,您可以參考我的示例項目** https://github.com/sachinb4u/emp-service**。它具有REST風格的Web服務,它的接口也是無狀態EJB。 –

1

選項1將避免代碼重複,但會強制您使用相應的性能處罰進行遠程調用。

選項2將在兩個項目上重複代碼,這不是一個好主意。

我建議你一個選項3,它包括分解你的第一個項目,並將通用代碼放在一個jar中,以便從REST API項目和Web應用程序項目中引用。

+1

不,這個op表示選項2只會添加到現有的代碼庫中,所以不會有重複。實質上,它只是簡單地添加更多生成HTML而不是JSON或XML的端點。 – nickdos

+0

其實,OP的含義有點模糊,所以你的解釋可能是有效的。 「新的Web應用程序」提供了一個新的代碼庫,但我懷疑他的意思是添加到現有的代碼庫中。 – nickdos

+0

代碼的添加將增加更多的端點,如nickdos所述。 您能否提供更多關於您建議的選項3的信息?也許這個鏈接可以讓我更深入地瞭解這個想法。 –

0

只有您真的可以回答這個問題,因爲您對項目的信息遠比我們(或您提供的)多得多。這兩個選項都是有效的,其選擇取決於項目的具體情況。更重要的是,決定應該是最有利於用戶的決定。

話雖如此,我一直在這種情況下多次,我已經與兩個選項。兩者都有效,但根據我的經驗,我會比選項2更頻繁地選擇選項1。我會使用Grails或一個現代的JavaScript框架(如Angular JS)來生成一個僅使用客戶端的應用程序,它會消耗您的Web服務。這具有小型化和模塊化的優點,可以讓您「吃自己的狗食」,併爲其他人提供示例代碼,以編寫應用程序來使用您的Web服務。