【2016-05-08】Jersey vs. SpringMVC

当前Web Service 经常使用的风格有两种,RESTful风格和RPC风格。html

 
1、RESTful与RPC简介

RPC的中心是方法,REST的中心是资源。前端

RPC:其中RPC风格中常见的有XML-RPC和JSON-RPC,JSON以其简洁、传输高效见长。java

RESTful:若是一个Web Service知足REST的几个条件,那么就称他们是RESTful的。程序员

这里提到的条件包括:(来自参考资料1)web

  • C/S结构 (这是Internet服务的一个基本特征)spring

  • 无状态 (很熟悉吧,呵呵)json

  • 能够cache (想起了浏览器?)api

  • 分层系统 (想起了无数的架构?)浏览器

  • 统一的接口 (若是这是可能的,程序员有福了, :D)安全

  • code on demand(可选, 实际上是一种扩展性的要求)

以上几个特征和HTTP如此相像,

RESTful之于RPC之优势:(来自参考资料1)

根据经验,建议可以使用REST就尽可能使用REST, 主要基于下面几个考虑:

  • 易扩展

  • 松耦合(意味着,不用强制要求客户端去更新相应的代码)

  • 客户端实现语言无关

  • 性能

  • 安全性(例如HTTPS)

固然上述的几点也并不是 RPC 都不知足,不过相对而言, REST 更加清晰和简洁, 再辅以 JSON 相应的服务会在性能和稳定性(简单一般意味着robust)方面有很大的提升.

 

2、Jersey与SpringMVC比较

Java中的REST规范是JAX-RS,对应的RPC规范叫作JAX-WS。

Jersey与SpringMVC都是JAX-RS的参考实现。(与JAX-RS相对的是JAX-WS

下面粗浅比较下二者的区别。

  Jersey SpringMVC Struts2
遵循JAX-RS协议 是,并提供了本身的扩展API   彻底不
与Spring整合

 

<servlet>

    <servlet-name>jerseyServlet</servlet-name>

    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>

    <init-param>

        <param-name>com.sun.jersey.config.property.packages</param-name>

        <param-value>com.rathan</param-value>

    </init-param>

    <init-param>

        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>

        <param-value>true</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

</servlet>

 

与Spring无缝结合

 

<servlet>

    <servlet-name>springWebMVC</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

    <servlet-name>springWebMVC</servlet-name>

    <url-pattern>/</url-pattern>

</servlet-mapping>

 
UT   利用Spring提供的Mock对象可以很是简单的进行Web层单元测试  
web容器入口 servlet servlet filter
前端控制器

com.sun.jersey.spi.spring.container.servlet.SpringServlet(jersey-spring包中)

org.glassfish.jersey.servlet.ServletContainer(jersey-container-servlet-core包中)

DispatcherServlet,须要在web.xml中配置

@Controller

@RequestMapping(value = "/owner")

 

 
  jersey和spring结合,可使用spring的一些功能,好比注入、spring配置、单例、request scopes    
       
       
       

 

参考资料:

一、Web Service实践之REST vs RPC(转):http://www.cnblogs.com/Tim-Yi/archive/2011/11/03/2234230.html

二、JAX-RPC vs JAX-WS(一) 简介:http://chxiaowu.iteye.com/blog/1287745

三、SpringMVC入门示例详解:http://www.importnew.com/15141.html

四、servlet/filter/listener/interceptor区别与联系:http://blog.csdn.net/sundenskyqq/article/details/8549932

相关文章
相关标签/搜索