Java 用于RESTful Web服务的JAX-WS与JAX-RS

Java 用于RESTful Web服务的JAX-WS与JAX-RS,java,rest,soap,jax-ws,jax-rs,Java,Rest,Soap,Jax Ws,Jax Rs,您好,我曾与JAX-WS合作使用基于SOAP的Web服务。现在我想使用REST,因为正如我从中学习的那样,REST比SOAP有优势 但从不同的文章中,我知道我们也可以从JAX-WS创建RESTful Web服务。但是大多数人说我们应该使用JAX-RS而不是JAX-WS 我的问题是JAX-WSRESTfulWebService和JAX-RS(jersey)之间的区别是什么。与JAX-WS相比,JAX-RS有哪些优势?为什么我们应该将JAX-RS用于RESTful Web服务 提前感谢。TL;博士

您好,我曾与JAX-WS合作使用基于SOAP的Web服务。现在我想使用REST,因为正如我从中学习的那样,REST比SOAP有优势

但从不同的文章中,我知道我们也可以从JAX-WS创建RESTful Web服务。但是大多数人说我们应该使用JAX-RS而不是JAX-WS

我的问题是JAX-WSRESTfulWebService和JAX-RS(jersey)之间的区别是什么。与JAX-WS相比,JAX-RS有哪些优势?为什么我们应该将JAX-RS用于RESTful Web服务

提前感谢。

TL;博士 JAX-WS用于基于XML的web服务,如SOAP。JAX-RS没有相同的限制

JAX-WS通常面向具有定义良好的契约(WSDL)的服务器到服务器交互,并且通常在服务和客户端来自不同的组时。这是一种资源密集型的交互方式,因此在网络或客户端设备性能不理想的情况下,客户端到服务器的交互是不可行的

JAX-RS面向客户机到服务器的交互,尽管服务器到服务器是可以的。由于它几乎没有服务义务,因此可以根据客户的需求进行调整

更多信息 JAX-RSAPI只提供代码优先的方法,而JAX-WS允许使用WSDL文件进行代码优先(通常不推荐)和契约优先(通常推荐)

JAX-RS 2.0引入了客户端API,它是HttpUrlConnection的智能包装器,具有更多的映射功能,JAX-WS也是一个包装器,但它在参考实现中处理的数据只是XML

JAX-RS的优点是创建API,这些API更易于在不同浏览器和移动设备中创建和摘要消息,即JSON结构。它没有引入信封的概念,而是使用HTTP。它不引入加密或安全性,而是使用HTTPS

JAX-WS虽然运行在HTTPS上进行加密,但使用WS-SecurityPolicy等为安全性提供了补充。此外,使用WSDL牢固地建立了契约,并且可以在应用程序外部使用ESB(如DataPower)进行验证

那么选择什么呢 JAX-WS通常面向具有定义良好的契约(WSDL)的服务器到服务器交互,并且通常在服务和客户端来自不同的组时。这是一种资源密集型的交互方式,因此在网络或客户端设备性能不理想的情况下,客户端到服务器的交互是不可行的

JAX-RS面向客户机到服务器的交互,尽管服务器到服务器是可以的。客户端和服务器之间唯一的契约义务是消息和请求头。由于它几乎没有服务义务,因此可以根据客户的需求进行调整

然而,使用RESTful服务API类似于进行Ruby和Python之类的元编程,这会将问题延迟到运行时,因为双方没有商定并在技术上强制执行的定义模式。因此,我不建议在任何地方都使用RESTful服务,但如果我能够控制这两个方面,我会推荐使用RESTful服务,这通常发生在您构建一个使用静态HTML/CSS/JS并与RESTful服务器进行数据对话的web应用程序时