Web Service随笔。1 为什么出现Web Service?现在Internet的发展十分迅速,它从前的框架是“人来获取网络上的资源,比如:程序、文档等”。也就是说,现在的Web是以人为中心的,人来发送各种请求。而它的发展趋势将是主体从“人”转向“程序”,比如媒体播放器、浏览器等,也就是说“以应用程序中心”的Web。其实,在Web Service出现之前,人们就已经在做这方面的事情了,例如Java的Servlet和CGI,但是不同的程序系统采用了不同的数据定义,所以这些系统之间的交互变得异常地复杂。Web Service的出现,就是为了解决了不同应用程序之间通信的格式问题。2 Web Service的通信方式?XML通信有几种不同的方法,例如:XML Remote Procedure Calls (XML-RPC),SOAP或HTTP GET/POST。3 Web Service的属性。Web Service是在Internet上任何可用的服务,它是通过标准化的XML通信(XML Messaging)来实现的,并且不依赖于任何平台和任何编程语言。尽管不是必须的,但Web Service可能会有其他两个属性:A)可自描述的(self-describing).如果你编写Web Service,你应该发布Web Service的公共接口,至少有一个基于自然语言的文档。这样,别的开发者才能轻松地整合你的服务。B)可发现的(discoverable).其他和你的Web Service有关的程序(可能是分散的,也可能是集中的系统)能够找到它。4 Web Service 的架构Web Service有两种架构,一种是讨论Web Service每个功能角色(role),另一种是讨论Web Service的协议层(protocol stack)。就前者而言,Web Service有三个角色:服务提供者,服务请求者和服务注册机构。服务请求者从服务注册机构获得服务提供者,然后向服务提供者发出提供服务的请求。
就后者而言,Web Service有四层:服务传输层(Service transport)、XML通信层(XML messaging)、服务描述层(Service description)和服务发现层(Service discovery)。A) 服务传输层:负责信息在应用程序之间的传送。现在包括HTTP、FTP、SMTP和较新的如BEEP等协议。就现在而言,由于HTTP比较简单、稳定以及被广泛应用,而且大部分防火墙对HTTP协议的80端口是开放的,所以HTTP是服务运输层的最流行的协议。当然它会有一些安全上的隐患,因为HTTP协议的设计并不能满足Web Service的安全性。SOAP是不依赖于具体协议的,除了HTTP协议,它还可以通过FTP、SMTP等传输,比较有前途的是BEEP(Blocks Extensible Exchange Protocol)协议。BEEP协议属于TCP,它较HTTP的优势在于:除了TCP公共的握手外,它每次所带的报文头只需30个字节。B) XML通信层:负责用通用的XML格式对信息进行编码。现在包括XML-RPC和 SOAP.C) 服务描述层:负责用WSDL将公共接口向特定的Web Service描述。D) 服务发现层:负责将服务集中到公共注册机构,并且提供Web Service发布和寻找功能,现在服务发现是通过UDDI来实现的(Universal Description, Discovery, and Integration)。可见,Web Service采用可类似网络分层的结构,使各个层次的功能互补干扰,同时又能很好的互相合作。当然,随着Web Service的不断发展,可能会出现新的层次。我们可以看一下IBM的演示:http://awwebx04.alphaworks.ibm.com/ettk/demos/wstkdoc/README.htm我到微软注册了UDDI:http://uddi.microsoft.com接下来看一下XML请求下面是一段JAVA的SOAP调用:Soap Request:10016 SOAP Response:65而下面是.Net调用的SOAPSoap Request: 24 12 SOAP Response: 36 可以看出Xml通信的确是与平台、语言无关的一种方式。 WSDL:我认为说白了,就是一个应用程序的一个公共接口,回想我们调用一个Web Service的时候,我们事先知道它的方法、参数和返回值,但是具体如何实现,我们并不关心,这不就是我们通常所说的接口吗?所以WSDL就是一种XML格式的Web Service提供的公共接口。UDDI:UDDI的数据有三种:A) 白页。公司的基本信息B) 黄页。服务的基本信息C) 绿页。服务的技术信息,调用服务的地址。4 什么是SOAP?用W3C的话说,它什么也不是。它并没有被W3C正式承认。甚至连SOAP 1.1也只是Note的地位,意思是现在它在被W3C成员讨论。SOAP原意是简单对象进入协议(Simple Object Access Protocol),但是W3C对这个名字不太满意,因为这个解释没有表达清楚,但他们又不想换个名字,因为SOAP已经被开发者们熟悉并使用。所以,出现了奇怪的现象,SOAP的名字保留了,但是它并不代表任何东西。