精华帖 (4) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-27
最后修改:2012-04-27
Rop是参照淘宝开发平台(TOP:Taobal Open Platform)实现的全功能Rest Web Service 全功能(Full-Stack)开源框架。它解决了以下的Web Service开发问题: 1.契约优先,URL完全Rest风格 Rop(Rest Open Platfrom)是“契约优先”的Rest URL的Web Service框架,主URL固定,通过method=<methodName>参数指定调用方法,调用方法通过@ApiMethod(<methodName>)在Bean上; 2.支持JAXB注解,支持XML/JSON输入、输出 Rop的请求和响应都支持使用JAXB(JSR-222)注解,可以通过format请求指定xml或json,实现请求响应数据绑定和数据输出的完全透明化; 3.建立错误处理模型,有力降低错误处理难度 建立了一个可扩展的错误处理模型(这个主要归功于TOP的成熟模型),写Web Service一定要关注服务发生错误时如何返回响应,以便客户端据此做出相应的处理。个人认为,这是Web Service开发最关键的点之一。可以一般的Web Service开发框架由于是纯技术框架,根本没有涉及这个应用型领域的问题,因此造成了大量的甚至是混乱的Web Service开发。Rop已经建立了Web Service的错误模型,一般错误(如数据校验,签名验证,会话验证,安全控制等)Rop框架自动处理,业务错误开发者根据错误模型扩展。 使用了Rop框架,你的服务错误都可以通过响应报文描述,有力保证Web Service的开发质量和效率。 4.支持JSR 303标准校验,数据校验极致简化 请求对象只要打上JSR 303的注解,所有余下的事情(数据校验、错误输出)都由Rop完成,极大降低了Web Service开发的难度。(也许Web页面应用可以只做客户端校验,但是Web Service一定要做服务端校验,且发生错误,必须通过响应报文描述了错误) 5.组件可定制,可扩展: 既可通过RopServlet的Servlet初始化参数指定组件,也可以在Spring窗口中配置组件Bean(Rop 将自动扫描组件并装配之)。目前支持以下组件: 1)SessionChecker:会话检查组件,大多数服务方法都必须在会话环境下进行,使用该组件判断请求会话的合法性; 2)AppSecretManager:应用密钥管理组件,使用Rop开发的开放平台服务,客户端可以开发很多应用,每个应用都必须分配一个appKey,每个appKey对应一个密钥。因此服务端必须能存储并管理这个appKey/密钥对,以便在签名验证时使用。你既可以将appKey/密钥放在数据库中,也可以放到文件中,也可以放在LDAP中,只要相应实现AppSecretManager即可。 3)SecurityManager:服务安全检查组件,一个请求是否可以执行目标服务,需要很多条件,可以装配该组件以植入安全校验的逻辑。 6.支持拦截器 可以通过RopServlet的Servlet参数指定拦截器(多个逗号分隔),也可以在Spring容器中配置拦截器,Rop会自动扫描并装配。 拦截器将在服务调用前及响应返回前调用,可以使用拦截器做日志记录、服务时间审计等很多的事情。可配置多个拦截器,且可以指定拦截器的先后顺序。 另: 在github中:https://github.com/itstamen/rop 采用maven进行管理,rop-sample已经加了jetty的插件,可以直接通过Maven运行。 Rop致力于打造最简单的Rest Web Service框架!! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-27
国内的开源太少了,这个框架不错啊,打算下来用用看,谢谢stamen的无私贡献!
|
|
返回顶楼 | |
发表时间:2012-04-28
现在国人开源的质量都不错,比几年前好太多了。
|
|
返回顶楼 | |
发表时间:2012-04-28
lz,有没有相应的开发计划呢?
|
|
返回顶楼 | |
发表时间:2012-04-28
最后修改:2012-04-28
kelloKitty 写道 lz,有没有相应的开发计划呢?
没有开发计划,大家使用过程中,有需求有问题,反馈给我 我马上改,采用需求驱动吧。 因为Rop采用"内核+插件式组件"的方式,工作集中在把内核打造好,把组件接口开发好。象日志记录,安全控制等,我都把它们组件接口化了,大家可以实现这些组件,装配进去就可以了。 目前,我自己项目使用中,觉得Rop已经够用了,所以内核和组件的添加需要大家提,我再事件驱动。 |
|
返回顶楼 | |
发表时间:2012-04-28
lz的开源的精神值得大家学习,我看到淘宝开源平台api有一个系统参数session,l你能描述一下ROP的会话验证机制吗?还有就是ROP支持服务端超时重试机制吗?谢谢。
|
|
返回顶楼 | |
发表时间:2012-04-28
kelloKitty 写道 lz的开源的精神值得大家学习,我看到淘宝开源平台api有一个系统参数session,l你能描述一下ROP的会话验证机制吗?还有就是ROP支持服务端超时重试机制吗?谢谢。
Rop中有一个sessionId的参数,和TOP的session是一样的。开发者通过实现SessionChecher 进行会话的安全管理。如果有某些方法不需要session,则可以标注:@ApiMethod(needInSession=false)。 超时重试机制我要了解下。 |
|
返回顶楼 | |
发表时间:2012-04-28
lz你这个框架的api协议版本这个参数(v),目前有打算实现吗?比如我有个接口1.0有三个字段到了2.0增加了一个字段,关于这块的处理机制是否已经有思路?
|
|
返回顶楼 | |
发表时间:2012-04-29
cdwm 写道 lz你这个框架的api协议版本这个参数(v),目前有打算实现吗?比如我有个接口1.0有三个字段到了2.0增加了一个字段,关于这块的处理机制是否已经有思路?
Rop的系统参数包括version的字段,即每个服务都必须指定版本啊。目前是需要开发者在服务方法内部自己处理不同版本的流程,如下所示: @ApiMethod("sample.serviceMethod") public RopResponse serviceMethod(RopRequest request){ if(request.getVersion == 1){ ... }else if(request.getVersion == 2){ ... }else{ ... } } 不过这样子,方法内部都要包含版本控制的逻辑,比较麻烦,我拟采用以下方式: @ApiMethod(method="sample.serviceMethod",version=1) public RopResponse serviceMethod1(RopRequest request){ //version = 1时的逻辑 } @ApiMethod(method="sample.serviceMethod",version=2) public RopResponse serviceMethod2(RopRequest request){ //version = 2时的逻辑 } |
|
返回顶楼 | |
发表时间:2012-04-29
最后修改:2012-04-29
stamen 写道 kelloKitty 写道 lz的开源的精神值得大家学习,我看到淘宝开源平台api有一个系统参数session,l你能描述一下ROP的会话验证机制吗?还有就是ROP支持服务端超时重试机制吗?谢谢。
Rop中有一个sessionId的参数,和TOP的session是一样的。开发者通过实现SessionChecher 进行会话的安全管理。如果有某些方法不需要session,则可以标注:@ApiMethod(needInSession=false)。 超时重试机制我要了解下。 1)SessionChecker:会话检查组件,大多数服务方法都必须在会话环境下进行,使用该组件判断请求会话的合法性 你好,lz,关于SessionChecker组件我还是没能明白,能否详细描述一下SessionChecker将要实现什么样的验证吗?Rop的系统参数是有一个session的参数,假如客户端传参session=test。服务端SessionChecker将如何验证安全处理? |
|
返回顶楼 | |