几种支持REST的Java框架
目前宣稱支持REST的Java框架包括以下這些:?
Restlet(http://www.restlet.org/)?
Cetia4(https://cetia4.dev.java.net/)?
Apache Axis2(http://http://ws.apache.org/axis2/)?
sqlREST(http://sqlrest.sourceforge.net/)?
REST-art(http://rest-art.sourceforge.net/)
以下對(duì)這些框架進(jìn)行了較為全面的分析。
Restlet,最新版本1.0.1?
特點(diǎn):完全拋棄了Servlet API,作為替代,自己實(shí)現(xiàn)了一套API。能夠支持復(fù)雜的REST架構(gòu)設(shè)計(jì)。?
缺點(diǎn):?
1. 雖然也可以運(yùn)行于Web容器中,但是難以利用Servlet和JSP等資源。因?yàn)樾枰硗鈱W(xué)習(xí)一套API和概念,學(xué)習(xí)成本比較高。?
2. 完全不支持服務(wù)器端的HTTP Session,強(qiáng)制完全基于無(wú)狀態(tài)服務(wù)器模型來(lái)做開(kāi)發(fā)。對(duì)于基于瀏覽器的應(yīng)用來(lái)說(shuō),開(kāi)發(fā)難度較高。?
3. 自身沒(méi)有包括與Spring的集成,可以使用第三方代碼與Spring集成,集成難度較大。?
4. 文檔不是很豐富,大多比較簡(jiǎn)短,很多時(shí)候需要自己去讀代碼,或者到其wiki上去查找。?
5. 沒(méi)有內(nèi)建的國(guó)際化支持。?
優(yōu)點(diǎn):?
1. 有內(nèi)建的HTTP認(rèn)證機(jī)制,不需要另外開(kāi)發(fā)安全機(jī)制。?
2. 靈活性較高,支持更多的REST概念,支持透明的內(nèi)容協(xié)商,適合于開(kāi)發(fā)更加強(qiáng)大的REST組件(不限于服務(wù)器端應(yīng)用)。?
3. 零配置文件,全部配置通過(guò)代碼來(lái)完成。
相關(guān)資源:?
功能列表:http://www.restlet.org/about/features?
簡(jiǎn)介:http://www.restlet.org/about/introduction?
教程:http://www.restlet.org/documentation/1.0/tutorial?
FAQ:http://www.restlet.org/about/faq
Cetia4,最新版本1.0?
特點(diǎn):基于Servlet API開(kāi)發(fā),可以運(yùn)行于所有的Web容器中。?
優(yōu)點(diǎn):?
1. 可以充分利用Servlet API和JSP等資源,需要額外學(xué)習(xí)的概念較少,學(xué)習(xí)成本較低。?
2. 對(duì)于傳統(tǒng)的Web應(yīng)用,可以使用服務(wù)器端HTTP Session;對(duì)于Web服務(wù)類應(yīng)用,不使用HTTP Session,基于無(wú)狀態(tài)服務(wù)器模型做開(kāi)發(fā)。?
3. 自身包括了對(duì)于Web MVC的支持,熟悉Web MVC框架的開(kāi)發(fā)者很容易理解。還內(nèi)建了參數(shù)映射、參數(shù)驗(yàn)證等等傳統(tǒng)Web MVC框架所支持的功能。?
4. 內(nèi)建了自己特有的導(dǎo)航對(duì)象棧的概念,對(duì)于支持傳統(tǒng)的Web應(yīng)用的開(kāi)發(fā)(基于瀏覽器的導(dǎo)航)非常有幫助。?
5. 提供了JSP標(biāo)簽庫(kù),對(duì)于傳統(tǒng)的基于HTML表單的Web開(kāi)發(fā)非常有幫助。?
6. 支持與SiteMesh相配合,由SiteMesh來(lái)支持頁(yè)面布局的重用。?
7. 內(nèi)建有與Spring的集成,集成起來(lái)非常容易。?
8. 配置文件完全基于標(biāo)準(zhǔn)的web.xml,不需要額外的配置文件。大量使用默認(rèn)配置,一般情況下足以滿足常見(jiàn)的需求。?
9. 擁有很好的文檔。?
10. 有內(nèi)建的國(guó)際化支持。?
缺點(diǎn):?
1. 沒(méi)有內(nèi)建的HTTP認(rèn)證機(jī)制,需要自行開(kāi)發(fā)安全機(jī)制。?
2. 對(duì)于內(nèi)容協(xié)商的支持比較弱,僅支持HTML和XML格式的表現(xiàn)。需要加以擴(kuò)展才能支持其他格式的表現(xiàn)。
相關(guān)資源:?
教程:https://cetia4.dev.java.net/files/documents/5545/38989/cetia4_tutorial.pdf
Axis2,最新版本1.2?
特點(diǎn):同時(shí)支持SOAP和REST風(fēng)格的Web Service。?
缺點(diǎn):?
1. 僅僅支持GET與POST方法。?
2. 僅僅是以REST風(fēng)格暴露出Web服務(wù),數(shù)據(jù)格式仍然是包含SOAP封裝的XML,不能使用更加有效的格式。?
3. 只支持同步的調(diào)用方式。?
4. 僅僅提供了以SOAP方式暴露Web服務(wù)的最小化的支持,不支持全面的REST架構(gòu)設(shè)計(jì)。
相關(guān)資源:?
簡(jiǎn)介:http://ws.apache.org/axis2/1_2/rest-ws.html
sqlREST,最新版本0.3.1?
特點(diǎn):?
1. 為任何可以通過(guò)JDBC訪問(wèn)的數(shù)據(jù)庫(kù)提供Web服務(wù)訪問(wèn)接口,自動(dòng)將REST風(fēng)格的HTTP請(qǐng)求轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)庫(kù)SQL語(yǔ)句,并將數(shù)據(jù)庫(kù)中的記錄編碼為XML格式傳給客戶端。是REST風(fēng)格的HTTP請(qǐng)求到數(shù)據(jù)庫(kù)中的數(shù)據(jù)的直接映射。?
2. 基于Servlet API開(kāi)發(fā)。?
缺點(diǎn):?
1. 因?yàn)槭荝EST風(fēng)格的HTTP請(qǐng)求到SQL語(yǔ)句的直接映射,因此強(qiáng)制使用以SQL和關(guān)系數(shù)據(jù)庫(kù)為中心的數(shù)據(jù)建模設(shè)計(jì)方法,不支持面向?qū)ο蟮脑O(shè)計(jì)。靈活性很低,難以實(shí)現(xiàn)較為復(fù)雜的業(yè)務(wù)邏輯。?
2. 因?yàn)橘Y源的定義僅限于數(shù)據(jù)庫(kù)的表,難以實(shí)現(xiàn)更高層次的抽象,必然會(huì)導(dǎo)致非常細(xì)粒度的API。應(yīng)用的性能和可伸縮性都難以保證。
相關(guān)資源:?
教程:http://sqlrest.sourceforge.net/5-minutes-guide.htm
REST-art,最新版本0.2?
特點(diǎn):一個(gè)旨在替換復(fù)雜的SOAP框架的REST框架,用來(lái)作為替代SOAP方便地發(fā)布Web服務(wù)的工具。不是基于Servlet API開(kāi)發(fā)。?
缺點(diǎn):?
1. 目前尚處于剛剛起步的階段,功能非常少。?
2. 不是基于Servlet API,帶來(lái)了額外的學(xué)習(xí)成本。
?
轉(zhuǎn)載于:https://www.cnblogs.com/felixjia/p/3608683.html
總結(jié)
以上是生活随笔為你收集整理的几种支持REST的Java框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#的变迁史 - C# 2.0篇
- 下一篇: 技术点