W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果”。Web Service(Web 服务)是解决应用程序之间相互通信的一项技术。严格地说Web 服务是描述一系列操作的接口,它使用标准的、规范的 XML 描述接口。这一描述中包括了与服务进行交互所需要的全部细节,包括消息格式、传输协议和服务位置。而在对外的接口中隐藏了服务实现的细节,仅提供一系列可执行的操作,这些操作独立干软、硬件平台和编写服务所用的编程语言。Web 服务既可单独使用,也可与其他 Web服务一起,实现复杂的业务功能。
Web服务模型
在 Web 服务模型的解决方案中,一共有三种工作角色,其中服务提供者(服务器)和服务请求者(客户端) 是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了Web 服务的架构,如图所示。
Web服务模型
(1)服务提供者。即 Web 服务的所有者,该角色负责定义并实现 Web 服务,使用WSDL(Web Service Description Language,Web 服务描述语言)对 We 服务进行详细准确、规范的描述,并将该描述发布到服务注册中心供服务请求者查找并绑定使用。
(2)服务请求者。即 Web 服务的使用者,虽然 Web 服务面向的是程序,但程序的最终使用者仍然是用户。从架构的角度看,服务请求者是查找、绑定并调用服务,或与服务进行交互的应用程序。服务请求者角色可以由浏览器来担当,由人或程序(如另外一个Web 服务)来控制。
(3)服务注册中心。服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布他们的服务描述,而服务请求者在服务注册中心查找他们需要的Web 服务不过,在某些情况下,服务注册中心是整个模型中的可选角色,如使用静态绑定的 Web服务,服务提供者可以把描述直接发送给服务请求者。
对于 Web 服务模型中的操作,包含以下三种,发布服务描述、查找服务描述、根据服务描述绑定或调用服务。这些操作可以单次或反复出现。
(1)发布。为了使用户能够访问 web 服务,服务提供者需要发布服务描述使得服务请求者可以查找它。
(2)查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心查询所要求的服务类型。对于服务请求者,可能会在生命周期的两个不同阶段中牵涉到查找操作,它们分别是:在设计阶段,为了程序开发而查找服务的接口描述;在运行阶段,为了调用而查找服务的位置描述
(3)绑定。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系并调用服务,从而在运行时与服务进行交互。绑定可以分为动态绑定和静态绑定。在动态绑定中,服务请求者通过服务注册中心查找服务描述,并动态地同 Web 服务交互;在静态绑定中,服务请求者实际已经同服务提供者达成默契,通过本地文件或其他的方式直接同Web服务进行绑定
Web服务协议堆栈
2004年2月11日,W3C提出了最新的Web Service 协议栈,其内容如图所示在Web 服务协议堆栈的下层为网络通信部分,Web 服务继承了 Web 的访问方式使用HTTP(S)作为网络传输的基础。除此之外,Web 服务还采用了其他的传输协议,如SMTP、FTP、JMS和IIOP等。在消息处理方面,Web 服务使用了SOAP(Simple Obiect Access Protocol,简单对象访问协议)作为消息的传送标准。在此之上是 WSDL,用以描述 Web 服务的访问方法。位于最顶层的是与 Web 服务和应用程序以及 Web 服务之间相互集成相关的协议,其中包含发现、集成等若干方面。除了底层的传输协议外,整个Web 服务协议栈是以XML 为基础的,XML 语的精确性和灵活性赋予了 Web 服务强大的功能。除这些基本协议外,还有一些需要讨论的问题,那就是安全和管理,这两大问题不是 Web 服务可以独立解决的,例如,在安全方面就需要与 PKI(Public KeyInfrastructure,公共密钥基础设施)、LDAP (Lightweight Directory Access Protocol,轻量目录访问协议)等相结合
Web服务协议栈
(1)SOAP。SOAP 是一种基于XML 的协议,通过SOAP,应用程序可以在网络中进行数据交换和远程调用。SOAP 使用XML进行编码,是一个开放式的协议。SOAP本身并没有定义信息的语义、服务质量和事务处理等问题。SOAP 仅仅是一个对象通信协议,与应用平台完全无关。可以将 SOAP 理解为HTTP+XML+RPC(Remote ProcedureCall远程过程调用)。在这里面,HTTP 是网络中的通信协议:XML 是数据格式的协议显然将SOAP理解为RPC的一种并不准确因为SOAP并非单纯的远程进程调用SOAP要强大得多。但以 RPC 的观点看待 SOAP,有助于我们理解 SOAP。由于 SOAP 采用XML和HTTP封装通信消息所以SOAP需要增加XML解析和HTTP传输的额外开销
(2)WSDL。WSDL包含了一套基于 XML的语法,将 Web 服务描述为能够进行消息交换的服务访问点的集合,从而满足了这种需求。WSDL 定义了可被机器识别的SDK(Software Development Kit,软件开发工具包)文档,同时,WSDL也可用于描述自动执行应用程序在通信中所涉及的细节问题。WSDL的目标是描述如何使用程序来调用Web服务,所以可以把 WSDL理解为 Web 服务的SDK 标准,或者是Web 服务的接口定义。对于服务提供者来说,他们既需要描述提供的 Web 服务是做什么的,还要描述如何使用他们提供的Web 服务。
(3)UDDI(Universal Description Discovery and Integration,统一描述发现和集成)UDDI提供了一种 Web 服务的发布、查找和定位方法。可以将UDDI理解为一种目录服务,Web 服务提供者使用UDDI将服务发布到服务注册中心,而 Web 服务使用者通过UDDI查找并定位服务。UDDI除了目录服务之外,还定义了一个用 XML表示的服务描述标准。UDDI定义了一种 Web 服务的发布方式。首先,UDDI商业注册中心可以为程序或程序员提供 We 服务的位置和技术信息。服务提供者可以向专用的UDDI节点发布服务的描述信息,而服务的使用者可以动态地查询并连接到特定的 Web 服务。
Web服务架构的优势
Web 服务是近年来提出的一种新的面向服务的架构,同传统分布式架构相比,Web服务架构的主要优势体现在以下4个方面。
(1)高度的通用性和易用性。Web 服务利用标准的Internet协议(如HTTP、SMTP等),解决了面向 Web 的分布式计算模型,提高了系统的开放性、通用性和可扩展性;而CORBA、DCOM和EJB 等使用私有协议,只能解决企业内部对等实体间的分布式计算。此外,HTTP 能够很容易地跨越系统的防火墙,具有高度的易用性。
(2)完全的平台、语言独立性。Web 服务进行了更高程度的抽象,只要遵循 Web服务的接口即可进行服务的请求和调用。Web 服务将 XML 作为信息交换格式,使信息的处理更加简单,厂商之间的信息很容易实现沟通,这种信息格式最适合跨平台应用。此外,Web 服务基于 SOAP 协议进行远程对象访问可以通过各种开发工具来具体实现而不需要绑定到特定的工具上,这很容易适应不同客户、不同系统平台以及不同的开发平台。而CORBA、DCOM和EJB 等模型要求在对等架构间才能进行通信。
(3)高度的集成性。Web 服务实质上就是通过服务的组合来完成业务逻辑的,因此表现出高度的组装性和集成性。可以说,集成性是 Web 服务的一个重要特征。Web 服务架构是建立在服务提供者和使用者之间的松耦合之上的,这样使得企业应用易于更改。相对于传统的集成方式,Web 服务集成体现了高度的灵活性。Web 服务还可以提供动态的服务接口来实现动态的集成,这也是传统的 EAI解决方案所不能提供的。
(4)容易部署和发布。web 服务架构方案通过UDDI、WSDL和SOAP 等技术协议很容易实现系统的部署。