本文主要是介绍rop入门(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介:
rop不同于一般的技术性框架,主要用于构建服务放开平台,您可以使用 Rop 开发类似于淘宝服务开放平台这样的服务平台
Rop 功能 架构
CXF 和 Jersey 是纯技术纯的 Web Service 框架,而在 Rop 中,Web Service 只是核心,
它提供了开发服务平台的诸多领域问题的解决方案:如应用认证、会话管理、安全控制、
错误模型、版本管理、超时限制等。
下面通过图 1 了解一下 Rop 框架的整体结构:
从图 1 中,可以看到 Rop 所提供的大部分功能都是偏“应用层”的,传统技术型的Web Service 框架是不会僭越到这些“应用层”的问题的,只是进行参数的传递调用相应接口,没有对数据的安全,版本等进行管理。但是,在实际开发中,这些应用层的问题不但不可避免,而且非常考验开发者的设计经验,此外,这些工作还会占用较大的开发工作量。Rop 力图让开发者从这些复杂的工作中解脱出来,让他们可以真正聚焦服务平台业务逻辑的实现上。
Rop 技术架构
Rop 在技术实现上充分借鉴了 Spring MVC 的框架设计理念和实现技术,首先RopServlet 类似于 Spring MVC 的 DispatcherServlet, 是 Rop 的门面 Servlet, 负责截获 HTTP服务请求转由 Rop 框架处理。
web.xml
<!-- rop servlet --><servlet> <servlet-name>cop</servlet-name><!--Rop 提供了一个 com.rop.RopServlet 这样 Rop 就可以接收 HTTP 的服务请求了--> <servlet-class> com.rop.RopServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cop</servlet-name> <url-pattern>/router</url-pattern> </servlet-mapping>
由于 Rop 是基于 Spring 工作的,因此首先必须在 web.xml 中配置一个 Spring 容器,然后再通过 RopServlet 指定 Rop 的工作的路径。
值得注意的是,Rop 依赖于 Spring 框架而非 Spring MVC 框架,因此您的 Web应用框架是可以自由选择的,如 Struts、JSF 等 。
具体技术架构通过图 2 描述:
Rop 的配置信息统一在 Spring 配置文件中通过 rop Schema 命名空间定 义。
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.bookegou.com/schema/rop ①
http://www.bookegou.com/schema/rop/rop-1.0.xsd"><!-- ② 扫描 Spring Bean-->
<context:component-scan base-package="com.rop.sample"/>
<!-- ③启动 Rop 框架 -->
<rop:annotation-driven/><!--定义一个bean--><bean id="sampleSessionManager" class="com.yihg.api.component.SampleSessionManager" />
**首先,引入 Rop 的 Schema 命名空间,如①处所示。由于 Rop 的服务类必须是一个Bean,所以需要声明 Spring 的扫描器,将标注了 Spring Bean 注解的类加载为 Spring 容器中的 Bean。由于@ServiceMethodBean 注解本身标注了 Spring 的@Service,所以所有标注了@ServiceMethodBean 的类也会自动成为 Spring 的 Bean。
@ServiceMethodBean(version = "1.0",ignoreSign=IgnoreSignType.NO)
public class SupplierAction {@Autowiredprivate TravelUserOnlineService travelUserOnlineService;/*** 添加标签*/@ServiceMethod(method = "supplier.comment.reply",needInSession = NeedInSessionType.NO,httpAction=HttpAction.POST)public Response supplierCommentReply(BaseRequest baseRequest) {Response response = new Response();Map<String,Object> data = new HashMap<String, Object>(1);response.setData(data);response.getResult().setResult("1");response.getResult().setMessage("操作成功");return response;}}
最后,我们通过一个简单
即可启动 Rop 框架,如③所示**
ServiceRouter 是 Rop 框架的核心,它负责协调各组件的交互并最终完成服务处理的工作。RopServlet 在启动时会从 Spring 容器中搜索出 ServiceRouter 的 Bean 实例并注册之。在服务请求到达后,RopServlet 截获请求并转交给 ServiceRouter 处理,ServiceRouter将服务请求封装成一个的 RopRequestContext 对象,RopRequestContext 包含了服务请求的所有信息。而后ServiceRouter 使用 SecurityManager 检查服务请求的安全性,只有通过了SecurityManager 的安全检查,才会调用目标服务处理方法执行服务,否则将阻止请求并返回错误响应信息。完成 SecurityManager 的安全检查后ServiceRouter 通过 ServiceMethodAdapter 对目标的服务方法发起调用。由于具体服务方法的签名各不相同,因此必须采用反射机制进行适配调用。当返回响应对象后,ServiceRouter 使用 RopMarshaller 将响应对象编组为特定的
响应报文返回给客户端。
这篇关于rop入门(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!