一种轻量级REST服务框架实现方法技术领域
本发明涉及分布式服务框架技术领域,具体地说是一种轻量级REST服务框架实现
方法。
背景技术
REST服务是一种面向资源的Web服务形式与风格,REST服务框架是可以按照一组
约定的约束,规范与原则来快速开发REST服务的构件。目前REST服务已经大量应用于移动
互联网应用,互联网应用,企业应用的各种场景中,REST服务框架也层出不穷,典型的REST
服务框架有Spring MVC,Restlet和Jersey。基于Spring MVC的REST服务框架与Spring框架
绑定在一起,很难在Spring框架之外单独使用其REST功能,比较重量级。Restlet框架完全
抛弃了Servlet接口,重新实现了一套API,学习开发的难度大,且无法充分利用现有应用容
器的资源,性能较差。Jersey框架没有内置安全监控机制,其版本1使用较老的JAX-RS实现,
而很多第三方库只支持版本1,不支持新版本2。
由此可见,在现有的技术中,REST服务框架存在与容器的依赖性强,不易集成,过
于重量级,过于复杂与抽象,学习开发运维成本高,缺乏服务安全与监控机制,不能充分利
用现有应用服务器的资源导致性能不够高等问题。
基于此,现提供一种轻量级REST服务框架实现方法,来解决上述问题。
发明内容
本发明的技术任务是针对以上不足之处,提供一种轻量级REST服务框架实现方
法。
一种轻量级REST服务框架实现方法,其实现过程为:构建服务提供者模块、服务管
理中心模块、服务控制器模块、服务保障中心模块、服务消费者模块,实现轻量级REST服务
框架,其中,
服务消费者模块负责发起REST服务请求,接收并处理REST服务响应;
服务控制器模块负责REST服务的响应,协调其它各个模块完成服务请求处理并回
写服务响应;
服务提供者模块提供注册服务,注册到服务管理中心;
服务管理中心模块负责服务目标对象的管理;
服务保障中心模块负责REST服务安全与服务监控。
所述服务提供者模块,负责提供基于注解方式的服务实现类及其服务实现方法,
并将服务实现类和服务实现方法以服务目标对象的形式注册到服务管理中心。
所述服务提供者模块提供注册服务的具体过程为:
在应用系统启动时,数据提供者模块从配置库中获取所有配置的REST服务实现类
的基路径列表;
逐个扫描基路径列表中的每个基路径,获取基路径下的所有类;
在所有类的列表中查找注解为Rest的REST服务实现类;
通过Rest注解获取服务实现类配置的服务URI;
在REST服务实现类中查找注解为Service的服务实现方法;
通过Service注解获取服务实现方法配置的服务URI;
根据服务实现类与服务实现方法,及其分别对应的服务URI构造服务目标对象;
通过服务管理中心模块的服务上线接口注册服务目标对象。
所述服务管理中心模块对目标对象的管理包括服务上线、服务存储、服务下线、服
务查找、服务更新。
在服务管理中心中,服务上线是指建立服务URL与服务目标对象之间的映射关系;
服务存储是指对服务URL与服务目标对象进行存储,供服务消费者使用;服务查找功能是指
在服务存储中查找服务URI对应的服务目标对象。
所述服务控制器模块负责的REST服务响应包括服务请求URL的拦截、服务请求URL
以及请求报文的解析、报文组装、报文序列化与反序列化、服务代理、安全与监控代理,回写
服务请求的处理结果。
服务控制器模块负责REST服务的响应,协调其它各个模块完成服务请求处理并回
写服务响应的具体过程为:
在应用启动后系统正常运行时,服务消费者模块发起REST服务请求;
服务控制器模块对REST服务请求的URL进行拦截处理;
通过服务保障中心模块的服务监控接口为服务请求记录日志,便于对每个服务请
求进行追踪与分析;
通过服务保障中心模块的服务安全接口对服务请求进行安全认证;
然后解析服务请求的URL,获取服务对应的URI;
通过服务管理中心的服务查找接口以及服务URI获取对应的服务对象;
服务管理中心模块使用服务查找功能查找服务URI对应的服务目标对象,并返回
查找到的服务目标对象;
验证服务目标对象是否为空,如果服务目标对象不为空,则继续顺序执行;否则直
接调用服务提供者对应的服务实现类的服务实现方法进行后续的处理;
从REST服务请求的HTTP Body和Params中获取服务请求的报文参数;
对请求报文进行反序列化,得到请求报文对象;
以请求报文对象作为参数,调用服务目标对象;
调用服务提供者对应的服务实现类的服务实现方法;
根据执行情况构造响应报文,如果执行正常,则构造服务请求处理成功报文;否则
构造服务请求处理失败报文;
对响应报文对象进行序列化;
通过服务保障中心的服务监控接口为服务请求处理结果记录日志,便于对每个服
务请求处理结果进行追踪与分析;
将序列化后的响应报文数据写回服务消费者;
服务消费者接收REST服务响应,进而对响应数据进行处理。
所述服务保障中心模块包括服务安全与服务监控两个子模块,其中服务安全子模
块负责REST服务请求的安全认证、检测与审计;服务监控子模块负责记录、追踪、统计服务
请求的处理情况以及服务的运行情况,并根据监控的结果做出响应。
服务保障中心模块的服务安全子模块根据服务请求URL及其报文参数来验证服务
请求的身份合法性,权限合法性,请求报文合法性:如果验证确认是安全的服务请求,则继
续顺序执行解析服务请求的URL的步骤;否则直接调用服务提供者对应的服务实现类的服
务实现方法进行后续的处理。
本发明的一种轻量级REST服务框架实现方法和现有技术相比,具有以下有益效
果:
本发明的一种轻量级REST服务框架实现方法,可以解决现有REST服务框架难于学
习,开发和运维,不易集成,缺乏统一的安全与监控机制,不能充分利用现有应用服务器的
资源导致性能无法满足大规模应用系统的需求等问题,实现一种轻量级的REST服务框架,
具有轻量少依赖、简约易用、充分利用应用服务器资源、高效稳定、内置安全监控机制等特
点,可以广泛应用于REST服务系统中,实用性强,具有很好的推广应用价值。
附图说明
附图1是本发明方法的系统架构图。
附图2是本发明的系统处理流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步说明。
如附图1所示,本发明提供一种轻量级REST服务框架实现方法,包括服务提供者模
块,服务管理中心模块,服务控制器模块,服务保障中心模块,服务消费者模块。
所述的服务提供者模块,主要负责提供基于注解方式的服务实现类及其服务实现
方法,并将服务实现类和服务实现方法以服务目标对象的形式注册到服务管理中心。
所述的服务管理中心模块,主要负责服务目标对象的管理,包括服务上线,服务存
储,服务下线,服务查找,服务更新。
所述的服务控制器模块,主要负责REST服务的响应,协调其他各个模块完成服务
请求处理并回写服务响应,包括服务请求URL的拦截,服务请求URL以及请求报文的解析,报
文组装,报文序列化与反序列化,服务代理,安全与监控代理,回写服务请求的处理结果。
所述的服务保障中心模块,包括服务安全与服务监控两个子模块,其中服务安全
子模块主要负责REST服务请求的安全认证,检测与审计;服务监控子模块主要负责记录,追
踪,统计服务请求的处理情况以及服务的运行情况,并根据监控的结果做出必要的响应。
所述的服务消费者模块,主要负责发起REST服务请求,接收并处理REST服务响应。
系统整体处理流程如图2系统处理流程图所示。具体处理步骤如下:
在应用系统启动时,从配置库中获取所有配置的REST服务实现类的基路径列表;
逐个扫描基路径列表中的每个基路径,获取基路径下的所有类;
在所有类的列表中查找注解为Rest的REST服务实现类;
通过Rest注解获取服务实现类配置的服务URI;
在REST服务实现类中查找注解为Service的服务实现方法;
通过Service注解获取服务实现方法配置的服务URI;
根据服务实现类与服务实现方法,及其分别对应的服务URI构造服务目标对象;
通过服务管理中心模块的服务上线接口注册服务目标对象;
服务上线,建立服务URL与服务目标对象之间的映射关系;
服务存储,对服务URL与服务目标对象进行存储,供服务消费者使用;
在应用启动后系统正常运行时,服务消费者发起REST服务请求;
服务控制器对REST服务请求的URL进行拦截处理;
通过服务保障中心的服务监控接口为服务请求记录日志,便于对每个服务请求进
行追踪与分析;
通过服务保障中心的服务安全接口对服务请求进行安全认证;
服务保障中心模块的服务安全子模块根据服务请求URL及其报文参数来验证服务
请求的身份合法性,权限合法性,请求报文合法性;
如果验证确认是安全的服务请求,则继续顺序执行;否则直接跳转到调用服务提
供者对应的服务实现类的服务实现方法的步骤进行后续的处理;
解析服务请求的URL,获取服务对应的URI;
通过服务管理中心的服务查找接口以及服务URI获取对应的服务对象;
服务管理中心模块使用服务查找功能,在服务存储中查找服务URI对应的服务目
标对象;
服务管理中心模块返回查找到的服务目标对象;
验证服务目标对象是否为空,如果服务目标对象不为空,则继续顺序执行;否则直
接跳转到调用服务提供者对应的服务实现类的服务实现方法的步骤进行后续的处理;
从REST服务请求的HTTP Body和Params中获取服务请求的报文参数;
对请求报文进行反序列化,得到请求报文对象;
以请求报文对象作为参数,调用服务目标对象;
调用服务提供者对应的服务实现类的服务实现方法;
根据执行情况构造响应报文,如果执行正常,则构造服务请求处理成功报文;否则
构造服务请求处理失败报文;
对响应报文对象进行序列化;
通过服务保障中心的服务监控接口为服务请求处理结果记录日志,便于对每个服
务请求处理结果进行追踪与分析;
将序列化后的响应报文数据写回服务消费者;
服务消费者接收REST服务响应,进而对响应数据进行处理。
如此,可以解决现有REST服务框架难于学习,开发和运维,不易集成,缺乏统一的
安全与监控机制,不能充分利用现有应用服务器的资源导致性能无法满足大规模应用系统
的需求等问题,实现一种轻量级的REST服务框架。
在本发明中,采用java语言实现;报文格式采用json格式;服务控制器采用
Servlet技术。
本发明中的Rest注解参数如下:
![]()
本发明中的Service注解参数如下:
![]()
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应
当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域
的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。除说明书所述的技术
特征外,均为本专业技术人员的已知技术。