CXF、Restlet、RESTEasy、Jersey对比
一、
需求说明
因为需要新增的系统调用接口使用了
jsr311
规范标准的
REST
架构的
Web Service
。考虑以后在产品中可能会经常使用到
REST
架构的
WebService
,针对主流的实现架构进行研究、测试,进行对比,找出相对较好的实现。预研的主流实现有:
l
Jersey
l
RESTEasy
l
Restlet
l
Apache CXF
二、
各方面
评价
1.
集成能力
各种实现均支持
Servlet
和
Spring
的整合,无根本差别。
2.
稳定性
各实现在应用服务器上长时间运行均无错误,详见测试报告。
3.
性能
在性能测试中,
RESTEasy
吞吐率最好,
Jersey
其次,
Restlet
最差,详见测试报告。
4.
产品成熟度
各种实现均支持
jsr311
的
1.1
和
1.0
版本,但
Restlet
通过扩展包实现对
jsr311
的支持;
RESTEasy
由于
jboss
的关系,支持
EJB
;而
Apache CXF
支持多种
WebService
的实现方式。
5.
安全性
安全性方面,个人认为本身要求容器中的
WebService
支持安全性,就有点过分,无非是数据传输加密即可满足大部分需要,而各种实现对这方面均做了一定的支持,其他安全方面
RESTEasy
没有特别的安全策略,完全依靠容器的安全策略。
6.
易用性
这些东东的中文文档都非常的少,学习起来有点困难,在我学习的过程中感觉,开发配置其实都不困难,但
Jersey
竟然连英文文档都比较少。
7.
可配置能力
配置方面,基本的文件格式(
xml
、文本、
json
等)都是支持的,
Restlet
还支持很多扩展和不同的平台(
Android
、
GAE
等)。
8.
维护性
维护时的官方文档都是有的,具体是否容易读懂代码和修改代码,我也没有长时间维护过,很难说。
三、
总结
通过各方面比较,这
4
个
jsr311
标准的实现中,各方面差别不大,突出的问题是文档太少,尤其中文文档太少。性能上看
RESTEasy
是最好的,
Jersey
其次,
cxf
和
Restlet
最差,这可能与这两种实现的复杂度有关。对于有特殊需要的情况
Apache CXF
提供多种的
webservice
,
Restlet
提供多种扩展包,
RESTEasy
对
EJB
支持。
测试数据见:
http://wenku.baidu.com/view/edd686781711cc7931b716c4.html