n
什么是Web Service?
Web Service是构建互联网分布式系统的基本部件。Web Services 正成为企业应用集成(Enterprise Application Integration)的有效平台。你可以使用互联网中提供的Web Service构建应用程序,而不必考虑这些Web Service是怎样运行的。
n
Web Service 三个基本技术
²
Web Service通过标准通信协议,在互联网上发布有用的程序模块(以服务的方式),目前大部分是用SOAP来作通信协议。
²
Web Service提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫作WSDL(Web Service Description Language)。
²
通常已发布的Web Service要注册到管理服务器,这样便于使用者查询和使用。这个是通过UDDI(Universal Discovery Description and Integration)来完成的。
n
为什么要用
Web Service
?
Web Servcie
最主要的优点是,使用不同程序和在不同系统平台上开发出来的程序,都可以相互通信。现在很多人在问:“不是
CORBA
和
DCE
也有那些优点吗?跟它们有什么不同呢?”。第一个不同点是,
SOAP
作为
Web Service
的基本通信协议,比它们简单地多,所以投入和使用的代价也是小的。现在不仅有很多大公司发布的
Web Service
,也有个人发布的。另一个不同点是,
Web Service
使用标准的互联网协议
-XML
、
HTTP
和
TCP/IP
。很多公司已经从实践当中对这些协议积累了丰富的经验,所以相比
CORBA
和
DCE
要交的学费要少地多。
如果把现有的应用程序以
Web Service
部件形式发布,可以帮助其他的公司(人)构件功能强大的应用程序。举个例子,你要开发一个采购系统,可以自动地获得供应商的报价,而且可以实时追踪送货过程。如果供应商已经发布了报价和送货这两个
Web Service
,那么你就可以直接使用它们,而不必自己开发这些功能了。
在未来,会出现更有趣的
Web Service
(现在做不到的),来帮助我们构建应用程序。
²
SOAP
SOAP
是
Web Service
的基本通信协议。因为
SOAP
与
DCOM
和
CORBA
在概念上有相同之处,所以很多人在问:“
SOAP
是怎样激活对象的?”或“
SOAP
在使用什么命名服务(
Naming Service
)?”。或许在执行
SOAP
的过程当中会用到这些,但这些并不在
SOAP
规范要考虑的范畴之内。
SOAP
只是定义
SOAP
消息的
XML
格式(
XML Format
),如果你用一对
SOAP
标记(
SOAP Elements
)把
XML
文档括起来,那么这个就是一个
SOAP
消息,这不是很简单吗?
SOAP
规范还定义了怎样用
XML
来描述程序数据(
Program Data
)
,
怎样执行
RPC
(
Remote Procedure Call
)。这些可选的规范是为了构建
RPC-style
的应用程序(客户端
SOAP
消息包含函数名和在函数中用到的参数,而服务器端
SOAP
消息包含执行函数之后的结果)。大多数
SOAP
解决方案都支持
RPC-style
应用程序,因为很多程序员已对
DCOM
或
CORBA
熟悉。
SOAP
还支持
Document-style
应用程序(
SOAP
消息只包含
XML
文本信息)。
Document-style
应用程序有很好的灵活性,所以很多用
RPC
很难构建的
Web Service
用这种方式构建。
最后
SOAP
规范还定义了
HTTP
消息是怎样传输
SOAP
消息的。这并不代表
SOAP
只能用
HTTP
来作为传输协议,
MSMQ
、
SMTP
、
TCP/IP
都可以做
SOAP
的传输协议。
很多大公司根据
SOAP
规范,都开发出了自己的
SOAP
解决方案。这些解决方案都是相对于某种语言。比如说
Microsoft SOAP toolkit2.0
把
COM
函数转换成
SOAP
消息,而
Apache toolkit
把
JAVA
函数转换成
SOAP
消息。这样难免带来一些兼容性问题。
现在
SOAP
的很多另人瞩目的特性已成为现实(
SOAP
已经运行于不同的硬件和软件平台),而且有
70
多个解决方案。之所以
SOAP
被人们所爱戴,是因为
SOAP
比其他同类技术(
CORBA
、
DCE
)简单易用。
安全性对于应用程序来说是很重要的。那么
SOAP
的安全性如何呢?对于把
HTTP
作为传输协议的
SOAP
来说是没有问题的,因为
HTTP
协议已经有很好的安全构架。那么用其他传输协议会出现安全问题吗?不是的,你不必担心,因为已经有这方面的规范了(
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-security.asp
)。
n
WSDL
WSDL
是一种
XML
文档,它定义
SOAP
消息和这些消息是怎样交换的。
IDL
(
Interface Description Language
)是用于
COM
和
CORBA
的,
WSDL
是用于
SOAP
的。
WSDL
是一种
XML
文档,所以我们可以阅读和编辑,但很多时候是用工具来创建、由程序来阅读。
举个例子,你要使用供应商的
Web Service
构建应用程序。你可以向供应商索取使用
Web Service
的范例,然后按照范例来构建应用程序。这样可能出现意料不到的错误,比如说,你在程序中使用的客户代码的数据类型是
integer
,而供应商使用的数据类型是
string.
。
WSDL
详细定义客户端消息的格式,需要什么样的参数,这样可以避免不必要的错误。
n
UDDI
UDDI
可以比喻成电话本,电话本里记录的是电话信息,而
UDDI
记录的是
Web Service
信息。你可以不把
Web Service
注册到
UDDI
。但如果要让全球的人知道你的
Web Service
,最好还是注册到
UDDI
。
UDDI
目录说明文件也是一个
XML
文档,它包括三个部分。“白页(
White Paper
)”说明提供
Web Service
的公司(人)信息,比如说名称、地址和联系方式等等。“黄页(
Yellow Paper
)”说明
UDDI
目录的分类,比如说金融、服务和印刷等等。“绿页(
green Paper
)”说明接口(
Web Service
提供的)的详细信息。
UDDI
提供多种查询方式,来帮助你找到需要的
Web Service
。如果你查询与财务有关的
Web Service
,那么
UDDI
会提供详细的信息。
n
参考资料
※本文是翻译了下面的文章
XML Web Service basics,
Roger Wolter
,
Microsoft Corporation
,
2001
年
12
月
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/webservbasics.asp