2012-09-26 59 views
18

您好我已经与JAX-WS一起使用基于SOAP的Web服务。现在我想使用REST,因为REST比SOAP有优势,因为我从here进行了研究。对于REST风格的Web服务,JAX-WS和JAX-RS

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

我的问题是JAX-WS RESTful web服务和JAX-RS(球衣)之间有什么区别。 JAX-RS比JAX-WS有什么优势?为什么我们应该使用JAX-RS进行RESTful Web服务?

在此先感谢。

回答

26

TL; DR

JAX-WS适用于基于XML的Web服务,如SOAP。 JAX-RS没有相同的限制。

JAX-WS通常面向服务器到服务器与定义良好的契约(WSDL)的交互,通常当服务和客户端来自不同的组时。这是非常耗费资源的,因此在网络或客户端设备能力不够理想的情况下进行客户端到服务器交互是不可行的。

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

更多信息

的JAX-RS仅API提供代码优先的方法,而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服务无处不在,但我会建议,如果我有双方通常发生在你构建一个使用静态的HTML/CSS/JS和会谈的一个RESTful服务器的Web应用程序的控制数据。