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

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

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

先来个自我介绍吧! Top

大家好!我是陈雄华,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是什么? Top

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项目的由来?设计思想是什么? Top

中图一购网是一个整合图书上下游供应链的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有哪些优势? Top

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

性能如何? Top

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

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

请求并发线程 请求数 总执行时间(s)
10   1000  16.74
50   1000  16.00
100   1000  19.38
200   1000  20.27
400   1000  22.55
800   1000  22.85


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

Rop的实际应用效果? Top

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

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

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

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

Rop的发布包已经提交到Maven核心仓库中,您可以通过如下配置引用Rop:
<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? Top

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

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

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

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

Rop未来的开发计划? Top

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

初步的计划有两个:

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

  • 大小: 7.2 KB


评论 共 61 条
1 楼 aninfeel 2012-08-29 10:46
spring是以高性能为卖点的吗?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • ROP(Rest Open Platform)用户开发手册

    它不同于传统的SOAP Web Service和Rest Web Service这些Web Service 技术型框架,Rop是一个应用型的Web Service平台框架,它不但可以方便快捷地开发一个个Web Service服务,还提供了服务平台领域问题的整体解决方案...

  • Rop特性及新功能(最简单的Rest Web Service框架)

    Rop是参照淘宝开发平台(TOP:Taobal Open Platform)实现的全功能Rest Web Service 全功能(Full-Stack)开源框架。它解决了以下的Web Service开发问题:  1.契约优先,URL完全Rest风格  Rop(Rest Open ...

  • ROP(Rest Open Platform)开发指南

    ROP(Rest Open Platform)特点:统一URL:http://gw.api.tbsandbox.com/router/rest,; 通过method参数指定具体API服务:如taobao.user.get、taobao.users.get等。相比于http://host/user/tom,TOP使用...

  • 基于淘宝开放平台开源的rop

    Rop(Rapid Open Platform)是借鉴淘宝开发平台(TOP:Taobal Open Platform)实现的全功能Rest Web Service 开源框架(Full-Stack)。 它高于CXF,Aixs等一般的纯技术Web Service框架,提供了请求/响应序列化、数据...

  • ROP : Read origin protocol:ROP 是一种计算协议,用于发现所有读取的来源-开源

    ROP 是一种计算协议,旨在发现所有读数的来源,这些读数源自复杂的 RNA 分子、重组抗体和微生物群落。 ROP 占 poly(A) 和核糖耗竭协议所有读数的 98.8%,而传统的基于参考的协议为 83.8%。 ROP 分析重复、circRNA、...

  • 腾讯宣布开源 RoP:Apache Pulsar 支持原生 RocketMQ 协议

    作者 | 冉小龙,刘昱RocketMQ 用户可以无缝迁移到 Apache Pulsar 了。自此,Apache Pulsar 补齐了兼容主流消息队列协议的能力。我们很高兴地宣布腾讯云中间件...

  • ROP(Rest-Open-Platform)开发指南

    ROP(Rest-Open-Platform)开发指南

  • rop-plus:rop框架修改加强版

    rop-plus rop框架修改加强版:) 2014-06-24 重新整理版

  • apple-rop:Apple里面集成ROP框架

    apple-ropApple里面集成陈雄华的ROP框架,详细介绍参考

  • Java冷门框架Rop多图片上传方案

    Rop定义了一个UploadFile,代表一个上传的文件。 @IgnoreSign public class UploadFile { private String fileType; private byte[] content; /** * 根据文件内容构造 * * @param content */ public ...

  • LyScript 寻找ROP漏洞指令片段

    LyScript 插件增强了指令片段的查找功能,通过封装一些方法,可以更方便地在目标程序的内存空间中搜索和构造ROP攻击所需的代码片段。这样,攻击者可以利用LyScript插件来定位和利用目标程序中已存在的可用指令序列,...

  • ROP(Return Oriented Programming)原理解析

    类似下面的stack frame,用字符串函数是万万不能构建的: 0x00007fffffffe498 0x00007fffffffe3b0 0x00007fffffffdcb8 0x00007ffff7aa39aa 因此,ROP的编写是极具技巧性的手艺,你的任务就是在GLIBC或者被注入进程所...

  • rop轻松谈.pdf

    rop基础

  • rop-sample.rar_.comrop_rop_rop源码下载_taobao netty

    基于ROP的SAMPLE开发代码,属于通信框架的一部分。ROP是淘宝提供的一种开发协议框架,底层基于NETTY。

  • rop-master.rar

    不同于一般纯技术型的 不同于一般纯技术型的 不同于一般纯技术型的 不同于一般纯技术型的 不同于一般纯技术型的 Web ServiceWeb Service Web Service Web ServiceWeb ServiceWeb Service 框架(如 CXFCXFCXF,...

  • spring 异步编程样例

    spring 异步编程样例

  • 带有 python 3 和 opencv 4.1 的 Docker 映像.zip

    带有 python 3.7 和 opencv 4.1.0 的 Docker 映像用法docker run -it jjanzic/docker-python3-opencv python>>> import cv2带有标签的图像包含使用contrib 模块:contrib构建的 docker 镜像可用的docker标签列表opencv-4.1.0(latest分支)contrib-opencv-4.1.0(opencv_contrib分支)opencv-4.0.1contrib-opencv-4.0.1opencv-4.0.0contrib-opencv-4.0.0opencv-3.4.2contrib-opencv-3.4.2opencv-3.4.1contrib-opencv-3.4.1opencv-3.4.0contrib-opencv-3.4.0opencv-3.3.0contrib-opencv-3.3.0opencv-3.2.0contrib-opencv-3.2.0

  • 原生js鼠标滑过文字淡入淡出效果.zip

    原生js鼠标滑过文字淡入淡出效果.zip

  • 1-中国各省、市、区、县距离港口和海岸线的距离计算代码+计算结果-社科数据.zip

    中国各城市、区、县距离港口和海岸线的距离数据集提供了全国各城市及区、县的坐标信息,以及各个港口和海岸线的坐标信息。通过R语言计算,得出了各城市、区县与港口和海岸线之间的距离。该数据集包含了各港口的经纬度、各城市与港口之间的距离、各区县与港口之间的距离、中国各城市质心与港口的最近距离、中国各城市质心与海岸线的距离、中国各区县质心与港口的最近距离以及中国各区县质心与海岸线的距离等指标。此外,还涉及中国各省距离海岸线的距离数据。港口等级划分参考了《全国沿海港口布局规划》,包括上海港、大连港等45个港口。数据集覆盖了全国31个省及直辖市,是研究地理、经济和规划等领域的宝贵资源。

Global site tag (gtag.js) - Google Analytics