JAX-RS和JAX-WS有什么区别?

在阅读了一些关于JAX-RS和JAX-WS的文章之后,我有几个问题想要确认?

  1. JAX-RS可以像JAX-WS一样执行asynchronous请求吗?
  2. JAX-RS是否可以访问未在Java平台上运行的Web服务,反之亦然?
  3. “REST对于PDA和手机等有限的设备特别有用”是什么意思?
  4. “JAX-RS不需要XML消息或WSDL服务-API定义是什么意思?

JAX-RS可以像JAX-WS一样执行asynchronous请求吗?

1)我不知道JAX-RS API是否包含asynchronous请求的特定机制,但是这个答案仍然可以根据您使用的客户端实现进行更改。

JAX-RS是否可以访问未在Java平台上运行的Web服务,反之亦然?

2)我想不出有什么理由不能这样做。

“REST对于PDA和手机等有限的设备特别有用”是什么意思?

3)基于REST的体系结构通常会使用像JSON这样的轻量级数据格式来回发送数据。 这与使用XML的JAX-WS相反。 我本身并没有看到XML本身比JSON要重要得多(有些人可能会争辩),但是使用JAX-WS,使用了多lessXML,最终使JSON成为REST更为轻松的select。

“JAX-RS不需要XML消息或WSDL服务-API定义是什么意思?

4)如3所述,REST体系结构通常使用JSON来发送和接收数据。 JAX-WS使用XML。 并不是说JSON本身比XML要小得多。 大多数情况下,JAX-WS规范在通信方面包含很多开销。

关于WSDL和API定义,REST将更频繁地使用URI结构和HTTP命令来定义API,而不是像JAX-WS中所做的那样定义消息types。 这意味着您不需要发布WSDL文档,以便服务的其他用户可以知道如何与您的服务对话。 使用REST,您仍然需要向其他用户提供一些文档,以了解如何组织REST服务以及需要发送哪些数据和HTTP命令。

另外重要的一点

JAX-WS表示SOAP

JAX-RS代表REST

如何selectJAX-RS和JAX-WS Web服务实现?

JAX-WS – 是基于XML的Web服务的Java API–一种用SOAP标记(简单对象访问协议)开发Web服务的标准方法。

调用Web服务是通过远程过程调用来执行的。 用于客户端和Web Service之间的信息交换是使用SOAP协议。 通过基于XML的SOAP消息执行客户端和服务器之间的消息交换。

JAX-WS Web服务的客户端需要一个WSDL文件来生成客户端可以用来调用Web服务的可执行代码。

JAX-RS – 用于REST风格的Web服务的Java API。 REST风格的Web服务被表示为资源,可以通过统一资源标识符( URI )来标识。 在这种情况下,远程过程调用表示一个HTTP请求,必要的数据作为查询的parameter passing。 Web服务RESTful – 更加灵活,可以使用几种不同的MIMEtypes。 通常用于XML数据交换或JSON (JavaScript Object Notation)数据交换…

我一直在使用Apachi Axis1.1和Axis2.0和JAX-WS,但是我build议你必须使用JAX-WS,因为它允许你以任何格式生成wsdl,我在Apache Axis2中使用GetInquiry()允许我以大写字母开始操作名称,所以我觉得它不好,所以我build议你必须使用JAX-WS