首页 > 代码库 > web service概念、架构及相关知识
web service概念、架构及相关知识
一、WebService的定义
WebService有好几种定义:
- W3C组织对其定义:WebService是一个软件系统,为了支持跨网络的机器间互操作交互而设计。
- WebService通常被定义为一组模块化的API,我们能够通过网络进行调用,来运行远程系统的请求服务。
- WebService就是暴露给外部使用的,可通过web调用的一组API。
- WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
- Web Service = XML+XSD,SOAP和WSDL
事实上这多种定义仅仅是从不同的角度。不同的高度来理解WebService,终于都殊途同归。
从表面上看,WebService是应用程序暴露给外部的一个能够通过Web调用的API。它告诉我们:这里有一组对象。它有哪些方法,方法名称是什么。所须要的參数是什么。參数类型怎样,方法会给你返回什么值。可能会出现哪些异常。你怎么调用它。使用什么通信协议来数据传输等等这些信息。这样就能够通过编程的方法调用这种方法。获得这个WebService所提供的服务。这解释了2,3两种定义。这是WebService的外在表现形式。
从深层次来讲,WebService是构建分布式系统,实现可互操作的新的技术架构。是一个平台,是一套标准。
它定义了怎样在网络上实现互操作性,而无论你使用的是哪种语言。哪种操作系统。它最大的特点就是跨网络,跨平台。实现互操作性是它的目的。而互操作性就是指在网络间的不同机器之间进行相互操作,否则同一个网络。同一个机器之间须要什么互操作性吗。
W3C的定义中,机器二字就暗示着无论是windows系统,还是苹果系统还是Linux系统。无论机器上是使用Java还是C,C#语言等,都能够实现互操作。这是WebService的内在价值。是一种更高,更深层次的系统架构。
WebService为了构建这样一个跨语言的,跨网络的分布式平台。它必须提供一套协议或者说标准。不论什么一个平台都有它自己的数据表示方法和数据类型系统。它必须提供一个统一的类型系统,以沟通不同语言,不同平台,不同组件模型的差异,使它们能够交流。
它还必须提供一套标准来描写叙述WebService,让客户能够得到足够且充分的信息来调用它。
最后,它须要提供一种远程调用方法,告诉client以什么样的格式或者说方式来调用webService。
这正好对应了WebService的三大技术:XML+XSD,WSDL,SOAP。
Web Service = XML+XSD,SOAP和WSDL这是从技术实现层面上来说明WebService
WebServices与WebService
初看,似乎一个是复数形式。一个是单数形式。然而。WebServices指的是用于架构WebService的总体技术框架,WebService表示使用WebServices技术框架而创建的应用实例。
当然有时候WebServices也表示详细的应用实例,仅仅只是这时是泛指(复数)。有时候WebService也表示用于架构服务的总体技术框架。所以这两个词所表示的含义须要通过语境来确定,阅读文档时需注意。
二、WebService平台技术
XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
XML+XSD
WebService採用HTTP协议数据传输,採用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法。传递的參数是什么,以及服务对象的返回结果是什么)。XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML基本的优点在于它既是平台无关的。又是厂商无关的。
无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。
XML攻克了数据表示的问题,但它未定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。
比如,整形数究竟代表什么?16位,32位,64位?这些细节对实现互操作性非常重要。XML Schema(XSD)就是专门解决问题的一套标准。
它定义了一套标准的数据类型。并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。
当你用某种语言(如.NET或Java,C语言)来构造一个Web service时,为了符合WebService标准。全部你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自己主动帮你完毕了这个转换
SOAP:
WebService通过HTTP协议发送请求和接收结果时,必须要有一定的格式,并非说通过Http随便发送一个请求就能够的。发送的请求内容和结果内容都採用XML格式封装,并添加了一些特定的HTTP消息头。以说明HTTP消息的内容格式。这些特定的HTTP消息头和XML内容格式就是SOAP协议。
SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式。SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
Http是基本协议,而SOAP在基础协议上加入了一系列的格式限制。打个比喻:HTTP就是普通公路。XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的快速公路。
WSDL:
WebServiceclient要调用一个WebService服务,首先要先知道这个服务的地址在哪。以及这个服务里有什么方法能够调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务能够对外调用。服务是什么(服务中有哪些方法,方法接受的參数是什么。返回值是什么),服务的网络地址用哪个url地址表示。服务通过什么方式来调用。WSDL是WebService的描写叙述。
就好比你买了一辆散装自行车,总得附一个产品说明书吧。告诉你怎么把自行车怎么组装起来。各个零件的作用.
WSDL(Web Services Description Language)就是这样一个基于XML的语言。用于描写叙述Web Service及其函数、參数和返回值。它是WebServiceclient和server端都能理解的标准格式。
由于是基于XML的。所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个非常大的优点。
一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用对应WebService的代理类代码。
WSDL文件保存在Webserver上。通过一个url地址就能够訪问到它。
client要调用一个WebService服务之前。要知道该服务的WSDL文件的地址。WebService服务提供商能够通过两种方式来暴露它的WSDL文件地址:1.注冊到UDDIserver,以便被人查找。2.直接告诉给client调用者。
三、WebServices体系架构模型
WebService体系结构基于三种角色(服务提供者,服务注冊中心。服务请求者)之间的交互。交互详细涉及到公布、查找和绑定操作。服务提供者提供WebService描写叙述而且将服务公布到服务请求者或者服务注冊中心。服务请求者使用查找操作从本地或者服务注冊中心搜索服务描写叙述,然后使用服务描写叙述与服务提供者绑定,并调用对应的WebService实现、同它交互。服务注冊中心是一个Web服务的注冊地,汇集了非常多在线的Web服务一般来说服务提供者将Web服务安装到在线server之后,会将Web服务公布到服务注冊中心去,从而使得服务注冊中心包括了越来越多的Web服务的技术信息。
眼下,服务注冊中心即为UDDI商业注冊中心。
服务提供这和服务请求者角色是逻辑结构,下图展示了这三者之间的关系和交互。
- 服务提供者(Service Provider)
从企业的角度来看。这是服务的全部者。从体系结构的角度看,这是托管被訪问服务的平台。
- 服务请求者(Service Requestor)
从企业的角度来看。这是要求满足特定要求的企业。从体系结构的角度来看。这是寻找并调用服务、或启动与服务交互的应用程序。服务请求者角色能够由浏览器来担当,有人或这无界面的应用程序(比如:还有一个WebService)来控制它。
- 服务注冊中心(Service Registry)
这是可搜索的服务描写叙述注冊中心。服务提供者在此公布他们的服务描写叙述。在静态绑定开发或动态绑定运行阶段,服务请求者在这里查找服务并获取服务的绑定信息(在服务描写叙述中)。
对于静态绑定的服务请求者,服务注冊中心是可选的。由于服务提供者能够把服务描写叙述直接发送给服务请求者。
相同服务请求者也能够从服务注冊中心以外的其它来源中获得服务描写叙述。比如:本地文件,FTP网站,Web网站、ADS文本文件(Advertisement and Discovery of Services)或者DISCO文件(Discovery of WebServices)。
四、WebServices协议栈
前面说道,WebService为了构建一个跨语言的,跨网络的分布式平台。也为了保证在基本訪问之上的事务、工作流、安全机制等。它必须提供一套协议或者说标准。
下图展示了一个概念性的WebServices协议栈。
上层建立在下层协议提供的功能之上。
网络传输层
WebService协议栈的基础是网络传输层。
WebService要想被服务请求者调用。就必须是能够通过网络进行訪问的。Internet上能够訪问的WebService採用已经普遍部署的网络协议:HTTP。当然在一些特殊应用上,WebService也支持FTP协议(文件传输),和SMTP协议(电子邮件)。而对于Intranet上,WebServices也支持採用中间件来作为传输交互的基础架构,比如IBM的MQ Series(已改名为MQ)和CORBA(Common Object Request Broker Architecture)
WebService的优势之中的一个就是能够为Internet和Intranet上的服务开发和使用提供统一的编程模型。
因此对于开发人员来说,网络协议和技术的选择是透明的。
数据表现层
数据表现层的XML为WebServices上层协议提供了信息、数据描写叙述手段。XML是眼下全球范围内描写叙述数据和交换数据的一种标准方式。
在WebServices的时代,全部的规范、技术都是以XML为底层核心和构架基础的。
对WebServices而言。无论是WebService的调用(SOAP技术),还是WebService的界面描写叙述(WSDL技术),还是WebService的发现(UDDI技术)都是将XML作为信息描写叙述和交换的标准方式。
数据模型层
在数据表现层之上是数据模型层。描写叙述数据结构的数据模型(也就是元数据),它本身也是一种数据。因此,描写叙述数据结构的方式也是使用WebServices标准的数据表现方式:XML。
XML Schema是XML世界中标准的数据建模语言,SOAP、WSDL、UDDI的语法都是通过XML Schema来定义和描写叙述的。XML Schema已经成为XML世界中的标准交流工具,相似于软件设计中的UML。
基于XML的消息层
在这一层此,WebServices使用的是基于XML的消息交换协议SOAP。SOAP是构建于更低的传输层之上,这意味这SOAP能够单独使用,也能够与不论什么传输层协议进联合使用。全部的SOAP消息都提供前面说过的WebService架构中的公布(Publish)、绑定(Bind)、和查找(Find)功能。
SOAP由三个部分组成:
- 一个使用XML信封来描写叙述消息内容的机制
- 一组编序规则,用来编码各种各样的数据格式
- 一个提供远程过程调用(RPC)和响应的机制
服务描写叙述层
服务描写叙述为调用WebService提供了详细的方法。它是基于XML格式的用于定义和描写叙述WebService服务的实现和接口的基础标准。这也表示WSDL将服务描写叙述为两个部分:服务实现和服务接口。在依照WSDL进行服务实现之前,我们必须先定义服务接口。
WSDL仅仅是服务的基本描写叙述手段。要指定业务环境、服务质量和服务之间的关系。我们还须要另外的描写叙述手段。
服务公布层
WSDL文档仅仅是服务的基本描写叙述手段。它能够通过其它服务描写叙述文档来补充,以描写叙述WebServices比如业务环境,服务质量等更高级的信息。
在服务客户生命周期内的任一阶段,都能够将WSDL文档发送给WebService的client。当这一操作被涉及后,我们就须要从服务描写叙述层进入到下一个服务层次的服务公布层。
在这一层次,服务提供者能够向服务client发送WSDL文档。一个可能的样例是通过Email的形式。
同一时候,服务提供者也能够将WSDL公布到本地的UDDI库中,或者是公共/私有的UDDI服务注冊中心,服务client能够通过注冊库发现WSDL文档。
服务发现层
服务发现层基于服务公布层。假设服务没有公布或者不能公布,它就不能被发现。
服务client也能够选择在设计阶段或运行时阶段通过本地WSDL服务注冊中心或者公有/私有的UDDI注冊中心发现WSDL文档。
服务工作流层
WebServices工作流语言(WSFL)是协议栈顶层的服务工作流层的标准语言。与协议栈中其它的标准不同,WSFL针对的是商务流程建模和工作流。WSFL用于描写叙述WebService在工作流中怎样交互,以及服务跟服务之间的通信和协同。这意味这WebService能够是工作流的一部分。也能够动态地被编入工作流。特别是,这个工作流有可能发生在买方,卖方和承运方之间。
比如WSFL同意工作流管理器从一个复合WebServices中,按工作流来定义根据商业流程赋予的不同功能的,作为其成分的每一个个体WebService。这种商业流程包括財务报表、预測和5年IT计划等。
web service概念、架构及相关知识