从表面上来看,Web Service就是一个应用程序,它向外界暴露了一个能够通过Web进行调用的API。这就是说,能够使用编程的方法通过Web调用来实现某个功能的应用程序。
从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述和模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过web来调用。
Web Service是基于网络的、分布式的模块化组件;它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其它兼容组件进行互操作。它可以使用标准的互联网协议,Web Service平台是一套标准,它定义了应用程序如何在Web上实现互操作。
注意:
Web服务并不一定存在与WWW上,Web服务可以在网络的任何地方生存,互联网或局域网都行。
Web服务的实现、部署平台的细节与调用该服务的程序无关。Web服务可通过声明API和调用机制使用。这与Web浏览器和Web应用服务器之间的关系类似。
Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议包括:
XML和XSD。可扩展的标记语言XML是Web Service平台中表示数据的基本格式。除了容易建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是W3C创建,同时,W3C制定了XML Schema定义了一套标准的数据类型,并给出了一种语言来扩展这套类型。
Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB.NET或者c#、java来构建一个Web Service时,为了符合Web Service的标准,所有使用的数据类型都必须被转化为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如SOAP协议。
SOAP,SOAP即简单对象访问协议(Simple Object Access Protocol),它是用来交换XML编码信息的轻量级协议。它有3个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架;将程序对象编码成为XML对象的规则;执行远程过程调用(RPC)的约定。SOAP可以运行在任何传输协议上。
简单对象访问协议(Simple Object Access Protocol,SOAP)是一种在系统之间使用XML传递消息的协议。在SOAP出现之前,人们在系统之间使用CORBA、DCOM机制交互数据,这些机制都使用了人类无法认读的二进制数据传送消息,难以开发和调试。
SOAP使用文本形式的、开放的XML文档传送消息,可以使用超链接传输协议(HyperText Transfer Protocol,HTTP)、文件传输协议(File Transfer Protoclo,FTP)等网络协议传输,又利于促进各种异构分布式系统、各种编程语言实现之间的相互协作。SOAP一般用于将应用程序中的消息封装成通信报文,在分布式系统之间交换数据、调用异构系统对象的方法。随着Web服务的流行,SOAP的应用与日俱增。
Web Service希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
WSDL。Web Service描述语言WSDL就是机器能阅读的一个正式描述文档,它是基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
UDDI。UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
远程过程调用RPC与消息传递。Web Service本身其实是在实现应用程序的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一个位置上的透明:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在那台机器上。