您好,我使用过JAX-WS进行基于SOAP的WS服务。现在我想使用REST,因为正如我从here学到的那样,REST比SOAP更有优势。
但从不同的文章中我了解到,我们也可以从JAX-WS创建RESTful we服务。但是大多数人认为我们应该使用JAX-RS而不是JAX-WS。
我的问题是JAX-WS RESTful webservice和JAX-RS(jersey)之间的区别是什么。与JAX-WS相比,JAX-RS有哪些优势?为什么我们应该将JAX-RS用于RESTful we服务?
提前谢谢。
发布于 2015-02-09 15:43:31
TL;DR
JAX-WS适用于基于XML的web服务,如SOAP。JAX-RS没有同样的限制。
JAX-WS通常适用于具有定义良好的契约(WSDL)的服务器到服务器的交互,并且通常当服务和客户端来自不同的组时。它非常耗费资源,因此对于网络或客户端设备功能不是最优的客户端到服务器的交互来说,它是不可行的。
JAX-RS适合于客户端到服务器的交互,尽管服务器到服务器也是可以的。因为它几乎没有服务义务,所以可以根据客户的需要进行调整。
更多信息
JAX-RS API只提供代码优先的方法,而JAX-WS允许使用WSDL文件的代码优先(通常不推荐)和约定优先(通常推荐)。
JAX-RS2.0引入了client API,这是一个用于HttpUrlConnection的智能包装器,具有更多的映射功能,JAX-WS也是一个包装器,但它在参考实现中处理的数据只是XML。
它没有引入信封的概念,而是使用HTTP作为信封。它没有引入密码学或安全性,它使用HTTPS。
JAX-WS虽然运行在用于加密的HTTPS上,但它提供了使用WS-SecurityPolicy等的安全性附加功能。此外,使用WSDL牢固地建立了协定,并且可以使用诸如DataPower之类的ESB在应用程序外部进行验证。
那么该选择什么呢?
JAX-WS通常适用于具有定义良好的契约(WSDL)的服务器到服务器的交互,并且通常当服务和客户端来自不同的组时。它非常耗费资源,因此对于网络或客户端设备功能不是最优的客户端到服务器的交互来说,它是不可行的。
JAX-RS适合于客户端到服务器的交互,尽管服务器到服务器也是可以的。客户端和服务器之间的唯一合同义务是消息和请求头。因为它几乎没有服务义务,所以可以根据客户的需要进行调整。
然而,使用RESTful服务API类似于像Ruby和Python这样的元编程,它将问题推迟到运行时,因为双方没有一致同意和技术上强制执行的定义模式。因此,我不建议到处都使用RESTful服务,但如果我能控制这两个方面,我会推荐它。当你构建一个使用静态超文本标记语言/CSS/JS并与RESTful服务器进行数据通信的web应用程序时,通常会发生这种情况。
https://stackoverflow.com/questions/12599459
复制相似问题