全功能Rest Web Service开源框架Rop作者陈雄华专访

Rop(Rapid Open Platform)是借鉴淘宝开放平台(TOP,Taobal Open Platform)实现的全功能Rest Web Service 开源框架(Full-Stack)。 它高于CXF、Aixs等一般的纯技术Web Service框架,提供了请求/响应序列化、数据检验、会话管理、安全管理等高级主题的东西。最值得一提的是其参考TOP,提供了一个可扩展的错误处理模型,使开发平台级的Web Service的难度大大降低。 

本期我们采访了该框架的作者陈雄华,请他来谈一谈该框架的开发和使用相关的情况。 

欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创业理念和有趣之处,或者有朋友正在创造这样的价值,请联系我们,发信到blog@csdn.com即可。

先来个自我介绍吧! 

大家好!我是陈雄华,ITeye网名是stamen,对Spring、Oracle、云计算、敏捷开发感兴趣,擅长企业应用和大型电子商务网站的架构和设计。




毕业到现在整10年了,参与过10多个大型企业应用系统的开发,一直和Java厮混,是一个不折不扣的老Java程序员,对技术高峰身虽不能至而心向往之。曾在一家公司做系统架构师时,构建了一个类似于普元的模型驱动快速开发平台,据说很多程序员都有一个开发平台梦,这个梦我算是基本实现了:)。 

近几年从事互联网电子商务B2B平台、B2C平台的设计和开发工作,接触到了很多互联网的技术,如memcached、Elasticsearch、Hadoop等。庆幸自己既有企业应用开发的经历,又能从事互联网系统的开发,毕竟企业应用和互联网应用的鸿沟还是挺深的。 

应用开发之余,喜欢写些文字,写有《精通JBuilder 2005》、《精通Spring 2.x》及《Spring 3.x企业应用开发实战》等几本书籍,在IBM、CSDN、it168发表过几十篇技术文章,颇受读者的喜欢。


Rop是什么? 

Rop,即Rapid Open Platform,它参考了TOP (Taobao Open Platform:淘宝开放平台)的设计思路,充分借鉴Spring MVC的技术架构原理而开发的一个快速服务开放平台开源框架。 

Rop不同于传统的CXF,Axis这些SOAP Web Service框架,也不同于Jersey、Restlet这些Rest Web Service框架,因为这些Web Service框架都是技术层的框架,而Rop是应用层的平台框架,它不但可以方便快捷地开发一个个Web Service服务,还提供了构建服务平台众多领域问题的整体解决方案。因此—— 

传统的Web Service框架帮助你建造房子,而Rop框架帮助您建造城市。


Rop项目的由来?设计思想是什么? 

中图一购网是一个整合图书上下游供应链的B2B网站,网站需要和图书供应链上下游的ERP系统实现信息对接。因此,早期中图一购网采用REST Web Service打造网站的服务总线,作为技术总监,一般是由我定义服务接口及报文。在定义服务报文时,我发生一个最大的困难是定义服务的错误类型,任何一个服务的正确报文只有一个,但是错误的情况不胜枚举。所以服务报文往往会漏掉一些潜在的错误情况,一旦服务端发生这些错误,客户端就瞎了。 

所以,那时候,一旦需要新增服务或变更服务,我头就大了,往往是底下的开发人员在催我:服务报文定义好没有?或是抱怨,老大,你服务报文这个错误好像没有考虑到啊? 

我不情愿地发现,开发一个服务很简单,但是设计服务报文难度却很大。痛定思痛,才去TOP、豆瓣等开放平台中取经,我发现TOP的错误模型定义得非常“大气”,经过分析才知道TOP的错误模型是收敛的,也即TOP已经对服务平台的各种错误建模好了,你不再需要为定义错误类型、设计错误代码而抓腮挠耳了,直接套用就可以了。 

另一个发现是,TOP的服务API非常友好,它摒弃了REST所宣扬的为每个服务设计一个达意的URL理念,直接采用统一的URL,辅以一套标准的系统参数和业务参数调用服务。TOP这种请求模型优于REST的请求模型,因为TOP的请求模型倾向于把服务看成一个个API,而REST请求模型倾向于把服务看成一个网页,前者偏向于程序调用,而后者偏向于看网页的人,虽然可读性强,但却不方便客户端程序的编写。 

从我个人的喜好上来说,如果要给请求模型的好坏排个序,那自然是TOP的请求模型优于REST,而REST请求模型优于SOAP。因此就希望采用TOP的方式重构网站的服务总线,但是TOP的框架并没有开源,所以就自己动手搞了一个基于Spring技术架构,采用TOP请求模型思想的服务平台模型,即Rop。 

