Web服务概念性体系结构(WebServicesConceptualArchitecture)WSCA1.0第1部分级别:初级HeatherKreger,,IBMSoftwareGroup2001年5月01日本文从组件、交互以及应用程序开发模式的观点描述了Web服务的体系结构。该体系结构是IBM实例化Web服务方法的蓝图。它是构建和部署Web服务应用程序的框架。本文中提到的体系结构包括对Web服务需要的组件和功能的高级描述,以及对实现这些组件和功能的工具和中间件的要求。现在,诸如IBMXMLandWebServiceDevelopmentEnvironment、IBMWebServiceToolkit以及IBMWebSphereApplicationServer之类的产品中已经有了一些功能。将来这些产品以及其它产品会实现另外的功能。但是,组件、功能或要求在本文中出现并不保证会在未来的IBM产品中实现。目标读者Web服务的早期采用者和实现者。IBM公司以外的评估IBMWeb服务方法的技术评论家。Web服务概览这一部分对Web服务作为一种应用集成技术加以简要评论,定义web服务一词并描述Web服务模型。Web服务:电子商务的新天地Web是为了程序到用户的交互,而Web服务是为程序到程序的交互做准备。Web服务使公司可以降低进行电子商务的成本、更快的部署解决方案以及开拓新机遇。达到这个新天地的关键在于通用的程序到程序通信模型,该模型应建立在现有的和新兴的标准之上,例如,HTTP、可扩展标记语言(ExtensibleMarkupLanguage,XML)、简单对象访问协议(SimpleObjectAccessProtocol,SOAP)、Web服务描述语言(WebServiceDescriptionLanguage,WSDL)以及通用描述、发现和集成(UniversalDescriptionDiscoveryandIntegration,UDDI)。Web服务使应用程序的集成比以前更快、更容易而且更便宜。集成在协议栈中较高层发生,它基于更注重服务语义而不那么注重网络协议语义的消息,从而实现了业务功能的松散集成。这些特性对于在企业之间和企业内部通过Web连接业务功能是非常理想的。它们提供一种一致化编程模型,从而在企业内外都可以利用通用的基础设施并以一种通用的方法进行应用程序集成。利用现有的语言和平台以及旧应用程序,可以以一种增量的方式来集成和应用Web服务。此外,Web服务遵循Java2平台,企业版(Java2Platform,EnterpriseEdition,J2EE)、通用对象请求代理体系结构(CommonObjectRequestBrokerArchitecture,CORBA)以及其它针对与耦合较紧的分布式或非分布式应用程序集成的标准。Web服务是部署并提供通过Web访问业务功能的技术;J2EE、CORBA和其它标准是实现Web服务的技术。尽管Web服务早先是类似对等的并且是专用的,但它仍能解决程序到程序通信的整个问题,包括描述、发布和查找接口。而且,随着Web服务的使用越来越多以及行业的成熟,将会有更多的应用程序集成的动态模型发展起来。最终,通过Web服务进行系统集成将会在运行时动态发生。即时集成将宣布通过因特网进行企业到企业集成的新纪元的到来。Web服务的定义Web服务是描述一些操作(利用标准化的XML消息传递机制可以通过网络访问这些操作)的接口。Web服务是用标准的、规范的XML概念描述的,称为Web服务的服务描述。这一描述囊括了与服务交互需要的全部细节,包括消息格式(详细描述操作)、传输协议和位置。该接口隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。这允许并支持基于Web服务的应用程序成为松散耦合、面向组件和跨技术实现。Web服务履行一项特定的任务或一组任务。Web服务可以单独或同其它Web服务一起用于实现复杂的聚集或商业交易。Web服务模型Web服务体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于Web服务构件:Web服务软件模块及其描述。在典型情况下,服务提供者托管可通过网络访问的软件模块(Web服务的一个实现)。服务提供者定义Web服务的服务描述并把它发布到服务请求者或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web服务实现或同它交互。服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。图1图示了这些操作、提供这些操作的组件及它们之间的交互。图1.Web服务角色、操作和构件Web服务体系结构中的角色服务提供者。从企业的角度看,这是服务的所有者。从体系结构的角度看,这是托管访问服务的平台。服务请求者。从企业的角度看,这是要求满足特定功能的企业。从体系结构的角度看,这是寻找并调用服务,或启动与服务的交互的应用程序。服务请求者角色可以由浏览器来担当,由人或无用户界面的程序(例如,另外一个Web服务)来控制它。服务注册中心。这是可搜索的服务描述注册中心,服务提供者在此发布他们的服务描述。在静态绑定开发或动态绑定执行期间,服务请求者查找服务并获得服务的绑定信息(在服务描述中)。对于静态绑定的服务请求者,服务注册中心是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请求者。同样,服务请求者可以从服务注册中心以外的其它来源得到服务描述,例如本地文件、FTP站点、Web站点、广告和服务发现(AdvertisementandDiscoveryofServices,ADS)或发现Web服务(DiscoveryofWebServices,DISCO)。Web服务体系结构中的操作对于利用Web服务的应用程序,必须发生以下三个行为:发布服务描述、查询或查找服务描述以及根据服务描述绑定或调用服务。这些行为可以单次或反复出现。这些操作具体为:发布。为了使服务可访问,需要发布服务描述以使服务请求者可以查找它。发布服务描述的位置可以根据应用程序的要求而变化(请参阅“服务发布”以了解更多细节)。查找。在查找操作中,服务请求者直接检索服务描述或在服务注册中心中查询所要求的服务类型(请参阅“服务发现”以了解更多细节)。对于服务请求者,可能会在两个不同的生命周期阶段中牵涉到查找操作:在设计时为了程序开发而检索服务的接口描述,而在运行时为了调用而检索服务的绑定和位置描述。绑定。最后需要调用服务。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系和调用服务,从而在运行时调用或启动与服务的交互。Web服务的构件服务。在这里,Web服务是一个由服务描述来描述的接口,服务描述的实现就是该服务。服务是一个软件模块,它部署在由服务提供者提供的可以通过网络访问的平台上。服务存在就是要被服务请求者调用或者同服务请求者交互。当服务的实现中利用到其它的Web服务时,它也可以作为请求者。服务描述。服务描述包含服务的接口和实现的细节。其中包括服务的数据类型、操作、绑定信息和网络位置。还可能包括可以方便服务请求者发现和利用的分类及其它元数据。服务描述可以被发布给服务请求者或服务注册中心。Web服务体系结构解释了如何实例化元素和如何以一种可以互操作的方式实现这些操作。Web服务开发生命周期Web服务开发生命周期包括了设计和部署以及在运行时对服务注册中心、服务提供者和服务请求者每一个角色的要求。每个角色对开发生命周期的每一元素都有特定要求。服务注册中心的开发和部署不在本文的范围以内。开发生命周期有以下四个阶段:1.构建生命周期的构建阶段包括开发和测试Web服务实现、定义服务接口描述和定义服务实现描述。可以通过创建新的Web服务、把现有的应用程序变成Web服务和由其它Web服务和应用程序组成新的Web服务提供Web服务的实现。2.部署部署阶段包括向服务请求者或服务注册中心发布服务接口和服务实现的定义,以及把Web服务的可执行文件部署到执行环境(典型情况下,Web应用程序服务器)中。3.运行在运行阶段,可以调用Web服务。在此,Web服务完全部署、可操作并且服务提供者可以通过网络访问服务。现在服务请求者可以进行查找和绑定操作。4.管理管理阶段包括持续的管理和经营Web服务应用程序。安全性、可用性、性能、服务质量和业务流程问题都必须被解决。体系结构概览我们可以在几个层中讨论IBMWeb服务。首先,我们将看看Web服务的一个概念性协议栈以及这个协议栈的细节。然后我们将讨论选择网络协议的标准。我们还将回顾一下基本的基于XML的消息传递分布式计算。我们将用服务描述扩展基本的XML消息传递,而服务描述是根据它的协议栈来解释的。接下来,我们将讨论服务描述在Web服务体系结构中的角色,说明支持静态和动态Web服务应用程序的服务发布技术的范围。我们还将围绕服务发布讨论服务发现的角色。最后,我们将描述基本Web服务体系结构的扩展,电子商务需要这些扩展才能使用Web服务。Web服务协议栈要以一种可互操作的方式执行发布、发现和绑定这三个操作,必须有一个包含每一层标准的Web服务协议栈。图2展示了一个概念性Web服务协议栈。上面的几层建立在下面几层提供的功能之上。垂直的条表示在协议栈中每一层必须满足的需求。左面的文本表示协议栈的那一层所应用的标准技术。概念性Web服务协议栈图2.Web服务概念性协议栈Web服务协议栈的基础是网络层。Web服务要被服务请求者调用,就必须是可以通过网络访问的。因特网上可以公用的Web服务使用普遍部署的网络协议。HTTP凭借其普遍性,成为了因特网可用的Web服务真正的标准网络协议。Web服务还可以支持其它因特网协议,包括SMTP和FTP。内部网域可以使用可靠消息传递和调用基础结构,如MQSeries和CORBA等等。本文的“网络层”部分将更详细地描述这个层。下一层是基于XML的消息传递,它表示使用XML作为消息传递协议的基础。选择SOAP作为XML消息传递协议有很多原因:它是使用XML传送以文档为中心的消息以及远程过程调用的标准化封装机制。SOAP很简单;它基本上是一个用XML信封作为有效负载的HTTPPOST。SOAP比对XML简单的HTTPPOST更受青睐,因为它定义了一个标准机制,这个机制将正交扩展(orthogonalextension)合并为使用SOAP报头和对操作或函数进行标准编码的消息。SOAP消息支持Web服务体系结构中的发布、查找和绑定操作。“基于XML消息传递的分布式计算”部分将更详细地描述这一层。服务描述层实际上是描述文档的一个协议栈。首先,WSDL是基于XML的服务描述的真正标准。这是支持可互操作的Web服务所需的最小标准服务描述。WSDL定义了服务交互的接口和结构。要指定业务环境、服务质量和服务之间的关系,我们还需要另外的描述。WSDL文档可以由其它服务描述文档来补充,从而描述Web服务的这些更高级的方面。例如,描述业务环境除了使用WSDL文档,还要使用UDDI数据结构。Web服务流程语言(WebServicesFlowLanguage,WSFL)文档中则描述了服务组成和流程。“服务描述:从XML消息传递到Web服务”部分更详细地描述了这一层。因为Web服务被定义为可以通过SOAP从网络进行访问,并由服务描述表示,所以该协议栈中的前三层需要提供或使用Web服务。最简单的协议栈将包括网络层的HTTP、XML消息传递层的SOAP协议以及服务描述层的WSDL。所有企业间或公用Web服务都应该支持这种可互操作的基础协议栈。Web服务,特别是企业内部或专用Web服务,能够支持其它的网络协议和分布式计算技术。图3描述了可互操作的基础协议栈。图3.可互操作的基础Web服务协议栈图3中描述的协议栈提供了互操作性,它使Web服务能够利用现有的因特网基础结构。这将使进入普遍存在的环境的成本非常低。灵活性并不会因