您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 软件设计ZhouSu第13章面向服务的体系结构.
软件体系结构与设计浙江大学城市学院周苏教授QQ:81505050第13章面向服务的体系结构第13章面向服务的体系结构•面向服务的体系结构的概念•服务作为可复用的组件•服务工程•使用服务的软件开发•20世纪90年代,网络技术的发展彻底改变了信息交流的方式,客户计算机可以通过访问其机构以外的远程服务器来获得信息。但是,这种访问是通过Web浏览器进行的,要想使用其他程序来对信息库进行直接访问是不实际的。也就是说,在服务器之间进行随意的连接(比如一个程序从不同的提供商查询多个目录)是不能做到的。第13章面向服务的体系结构•为了解决这个问题,人们提出了Web服务的概念。使用Web服务,机构通过定义和建立一个Web服务界面就可让自己的信息被别的程序访问。这个界面定义可用的数据和如何访问这些数据。更一般的情况是,Web服务是一个标准的计算资源或信息资源的表示,这些资源可以被其他程序使用。它们可能是信息资源,例如一个零件目录;也可以是计算机资源,例如一个专门的处理器;或者是存储资源,例如,存档服务能够实现对商店数据的长期、可靠存储,依据法律这些组织数据必须保持多年。第13章面向服务的体系结构13.1面向服务的体系结构的概念•对于“服务”,其一般概念的定义是:由一个团体向另一个团体提供的行动或能力。尽管这个过程可能是与一个有形的产品联系在一起的,但是能力本质上是无形的,一般不会产生对任何作品因素的拥有权。因而服务的本质是服务的提供独立于使用服务的应用,服务提供者能开发专业性服务并提供面向不同机构中的某个范围内的服务用户。Web服务是更一般的服务概念的一个实例。13.1面向服务的体系结构的概念•面向服务的体系结构(Service-OrientedArchitecture,SOA)是一种使用Web服务来构建分布式应用程序的方法。分布式系统的系统组件是单机服务,这些服务由在不同地理位置上的计算机上执行。基于XML标准的协议,例如SOAP和WSDL,这些设计支持服务通信和信息交换。因此,服务是与平台和实现语言无关的。软件系统可以通过使用本地的服务和不同提供商提供的外部服务来构建,这些服务之间可以做到无缝交互。13.1面向服务的体系结构的概念•图13-1封装了SOA的思想。服务的提供商设计和实现服务并定义了这些服务的接口。他们也发布这些服务的有关信息到能访问到的注册表。那些希望利用某项服务的服务请求者(有时叫做服务客户)发现某个服务的描述,从而也定位服务的提供者。然后他们能够将自己的应用绑定到特定的服务并使用标准的服务协议与之通信。图13-1面向服务的体系结构服务注册处服务请求者服务提供者服务寻找发布(WSDL)绑定(SOAP)(UDDI)13.1面向服务的体系结构的概念•伴随着技术的发展,一直有一个活跃的SOA标准化过程,所有主要硬件和软件公司都接受这些标准,因而面向服务的体系结构没有受到不兼容的困扰。图13-2给出了已经建立的一些支持Web服务的关键标准。图13-2Web服务标准支持(WS-安全,WS-寻址等等)过程(WS-BPEL)服务定义(UDDI,WSDL)信息交换(SOAP)XML技术(XML,XSD,XST等等)传输(HTTP,HTTPS,SMTP等等)13.1面向服务的体系结构的概念•Web服务协议覆盖了面向服务的体系结构的所有方面:从基本的服务信息交换(SOAP)机制到编程语言标准(WS-BPEL)。这些标准全部基于XML——一种人和计算机都可识别的标记语言,它允许定义结构化的数据,其中文本用一个有意义的标识符来标记。XML有一系列的支持技术,例如用于模式定义的XSD,它用于扩展和处理XML描述。13.1面向服务的体系结构的概念•简要地说,面向Web服务的体系结构的主要标准有:–(1)SOAP。简单对象访问协议,是一种轻量的、简单的、基于XML的协议,它被设计成在Web上交换结构化的和固化的信息,是一个支持服务之间通信的消息交换标准,它定义服务之间消息传递的必需的和可选的组件。SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。13.1面向服务的体系结构的概念–(2)WSDL(WebServicesDescriptionLanguage,Web服务定义语言)。是一种用来描述Web服务和说明如何与Web服务通信的XML接口定义语言,是制定服务接口的标准。它给出了服务是如何操作的(操作名、参数、它们的类型)以及必须定义的服务绑定。–(3)WS-BPDL。这是一个工作流语言的标准,用来定义包括多个不同服务的过程程序。13.1面向服务的体系结构的概念•服务发现标准(UDDI,通用描述、发现和集成)也被提到过,但还没有广泛采用,它定义了服务描述的组件,这种组件可用来发现服务是否存在。它们包括的信息主要有:服务提供者,所提供的服务,服务接口的WSDL描述的位置,以及业务关系的信息。目的是这一标准将允许公司建立对他们所提供服务的UDDI描述的注册表。•许多公司,比如微软,在21世纪初期就建立了UDDI注册,但搜索引擎技术的发展使它们变得多余。服务搜索使用一种标准的搜索引擎来搜索适当评注的WSDL描述,这是现在发现外部服务的首选方式。13.1面向服务的体系结构的概念•主要的SOA标准受到一系列更专业的标准的支持,这些标准的例子包括:–(1)WS-ReliableMessaging,是一个确保消息将会传递一次且只一次的消息交换标准。–(2)WS-Security,是一套支持Web服务信息安全性的标准,包括指定信息安全政策定义的标准和覆盖数字签名使用的标准。–(3)WS-Addressing,定义在一个SOAP消息中如何表达地址信息。–(4)WS-Transactions,指定在分布的服务之间的事物应该怎样协调。13.1面向服务的体系结构的概念•基于服务构建应用程序允许公司和其他机构进行协作并使用彼此的业务功能。因此,涉及公司边界间大量信息交换的系统,比如,供应链系统,即一家公司向另一家公司下商品订单,可以很容易地自动化。基于服务的应用的构建可以通过连接来自不同提供商的服务,使用标准编程语言或者专门的工作流语言。•SOA是松散耦合的体系结构,可以在执行阶段改变服务绑定,这意味着可能会在不同的时间段执行着不同的服务版本。有些系统完全是使用Web服务来构建的,而其他一些系统是结合了Web服务和本地开发的组件。13.1面向服务的体系结构的概念•为了说明混合使用服务和组件的应用是如何组织的,考虑这样的情形:轿车内信息系统向驾驶人员提供关于天气、交通状况、本地信息等内容。这是链接到车上无线电装置上的,这样信息作为信号可以在专设的频道上传输。轿车上配备GPS接收装置来发现自己所在的位置,基于这个位置信息,系统方位访问一系列信息服务。信息可以使用驾驶员专用语言来传输。13.1面向服务的体系结构的概念•图13-3说明了这样一个系统。车内软件包括5个模块。它们处理与驾驶人员、与报告车辆位置的GPS接收装置,以及与车上的无线电接收装置的通信。传递器和接收器这两个模块处理所有与外部设备之间的通信。13.1面向服务的体系结构的概念•车辆与外部移动信息服务通信,这个外部信息服务又聚集了很多来自其他模块的一些服务,比如气象服务、交通信息服务和本地设施服务等提供的信息。位于不同地点的不同提供商提供这个服务,车内系统用发现服务来定位最合适的信息服务并绑定它。移动信息服务也使用发现服务来绑定合适的气象、交通以及设施等服务。服务交换SOAP消息(它包括服务所使用的GPS位置信息)来选择合适的信息。所收集的信息通过一个能将信息语言翻译成驾驶人员的首选语言的服务传回到车内。13.1面向服务的体系结构的概念•这个例子很好地说明了面向服务方法的一个重要优势,这就是,在系统编程阶段和部署阶段无需决定使用哪个服务提供商,也无需知道需要访问什么特殊的服务。当汽车随处行驶的时候,车载软件使用服务发现服务来寻找最为合适的信息服务并绑定它。由于使用了翻译服务,它能够跨越边界而让不懂当地语言的驾驶人员了解到当地的信息。13.1面向服务的体系结构的概念•软件工程的面向服务方法是一种新的软件工程范式,甚至有人认为,这是与面向对象软件工程同样的一个软件工程的重要进展,这种范式的转变将加速“云计算”的发展。在云计算中,服务是由如Google和Amazon这样的主要供应商主办的一个公用计算基础设施所提供的,这已经并将继续对系统产品和业务流程产生深远影响。随着GoogleApps和Saleforce.com等系统的出现,我们已经看到在软件的实施和部署方式上的重大变化。面向服务的方法同时在应用和实施层面上意味着Web正从一个信息存储变成一个系统的实施平台。图13-3基于服务的车载信息系统公路定位器交通信息路况信息寻找可用服务服务发现整理信息移动信息服务从服务接受信息流接收器发送位置和信息请求到服务传递器从用户接收请求用户界面转换数字信息流为无线信号无线电发现汽车位置定位器车载软件系统命令GPS协调翻译器信息流语音信息GPS协调气象信息设施信息GPS协调GPS协调13.2服务作为可复用的组件•在基于组件的软件工程(CBSE)中,软件系统是通过对软件组件的组合来构建的,组件都是基于某一标准组件模型的。服务是软件组件的自然发展,组件模型本质上是一组与Web服务关联的标准。服务因此可以被定义为:松散耦合的、封装了离散功能的可复用软件组件,它可以是分布的,且根据标题来访问。Web服务是这样一个服务,使用标准的因特网和基于XML的协议进行访问。13.2服务作为可复用的组件•服务和软件组件之间的一个重要的区别是,服务应该总是独立的和松散耦合的。即它们应该总是以相同的方式运行,而与它们的执行环境无关。其接口是提供服务功能访问的“提供”接口。服务规定为在不同的上下文中独立和可用的。因此,它们没有“要求”接口,而在CBSE中这是定义那些必须出现的其他系统组件的一种接口。13.2服务作为可复用的组件•服务通过交换以XML表示的消息来通信,这些消息通常使用标准的因特网传输协议(如HTTP和TCP/IP)来分发。服务定义它对另一个服务的需要,通过在消息中陈述需求并发送给相应的服务。接收方解析消息,执行计算,完成后发送一个回复,作为消息,给请求的服务。提出请求的服务于是解析应答消息,提取所需要的信息。与软件组件不同,服务不使用远程过程或方法调用来访问与其他服务关联的功能。13.2服务作为可复用的组件•当你想要使用Web服务的时候,你需要知道服务在哪里(它的URI)以及接口细节。这些会在服务描述中说明,服务描述用XML语言书写,被称为WSDL(Web服务描述语言)。13.2服务作为可复用的组件•WSDL描述定义了有关Web服务的3件事;服务做什么,如何通信,以及在哪里能找到它:–(1)WSDL文档的“what”部分,称为接口,指定服务所支持的操作,并且定义服务发送和接收的消息的格式。–(2)WSDL文档的“how”部分,称为一个绑定,把抽象接口映射到一组具体的协议上。绑定指定了如何与一个Web服务通信的技术细节。–(3)WSDL文档的“where”部分,描述一个特定的Web服务实现的位置(它的端点)。13.2服务作为可复用的组件•WSDL概念模型(见图13-4)给出了服务描述的元素。其中每个元素用XML表达并且可以在单独的文件中完成。这些部分是:–(1)介绍性部分,通常,定义XML所使用的名字空间,并且可能包含一个提供有关服务的额外信息的文档部分。–(2)可选部分,描述服务交换的消息所使用的一些类型。–(3)服务接口的描述部分,即服务为其他的服务或用户提供的操作。–(4)描述服务所处理的输入和输出消息部分。图13-4WSDL描述的组织介绍抽象接口具体实现类型声明接口声明消息声明绑定声明端点声明XML名字空间声明WSDL服务定义13.2服务作为可复用的组件–(5)服务所使用的绑定的描述部
本文标题:软件设计ZhouSu第13章面向服务的体系结构.
链接地址:https://www.777doc.com/doc-1991916 .html