Rop的英文和Spring的缔造者Rod很像,我很喜欢这种巧合,毕竟,Rop框架的实现和Spring息息相关,Rop基本上是参照Spring MVC的实现原理设计的,使用到了很多Spring的工具类,Rop本身也需要Spring框架才能运行,可以看成是Spring的一个子项目。


与传统Web Service框架相比,Rop有哪些优势? 

Rop和一般的Web Service框架不处在相同的层面,一般的Web Service框架是站在技术层面的,它们的工作职责是把Java对象开放成一个Web Service服务,或者把Web Service服务映射成一个Java方法。而Rop是服务平台的框架,是面向应用层的,Web Service在Rop中仅是一个基础,在此基础上Rop提供了错误模型、会话管理、版本控制、安全控制、超时限制、文件上传等众多的“应用层”领域问题的解决之道。


性能如何? 


对于服务平台框架来说,性能是非常关键的因素。Rop内部拥有一个线程池,可以根据硬件情况调整线程池的大于进行性能调优。Rop框架本身直接使用Spring的类包进行请求响应报文流化工作,因此Rop也继承了Spring的高性能。 


我本身并没有对Rop进行大面向的性能测试,我使用rop-sample项目的UserServiceRawClient#testServiceXml-RequestAttr测试方法进行了性能的测试,该方法包括了一套比较复杂的业务参数,拥有一定的代表性。采用Rop默认线程池的配置:corePoolSize:200 maxPoolSize:500,在我本机上(双核 2.8G,内存 4G)时取得了以下的测试数据:


可见,Rop性能不会随着并发数增加而明显的下降,整体表现比较平稳的。除性能外,服务平台的整体稳定性也是Rop框架重点考虑的,因此我们提供了平台级、服务级、会话级的服务配额限制,以保证服务平台的整体稳定性,具体可以参照开发手册(手册下载)。


Rop的实际应用效果? 

Rop不是一个玩玩的开源项目,相反它来源于实际的生产型项目。自从我们的网站使用了Rop后,我基本上就从服务平台的设计工作中脱离出来了,因为Rop强大的错误模型已经把设计服务报文的工作量降到了最低,我完全可以把有限的设计工作下放给开发人员。 

另一方面,由于Rop为平台领域性问题都提供了解决方案,开发服务平台的工作就降格为写一个个服务方法,由于有Rop在框架层为平台的稳定性进行保驾护航,因此,对于服务平台的开发工作,普通的开发人员都可以胜任了。


目前项目进展情况?开发团队情况? 

目前Rop已经发布了1.0正式版,且开发手册已经发布,地址:http://dl.iteye.com/topics/download/198d59b6-2a45-35c6-a44c-6c77c1081c8b。 

Rop的发布包已经提交到Maven核心仓库中,您可以通过如下配置引用Rop: 
Xml代码 

<dependency>    
<groupId>com.bookegou</groupId>    
<artifactId>rop</artifactId>    
<version>1.0</version>    
</dependency> 

目前项目团队主要就我一人,已经在ITeye上创建的Rop的群组,地址是:http://rop.group.iteye.com,很多ITeye的网友对Rop提出了很好的建议,也贡献了部分源码,他们是:melinkelloKitty風一樣的男子等,很感谢他们的参与和贡献。


Rop采用什么开源协议?如何获取Rop? 


Rop采用最自由的GPL 2.0开源协议。 


目前Rop项目托管在Github中,可以通过https://github.com/itstamen/rop下载,也可以通过如下git命令将项目克隆到本地机中: 
代码 

git clone git://github.com/itstamen/rop.git  

其他开发者如何参与到该项目中? 


您可以在ITeye中通过短信,将整改意见和新功能的需求发送给我,也可以参与到Rop群组中进行讨论,或通过itstamen@qq.com邮箱(或腾讯微博@hopeahead)将您的贡献源码发给我,我审核后统一发布到Github中,源码中会保留贡献者的信息。


Rop未来的开发计划? 

没有具体的开发计划,主要还是希望根据收集到的反馈进行有针对性的整改,如过期限制、会话管理等都根据网友的反馈整体的。 

初步的计划有两个: 
  • 将oauth整合到Rop中:计划10月底完成;
  • 让服务的入参签名更加灵活,和Spring MVC一样:计划今天年底完成。



阅读更多

扫码向博主提问

CSDN官方博客

博客专家

无所不能的机器猫
去开通我的Chat快问
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/blogdevteam/article/details/7919125
个人分类: 专家访谈
上一篇“我们的开源项目”发起人、息壤开源社区共同创始人——程旭文专访
下一篇“第一次亲密接触”——项目遇到的问题有奖征文活动(已结束)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