您的位置:首页 > 运维架构

rop入门(一)

2015-07-02 21:58 295 查看
简介:

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 {
    @Autowired
    private 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 将响应对象编组为特定的

响应报文返回给客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: