二、面向服务的软件工程刘进mailjinliu@yahoo.com2.1概念和背景2.2面向服务的架构SOA2.3语义互操作2.4服务案例2.5服务开发方法2.6云计算中的服务2.7高级专题提纲2什么是服务?•Web服务的定义[W3C]:Web服务(Webservice)应当是一个软件系统,用以支持网络间不同机器的互动操作。Web服务是一个用URI(UniformResourceIdentifier)标识的软件实体,其接口和绑定可以用XML协议定义、描述和发现。Web服务通过Internet协议以基于XML消息,以松散耦合的方式与其它软件实体或Web服务直接通讯。3Web服务的兴起•Web服务作为一种新兴起的技术,被称为继PC和Internet之后的第三次计算机革命•Web服务利用标准的Internet协议(如HTTP,SMTP等),解决了面向Web的分布式计算的通信问题,而传统的分布式模型解决的是特定平台下的通信问题。•Web服务具有完全的平台独立性和语言独立性,只要遵守WebService的接口即可进行服务的请求和调用。4Web服务的主要思想•以后的应用将由一组在线服务组合而成。两个相似的服务使用统一的标准和方法在网络上发布,一个信息应用就可以按照代价或性能的标准,从这两个相互竞争的候选服务中选择一个服务来使用。•服务允许在机器间复制,可以通过将特定的服务复制到本地存储库,从而提高位于特定的计算机(群)上的应用程序的性能.5Web服务的本质•从表像上看,Web服务就是应用程序,它向外界暴露出一个能够通过Web访问方式进行调用的服务接口。•从应用程序的角度上看,Web服务是一种新的Web应用程序,是自包含、自描述、模块化的应用程序,可以通过互联网特别是Web方式来描述、发布、查找和调用。6发展脉络—前期互联网•一个以协议为主的交互世界底层网络协议和简单的内容传输协议:“桶”到“桶”之间的交换,不触及“桶”中的内容很少触及7发展脉络—当前互联网•一个以“文档的对象化”形式主导的交互世界O-本体(论域中的标准化概念)Service(instance)-(对象)Serviceschema-知识模式(类)Controlled-vocabulary受控词集(人或机器理解的含义)8发展脉络—当前互联网•一个以“文档的对象化”形式主导的交互世界O-本体(论域中的标准化概念)Service(instance)-(对象)Serviceschema-知识模式(类)Controlled-vocabulary受控词集(人或机器理解的含义)9发展脉络—今后互联网•一个以价值为导向的交互世界未经整合、低价值的资源经过整合、高价值的服务10Web服务特征•完好的封装性。服务是一种部署在Web上的对象,自然具备对象的良好封装性,对于使用者而言,能且仅能看到该对象提供的功能列表。•松散耦合:当一个Web服务的实现发生变更的时候,调用者是不会感到这一点的,对于调用者来说,只要服务的调用接口不变,服务实现任何变更对他们来说都是透明的。•使用标准协议规范:作为Web服务,其所有公共的协约完全需要使用开放的标准协议进行描述、传输和交换。这些标准协议具有完全免费的规范,以便由任意方进行实现。•高度可集成能力:由于服务采取简单的、易理解的标准协议作为组件接口描述规范和协同描述规范,完全屏蔽了不同软件平台的差异。11Web服务优势•高度的通用性和易用性:Web服务利用标准的工Internet协议(如HTTP,SMTP等),解决了面向Web的分布式计算模式,提高了系统的开放性、通用性和可扩展性。•完全的平台、语言独立性:Web服务进行了更高程度的抽象,只要遵守Web服务的接口即可进行服务的请求与调用。•高度的集成性:Web服务实质就是通过服务的组合来完成业务逻辑的,因此,表现出了高度的组装性和集成性.•容易发布和部署:Web服务体系结构方案通过UDDI,WSDL,SOAP等技术协议,能够很容易实现系统的部署.12Web服务架构栈(1)(2)(3)(4)(2)、(3)将在2.3节讨论132.1概念和背景2.2面向服务的架构SOA2.3语义互操作2.4服务案例2.5服务开发方法2.6云计算中的服务2.7高级专题提纲14SOA(Service-OrientedArchitecture)起源•SOA不是一个新概念,通用对象代理架构CORBA和分布式组件对象模型DCOM被看成是SOA架构的前身。•1996年,GartnerGroup提出了SOA“预言”(到2008年,超过60%的企业将使用SOA作为一个“指导原则”),因为当时的软件发展水平和信息化程度还不足支撑此概念进入实质性的应用阶段。•SOA可以认为是面向对象分析与设计(OOAD)的合理发展;也是电子商务解决方案中,在体系结构、系统设计、实现与部署时所采用的组件化方法的合理发展。15SOA兴起原因(计算部件的对象化趋势)•分布式系统的自然发展•系统与运算环境的异质性•操作环境的动态性•交流设备细节的透明化•面向过程需要多重服务16GartnerGroup关于SOA的最初概念•客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成。•SOA与大多数通用的客户端/服务器模型的不同之处,在于它强调软件组件的松散耦合,并使用独立的标准接口(对象化趋势)17SOA的当前定义•[W3C]SOA的定义:SOA是组件的集合,这些组件能被调用,并且接口的描述可以发布和发现。•[维基百科]SOA的定义:SOA是构造分布式计算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其它服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。18SOA的当前定义(续)•当代SOA代表一个开放的、敏捷的、可扩展的、可联邦的、可组合的架构,包含了自治的、高服务质量的、厂商多样性的、可互操作的、可发现的和潜在可复用的服务,使用Web服务来实现。——ThomasErl《SOA概念、技术与设计》19普遍接受的SOA架构W3C发布的Web服务架构基本两种基本角色(服务提供者和服务请求者)和一个可选的服务注册中心.三种角色交互,涉及发布、发现、绑定操作.UDDI、WSDL和SOAP将在2.3节“语义互操作”中讨论20SOA架构中的角色•服务提供者(serviceprovider):发布自己的服务,并且使用自身服务的请求进行响应.•服务代理(servicebroker):可选.注册与发布服务及其提供者,对其进行分类,并提供搜索服务.•服务使用者(servicerequester):利用服务代理来查找所需服务,进而根据需求使用该服务.21SOA架构中的操作•发布(publish):使服务提供者可以通过向服务代理注册自己的功能及访问接口.•查找(find):服务使用者可以通过服务代理查找特定的服务.•绑定(bind):使服务使用者能够调用或激活服务.22SOA架构特点•服务的封装(encapsulation).将服务封装成用于业务流程的可重用组件的应用程序函数.•服务的互操作(interoperability).通过服务之间既定的通信协议进行互操作,SOA提供服务的互操作特性更利于其在多种场合被重用(“服务”(组织和交互方式)这种抽象协议).•服务是位置透明的(locationtransparency).服务请求者不需要知道服务的具体位置及是哪一个服务响应了自己的请求.23SOA架构特点(续)•服务的重用(reuse).一个服务是一个独立的实体,与底层实现和用户的需求完全无关,极大的方便了服务的重复使用,从而降低了开发成本.•服务是自治(autonomous)的功能实体.服务是由组件组成的组合模块,是自包含和模块化的.•服务之间的松散耦合(looselycoupled).服务请求者和服务提供者之间只有接口上的往来,至于服务内部如何更改,如何实现都与服务请求者无关24SOA与Web服务(当前P7和前期P8的区别)的联系与区别•SOA是一套面向服务架构的标准规范;Web服务是一套技术体系,可以用来建立应用解决方案,解决特定的消息通信和应用集成问题。•SOA是一种软件架构,不局限于某个技术的组合(例如Web服务)。•SOA和Web服务是一对关联技术。252.1概念和背景2.2面向服务的架构SOA2.3语义互操作2.4服务案例2.5服务开发方法2.6云计算中的服务2.7高级专题提纲26发展脉络—对象化的文档互联网•一个以“文档的对象化”形式主导的交互世界O-本体(论域中的标准化概念)Service(instance)-(对象)Serviceschema-知识模式(类)Controlled-vocabulary受控词集(人或机器理解的含义)27•XML建模体系与语义Web•语义互操作途径之一:当前式,RDF、本体与语义Web•语义互操作途径之二:三角架构,UDDI(开放式的)、WSDL(类或者对象)与SOAP(前期-内容传输)28适用于网络应用的标签化描述方式XML•XML(可扩展标记语言)是SGML的子集,其目标是允许普通的SGML在Web上以HTML的方式被服务、接收和处理。XML被设计成易于实现,且可在SGML和HTML之间互相操作。29XML的基本特点•XML是结构化的。•XML是自描述的。XML允许自定义标签,并且这些标签可以说明数据的语义,而不是HTML中的格式说明。•XML是可扩展的。XML的概念很简单,但是它却有广阔的应用领域,因为任何人都可以按照自己应用的需要定义相应的XML标签来表达信息的结构和类型。•独立于平台和应用。文档内容是基于UniCode的文本,适于网络的传输。•XML易于设计。XML文档容易编写,设计正式且简洁,可读性强。•更精确的搜索。XML标签表达的是内容的含义,从而搜索引擎可以通过搜索XML文档得到更精确的需要的内容。•广泛的支持。XML得到了众多的软件厂商比如Microsoft,IBM,Sun,Oracle等几乎所有大公司的支持。30简单的XML文件XML声明文档类型声明文档元素?xmlversion=“1.0”encoding=“utf-8”?!DOCTYPEbooksSYSTEM“books.dtd”[!ENTITYbookName“XML简明教程”]booksbooknameJava超级编程/nameauthor比尔盖茨/author/book/books31格式良好(Well-formed)的XML文档遵循如下规则的XML文档称为格式良好的XML文档:语法规范–必须有XML声明语句?xmlversion=1.0encoding=gb2312?–必须有且仅有一个根元素–标记大小写敏感–属性值用引号–标记成对–空标记关闭–元素正确嵌套32有限表达能力的XMLDTD•描述XML文档的结构时,文件类型定义(DTD)是一个重要的工具,DTD也是XML1.0的重要组成部分。但DTD存在不少缺陷:•DTD是基于正则表达式的,描述能力有限;•DTD没有数据类型的支持,在大多数应用环境下能力不足;•DTD的约束定义能力不足,无法对XML实例文档作出更细致的语义限制;•DTD的结构不够系统化,复用的代价相对比较高;•DTD并非使用XML作为描述手段,而DTD的构建和访问并没有标准的编程接口,无法使用标准的编程方式进行DTD维护。33较强表达能力的XMLSchema•XMLSchema是针对DTD的缺点设计的。2001年5月,XMLSchema作为W3C的推荐标准正式发布,并迅速取代DTD的地位,成为描述XML文档结构的主流技术。34XMLSchema的优点•一致性。XMLSchema本身就是一个XML文档。•扩展性。XMLSchema对DTD进行扩展,引进了数据类型、命名空间等,还可以基于标准数据类型创建自己的数据类型。•互换性。利用XMLSchema能够书写XML文档以及验证文档的合法性。通过映射机制,可以实现Schema的转换。•规范性。XMLSchema更加