WebService - RoadMap

Why RoadMap

由于网络带宽的发展,WebService作为分布式计算的解决方案越来越重要。如果想学习WebService,那应该首先从最高层次了解WebService的工作原理,以及技术构成。然后再往底层深化,细分,了解每一个细节。

WebService发展

WSDL+SOAP

WebService是一种通用的,夸语言,夸平台,夸系统的分布式解决方案。首先,我们需要抛开所有的平台,语言和实现细节,从最初设计WebService时的想法,来讨论一下WebService的基础构成。

004855_caNR_254689.png

WebService依赖于4个标准,HTTP, XML, SOAP和WSDL。

让我们来设想一个场景。存在一个网站A,A的数据库数据越来越丰富,A的功能也越来越多。A发现,如果对外提供服务,可以使其它网站使用自己的功能和数据,那岂不是可以赚更多的钱?于是A做了以下几个步骤:

  1. 开发了一些服务项目,做好对外开放的准备。

  2. A需要把自己开放的服务制定一个描述文件(WSDL),好让其它网站能够遵照描述的方式,使用开放的服务。

  3. 网站B想使用网站A的服务,于是A把WSDL全部发给了B.

  4. B遵照WSDL的描述,产生请求。这个请求的数据格式为SOAP,编码格式为XML。

  5. 载着SOAP格式数据的XML实体,通过HTTP协议发往A。

  6. A接收HTTP请求带来的XML数据,由于XML数据是遵循SOAP协议组织的,A知道如何解析其中的内容。

  7. A执行服务,产生响应。这个响应的数据格式为SOAP,编码格式为XML。

  8. 载着SOAP格式数据的XML实体,通过HTTP协议发往B。

  9. B根据WSDL的描述,明白A返回的数据如何解析。

上面的步骤,粗略的解释了HTTP, XML, SOAP与WSDL在WebService中的作用。

012127_SIvo_254689.png

Restfull

使用WSDL和SOAP的代价挺大,首先,作为一个java web程序员,需要额外的学习WSDL相关的知识。其次,由于客户端需要导入WSDL,这使得耦合度加大。再其次,SOAP协议使得HTTP承载的body比较大,浪费带宽。最后,生成和解析SOAP协议也要花时间。

随着AJAX和JSON的流行,逐渐兴起了一种更加宽松,灵活,轻量级的WebService,这就是Restfull API. Restfull是使用HTTP传输XML或JSON或任意格式的数据。这抛弃了WSDL, SOAP。

Java WebService

无论是WSDL+SOAP方式,还是Restfull方式,产生和解析传输数据实体,都是比较费代码的。于是Java提供了一种机制,可以帮助我们自动的产生传输数据,我们在编程的时候,只需要专注于服务接口的调用。这个帮助我们产生传输数据的就像是一个Proxy。在WSDL和SOAP模式下,Proxy可以根据WSDL产生相应的SOAP数据,也可以解析返回的SOAP数据。

014310_PBxp_254689.png

在J2EE 1.4时代,有JAX-RPC做proxy。后来从J2EE5开始,多了JAX-WS. 到了J2EE6,又有了JAX-RS.

当前开发WebService最常用的框架就是Axis2和Metro,也有用Spring-WS的。

Metro与Axis2

Metro是由sun,现在的oracle开发的服务栈,Metro只支持JAXB与JAX-WS,由于历史原因,也支持JAX-RPC。而Axis2不仅支持JAXB和JAX-WS,还支持其它所有可能的技术。所以,JAXB与JAX-WS技术几乎就是Metro的全部,而JAXB与JAX-WS只是Axis2的一方面,在Axis2下,也可以不适用JAX-WS。

在发布方面,Metro引擎需要被部署的webservice war包含sun-jaxws.xml。而Metro的servlet会为所有的webservice请求服务。

因为oracle的原因,我们接下来所学的均是Metro框架。https://metro.java.net/2.3/ 

下面是Metro对WebService的支持所指定的规范,其中J2EE部分是Proxy的实现,我们在开发的时候,会任选一个。XML部分是对XML使用的规范,这部分属于XML的知识范畴。

175242_qhUN_254689.jpg

后面的文章,我会从实例出发,描述WebService在Java的实现方式。



转载于:https://my.oschina.net/xpbug/blog/223276

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值