现在影响世界最重要的技术就要算是I n t e r n e t / I n t r a n e t了,
I n t e r n e t / I n t r a n e t不但改变了许多人的生活,也影响了世界运转的方式。各种商机
和软/硬件的发展也由I n t e r n e t / I n t r a n e t主导。I n t e r n e t / I n t r a n e t的出现也为软件的开
发方式带来了多元的形式,软件人员开始使用各种工具来开发I n t e r n e t / I n t r a n e t应
用系统。第一轮重要的技术革命是H T T P,它为I n t e r n e t / I n t r a n e t和电子商务都带
来了重要的影响。第二轮是J a v a语言的兴起,J a v a带来了跨平台的契机,让软
件人员可以使用J a v a在各种平台上使用单一的语言和环境便可以开发应用系统,
J a v a几乎提供了跨越平台的机会。第三轮则是X M L技术的兴起,它提供了标准
的数据封装技术,让数据的交换跨越了各种平台,操作系统和开发工具。通过
XML,各种应用程序在交换数据时再也不会是令人头痛的问题。
不管各种I n t e r n e t / I n t r a n e t应用系统
的实现技术为何,我们需要的是一种标准接口,能够让它们彼此可以调用和
使用对方提供的功能,或是服务,这就是Web Service的概念。
既然X M L提供了数据交换的标准,因此当不同的I n t e r n e t / I n t r a n e t应用系
统在互相集成时,就可以直接使用X M L技术来做为彼此沟通封装的标准。当
I n t e r n e t / I n t r a n e t应用系统需要调用彼此提供的服务时,不需要知道对方实现
的技术,只要以X M L封装彼此约定的服务进入点,就可以顺利地使用对方的
服务。这样不但达成了标准交换数据的机制,也可顺利使用X M L集成各种不
同的I n t e r n e t / I n t r a n e t应用系统。
这个概念可以使用图1 - 1来说明。例如当在Wi n d o w s平台上执行的A S P想
要使用在L i n u x平台上执行的服务时,只要双方约定了提供服务的标准接口,
那么A S P便可以使用X M L封装标准的调用,然后通过I n t e r n e t / I n t r a n e t传递到
远程的L i n u x中。而远方的L i n u x在收到这个以X M L封装的请求时,便可以解
析此X M L封装的信息,执行A S P需要的服务之后,再同样使用X M L封装执行
的结果,再传递回远方A S P。
当A S P收到L i n u x返回的X M L封装结果之后,再从X M L中取出执行结果
即可完成工作。
S O A P定义了如何交换类型和具有结构的信息,它是一个Wire Protocol并且使
用X M L做为封装信息的标准。而Web Service则是使用S O A P做为通信的标准,
并且提供外界标准的服务接口以便让各种客户端应用程序能够通过S O A P调
用服务接口,进而使用Web Service提供的功能。
由于S O A P只是一个Wire Protocol,因此在实际进行沟通时还是必须使用
特定的通信协议( Transport Protocol),例如H T T P、S M T P或是I I O P等。在
S O A P的功能规格中定义S O A P如何绑定使用H T T P进行实体的通信。
由于S O A P使用了X M L做为封装和交换信息的标准,因此可以在各种不
同的平台中使用,只要不同的平台支持并且能够解析和处理S O A P的封包。
由于S O A P只是一个定义如何交换数据的Wire Protocol,因此它可以使用现在
任何的标准通信协议做为实体沟通的机制。在S O A P的功能规格中是选择以
H T T P通信协议做为第一个实现的实体通信协议,因此由S O A P封装的信息可
以包含在H T T P的封包中进行沟通。
除了H T T P之外,软件厂商当然也可以实现其他的通信协议来传送S O A P
封包,例如C O R B A的厂商可以使用I I O P做为实体的通信协议。当然,其他的
通信协议也可以做为S O A P的实体通信协议,例如下一个最有希望被实现的
通信协议就是S M T P
由于S O A P选择了以H T T P做为第一个实现的传送通信协议,而H T T P又
是现在所有平台和操作系统都已经接受的标准通信协议,因此通过使用
S O A P和H T T P软件开发人员可以轻易地集成各种平台以及实现模型,包含了
C O M / M T S / C O M +、C O R B A和E J B等。
各种不同的客户端可以使用S O A P标准调用和
使用各种不同的后端平台提供的信息。对于客户端来说只需要使用S O A P这个
标准就可以进行远程服务的调用,而不需要知道后端是使用什么技术实现的
现在S O A P几乎已经被所有的实现语言所支持,例如J a v a有Class Library,
C / C + +有函数库,V B有MS Soap To o l k i t,D e l p h i有S o a p组件和向导等等。因
此现在软件开发人员就可以使用S O A P技术来集成异构平台,或是开发分布
式应用系统不过即使是如此,软件开发人员仍然面对一个非常困难的问题,
那就是虽然通过S O A P软件开发人员可以封装交换信息,但是不同的实现技
术如何调用其他实现技术提供的服务呢?
这个问题也就是引发软件服务观点的基础,也是Web Service要解决的问题。
虽然C O R B A是一个为了解决集成异构
平台的组件技术, 但是当C O R B A 要集成其他的组件模型时, 例如
C O M / C O M +,也需要各种B r i d g e技术来帮助。例如C O R B A -和COM Bridge软
件等。
但是这些B r i d g e技术通常都实现在特定的组件厂商之上,而且也限制用
户必须使用特定的组件模型版本等。此外B r i d g e软件通常也是属于特定厂商
第1章S O A P和Web Serv i c e的概念使用7 下载
的专属技术,并不是一个开放的标准。由于这些原因,因此要使用B r i d g e技
术在I n t e r n e t / I n t r a n e t这个多元的应用环境中是非常困难而且不切实际的。
基本上Web Service的概念是使用一个标准的输出接口来定义实现程序代
码提供的功能,以便让外界可以通过这个标准的输出接口来调用,而所谓的
标准的输出接口就是W S D L ( Web Service Description Language)。
W S D L是一个由X M L组成的文件,这个文件内容描述了实现程序代码对
外提供的函数原型,也就是各种可供调用的函数名称以及参数等信息。在实
现程序代码提供了W S D L之后,客户端就可以通过W S D L来调用实现程序代
码提供的服务
由于实现程序代码提供了W S D L之后,就可以接受外界的调用,因此实
现程序代码并不会区分是客户端调用或是其他的后端实现程序代码来调用。
只要是通过W S D L来调用,实现程序代码就可以提供它的服务
客户端通过S O A P封装需求信息,通过I n t e r n e t / I n t r a n e t传递到后端的服
第1章S O A P和Web Serv i c e的概念使用9 下载
务器,再通过Web Service服务接口调用后端的功能。由于S O A P是实现在
H T T P通信协议之上,因此可以调用到任何支持H T T P的平台并且能够轻易地
穿越防火墙,完成一些组件模型无法轻易完成的工作,例如D C O M便很困难
穿越防火墙。而当服务端处理完客户端的请求之后,就再使用S O A P封装返回的结果,
透过I n t e r n e t / I n t r a n e t返回给客户端。
只需要使用
S O A P和Web Service的技术就可以完成这个分布式计算的要求,不再需要任
何特定的专属技术,也不再受限于特定的操作系统和平台,也能够真正地集
成I n t e r n e t / I n t r a n e t上各种不同的实现平台。
由于I n t e r n e t / I n t r a n e t是一个多元化的计算
环境,是由各种不同的实现技术、平台和操作系统共同结合而成的。因此想
要结合I n t e r n e t / I n t r a n e t上不同实现技术提供的服务以组成一个网网相连的集
成计算环境,那么必须使用大家都接受的标准,来集成彼此的服务, S O A P
和Web Service就是在这种需求下产生的标准,而且迅速地成为大家都接受的
开放标准。