Webservice/SOAP/WSDL释疑篇

What is Webservice?

从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。也就是说,可以利用编程的方法通过Web来调用这个应用程序。对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

Why Webservice?
Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性。随着异种计算机环境的不断增加,我们会更加经常的调用各种不同计算机体系中编写和发布的Web Services
关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。

Webservice与SOAP,WSDL的关系

简单的说,WSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们。WSDL 可描述某个 web service,连同用于此 web service 的消息格式和协议细节。

SOAP 是一种基于 XML 的简易协议,允许应用程序通过 HTTP 来交换信息。或者更简单地讲,SOAP 是用于访问 web 服务的协议。

Web services 可把您的应用程序转换为 web 应用程序。通过使用 XML,可以在应用程序间传送消息。

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议.它包括四个部分:

1)SOAP封装(envelop): 封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
2)SOAP编码规则(encoding rules): 用于表示应用程序需要使用的数据类型的实例;
3)SOAP RPC表示(RPC representation): 表示远程过程调用和应答的协定;
4)SOAP绑定(binding): 使用底层协议交换信息。

SOAP采用了已经广泛使用的两个协议:HTTP和XML。其中HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式,一个SOAP请求实际上就是一个HTTP POST请求。

Soap原理:

1)Soap其实是一个建立于HTTP上的上层协议(Wire Protocol电报协议,这里我觉得用上层协议更好一些)

2)使用Soap的目的是定义如何调用远程终端的中的服务(方法)。

3)Soap中用多个NameSpace标准来区别各个远程服务。

4)Soap中不仅可以封装简单的数据类型,还可以封装更加复杂的数据类型

所以有人说:Soap就是XML加HTTP。这描述虽然不准确,但的确可以概括Soap的基本意义。了解一项技术的原理,最好的方法莫过于站在一个开发它 的工程师角度来看这项技术。要实现基于Soap的架构,首先我们要知道数据是如何通过Soap传递到远程服务器端的,其大致流程如下:
首先,由客户端程序提出申请服务的要求,这个要求将被传递到客户端的处理机中,所有的申请的方法及方法所需要的参数被打成符合服务器服务标准格式的 Soap封包中(即一个符合服务器服务标准格式的XML封包),这个封包通过HTTP协议传送到服务器端,然后由服务器的XML解析器将Soap封包转化 为客户端申请的方法名及所有参数,再由编译器所提供的RTTI (RunTime Type Information)对应找到被申请的方法所在的调用堆栈地址,由服务器执行所需方法,再将方法返回的结果集通过处理机打包成XML封包传递回客户 端,由客户端解析器将结果解析输出。


不管你的Web service是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都一致。通常,你用你自己喜欢的语言来构建你的Web service,然后用SOAP Toolkit把它暴露给Web客户。于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如WAS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

Webservice History

Internet开发模式的演进

第一轮:HTTP,带来了Internet与电子商务

第二轮:Java,cross-platform,最早的RMI

第三轮:XML,标准的数据封装技术,各种App之间交换数据不再是难事。

但是问题来了,Java无法与异构的系统互联(例如ASP, PHP),虽然可以用XML交换数据但无法提供方法的调用。

第四代:突破不同实现技术的界限的力量 -> 同一的接口,我们的webservice

SOAP用来封装调用的服务,是使用XML座位信息的载体,可以cross-platform,但条件是各个平台都支持解析和处理SOAP。SOAP可以使用任何通信协议实体沟通,HTTP是目前最适合的。

标准的数据交换技术:XML

标准的封装调用服务:SOAP协议

使用的实体通信技术:HTTP

Internet应用系统之间约定彼此的服务:Webservice

不同应用系统如何找到它所需要的服务:UDDI???

服务具体的实现技术:Java,C,Ptyhon…

Webservice tutorial

IBM RAD工具非常强大,将开发、部署一个webservice的工作变成了点击鼠标的几下工作,按照下载的帮助就可以开发属于自己的第一个webservice了。

https://www6.software.ibm.com/dw/education/r/rconsumews/index.html