接上次,我们在使用web service之前,要先了解一下这么几个东东:
1、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)。
2、 wsdl
wsdl是一种xml文档,它定义soap消息和这些消息是怎样交换的。idl(interface description language)是用于com和corba的,wsdl是用于soap的。wsdl是一种xml文档,所以我们可以阅读和编辑,但很多时候是用工具来创建、由程序来阅读。
举个例子,你要使用供应商的web service构建应用程序。你可以向供应商索取使用web service的范例,然后按照范例来构建应用程序。这样可能出现意料不到的错误,比如说,你在程序中使用的客户代码的数据类型是integer,而供应商使用的数据类型是string.。wsdl详细定义客户端消息的格式,需要什么样的参数,这样可以避免不必要的错误。
3、 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会提供详细的信息。
只是一点点而已,如查想了解更多请参考资料
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(本文是翻译了下面的文章)
原文:http://www.trueobject.net/board/zboard.php?id=web_service_lecture&no=2
新闻热点
疑难解答