Web Services

Web services是通过网络工作的。你可以在网络上找到他们——所有的web services都有一个自描述信息,告诉你他有什么功能,以及调用每一个功能需要的参数。然后,当然了,你可以调用他们,通过RPC(Remote Procedure Call远程方法调用)等方式。

     

       如果你将你的web services发布在万维网上(大部分情况下如此),那么你和你的客户端必然是使用HTTP协议来实现数据传输的,因为HTTP协议的跨平台性,所以web services对客户端和服务器端的软硬件平台没有要求。可是具体的数据形式呢?比如我们的web services采用java编写,而客户端用vb编写,java和vb中的数据类型差异很大,比如int和Integer,为了消除语言间的鸿沟,Web services采用SOAP(Simple Object Access Protocol一般译为简单对象传输协议)作为数据传输的格式。



       SOAP实际上是由XML文档组成的,自然,XML文档具有平台无关性,并且其良好的结构也比较适合描述一般的数据。好了,HTTP + SOAP(XML),这就是web services跨平台,跨语言的秘密。

Web Services架构
       Web Serivecs架构提出了三个角色:服务提供者,请求者,代理者。



       关于服务提供者和请求者,相信无需多言,前者封装业务逻辑,提供功能;后者通过访问服务提供者调用相应功能,获取反馈结果。那么为什么请求者不直接访问服务提供者,而需要代理着这么一个中间层呢?



从技术上讲,代理者并不是一定要存在,然而,通过将监听请求,验证身份这些与业务逻辑无关的功能从服务提供者中独立出来,专门形成一个代理者,无疑可以让服务端的代码更简洁,更易维护。举例来说,女生小A想当歌星,第一步是去酒吧唱歌,因为这个时候还没有出名,联系她的人不多,小A自己就能安排所有的事宜。后来小A出名了,联系她的人络绎不绝,这是她会做一件所有明星都会做的事儿——为自己找一个经纪人。相信大家可以看出经纪人和代理者在功能上的相同之处。

Web Services标准
     Web services中使用了如下的标准

     SOAP     (Simple Object Access Protocol)

     WSDL    (Web Services Descriptio Language)

     UDDI     (Universal Description, Discovery and Integration)

     XSIL      (Web Services Inspection Language)   

     JAX-RPC(Java API for XML-based Remote Procedure Call)

     WS-I      (Web Services Interoperability)

    SAAJ      (SOAP with Attachments API for Java)

SOAP
       SOAP是一种中立的信息传递协议。SOAP消息都是XML格式的。虽然SOAP协议没有指明一定要用HTTP协议传输消息,但我们一般还是都采用HTTP协议发送请求的SOAP消息和回应的SOAP消息。



       SOAP消息的具体格式:每一个SOAP消息都有一个根元素Envelope(信封),它包含header和body两个部分。Header包含了上下文数据,可以不存在,而body包含了具体的消息,必须存在。下面是一个通过HTTP协议请求Borland公司股票价格的SOAP消息。





POST 网络地址 HTTP/1.1

Host: www.stock.com

Content-Type: text/xml; charset="utf-8"

Content-Length: SOAP消息长度

SOAPAction: "urn:stock-quote-services"w

<SOAP-ENV:Envelope xmlns:SOAP-ENV="命名空间" SOAP-ENV:encodingStyle="命名空间">

<SOAP-ENV:Body>

<m:GetLastTradePrice xmlns:m="Some-URI">

<symbol>Borland公司股票代码</symbol>

</m:GetLastTradePrice>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>






WSDL
       如果你提供了一个很好的web services,但是别人不知道你的web services能做什么,以及如何调用,那么它一点用都没有,我们必须为他写一个说明文档。WSDL就是做这个的,WSDL采用XML格式描述web services的用途,和调用它需要的参数,这样客户端就可以通过WSDL文件获致web services的信息。我觉得,你可以将WSDL文件理解成web services的使用说明书。

UDDI
       UDDI用来发布我们提供的web services,当我们写好了一个web services,并且为他建立了WSDL文件,剩下的事情宣传自己,让用户能够找到我们的web services。这个过程有点像电信的“黄页服务”,企业为了扩展自己的业务,将电话号码登记在黄页上,电信局免费将黄页送给用户,用户就可以在上面找到自己感兴趣企业的电话。UDDI就像黄页,如果web services分布在不同的主机上(比如做为客户端,我们想要的分别访问sohu提供的天气预报服务和sina提供的股票查询服务,我们没有必要直接去sohu或者sina的主机上去寻找服务,而是在提供UDDI服务的主机上寻找,这样,我们的程序就不用直接关联到sohu或者sina,提高了灵活性),那么一个集中管理信息的UDDI则十分重要。

WSIL
       WSIL的作用和UDDI是一样的,不同的是实现方法。UDDI是一种集中式的管理,将所有主机上的服务集中注册在一台服务器上;WSIL一般只搜索一个站点的提供的web service,然后提供查询服务。

JAX-RPC
       可以说,JAX-RPC是web services在java语言中的具体实现方式,客户端和服务器段代码都是通过JAX-RPC进行通讯的。

在实际的通讯过程中,JAX-RPC会自动在客户端生成Stubs代码,在服务器端生成Ties代码,然后客户端通过Stubs访问Ties,Ties访问web service调用具体方法然后返回值。stubs和ties都应用了代理模式。

WS-I
       对web services来说,最重要的是什么呢?性能?安全性?稳定性?如果答案是这些,那么web services也许根本没有存在的必要。请记住,web services诞生的目的是为了让运行在不同平台上的不同开发语言间,可以互相调用各自的方法,标准才是web services的生命。Web Services协作组织推出的WS-I就是这样的一套标准,它提供了一系列规范、测试工具、使用场景和简单的实例。

SAAJ
       一句话,SAAJ提供了Java语言通过internet传输XML文档的方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值