《面向服务的软件体系结构》由会员分享,可在线阅读,更多相关《面向服务的软件体系结构(21页珍藏版)》请在金锄头文库上搜索。
1、面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 面向服务的体系结构面向服务的体系结构(SOA)(SOA)是一个组件模型,它是一个组件模型,它将应用程序的不同功能单元将应用程序的不同功能单元( (称为服务称为服务) )通过这些服务通过这些服务之间定义良好的接口和契约联系起来。接口是采用中之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一
2、种统一和通用的方式进行交的系统中的服务可以以一种统一和通用的方式进行交互。互。 1面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 这种具有中立的接口定义这种具有中立的接口定义( (没有强制绑定到特定没有强制绑定到特定的实现上的实现上) )的特征称为服务之间的松耦合。松耦合系统的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性的好处有两点,一点是它的灵活性; ;另一点是,当组成另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而与此相
3、对,紧耦合意生改变时,它能够继续存在。而与此相对,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。行某种形式的更改时,它们就显得非常脆弱。 2面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 3面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 对松耦合系统的需求来源于业务应用程序需要对松耦合系统
4、的需求来源于业务应用程序需要根据业务的变动变得更加灵活,以适应不断变化的环根据业务的变动变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需适应环境变化的业务为按需(On Demand)(On Demand)业务,在按需业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式业务中,一旦需要,就可以对完成或执行任务的
5、方式进行必要的更改。进行必要的更改。 4面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 虽然面向服务的体系结构不是一个新鲜事物,但它却是更传虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于经存在二十多年了。虽然基于 SOASOA的系统并不排除使用面向对象的的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考设计来构建单个服务,但是其整体设计却是面向服务的。
6、由于它考虑到了系统内的对象,所以虽然虑到了系统内的对象,所以虽然SOASOA是基于对象的,但是作为一个整是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。体,它却不是面向对象的。不同之处在于接口本身。SOASOA系统原型的系统原型的一个典型例子是通用对象请求代理体系结构一个典型例子是通用对象请求代理体系结构(Common Object (Common Object Request Broker ArchitectureRequest Broker Architecture,CORBA)CORBA),它已经出现很长时间了,它已经出现很长时间了,其定义的概念与其定义的概念与
7、SOASOA相似。相似。 5面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 然而,现在的然而,现在的SOASOA已经有所不同了,因为它依赖于一些更新已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言的进展,这些进展是以可扩展标记语言( (eXtensibleeXtensible Markup Markup LanguageLanguage,XML)XML)为基础的。通过使用基于为基础的。通过使用基于XMLXML的语言的语言( (称为称为WebWeb服务描服务描述语言,述语言,Web Services Defini
8、tion LanguageWeb Services Definition Language,WSDL)WSDL)来描述接口,来描述接口,服务已经转到更动态且更灵活的接口系统中,非以前服务已经转到更动态且更灵活的接口系统中,非以前 CORBACORBA中的接中的接口描述语言口描述语言(Interface Definition Language(Interface Definition Language,IDL)IDL)可比了。可比了。 6面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 SOASOA本身应该是本身应该是“如何将软件组织在
9、一起如何将软件组织在一起”的抽象概念。它的抽象概念。它依赖于用依赖于用 XML XML 和和 Web Web 服务实现并以软件的形式存在的更加具体的服务实现并以软件的形式存在的更加具体的观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以及会计系统的支持,从而有效地工作。您还可以通过分布式事务处及会计系统的支持,从而有效地工作。您还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它。理和分布式软件状态管理来进一步地改善它。 7面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结
10、 构构构构 SOASOA服务和服务和WebWeb服务之间的区别在于设计。服务之间的区别在于设计。SOA SOA 概念并没有确概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,流程的战术之间的区别。而另一方面,WebWeb服务在需要交互的服务之服务在需要交互的服务之间如何传递消息有具体的指导原则间如何传递消息有具体的指导原则; ;从战术上实现从战术上实现SOASOA模型最
11、常见的模型最常见的方式是通过方式是通过HTTPHTTP传递的传递的SOAPSOAP消息。因而,从本质上讲,消息。因而,从本质上讲,Web Web 服务是服务是实现实现SOASOA的具体方式之一。的具体方式之一。 8面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 既为了建立所有这些信息的适当控制,又为了应用安全性、策略、既为了建立所有这些信息的适当控制,又为了应用安全性、策略、可靠性以及会计方面的要求,在可靠性以及会计方面的要求,在SOASOA体系结构的框架中加入了一个新的软体系结构的框架中加入了一个新的软件对象。这个对象就是企业服务
12、总线件对象。这个对象就是企业服务总线(ESB)(ESB),它使用许多可能的消息传递,它使用许多可能的消息传递协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。虽然协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。虽然ESBESB并不是绝对必需的,但它却是在并不是绝对必需的,但它却是在SOASOA中正确管理您的业务流程至关重要中正确管理您的业务流程至关重要的组件。的组件。ESBESB本身可以是单个引擎,甚至还可以是由许多同级和下级本身可以是单个引擎,甚至还可以是由许多同级和下级ESBESB组组成的分布式系统,这些成的分布式系统,这些 ESBESB一起工作,以保持一起工作,以保
13、持SOASOA系统的运行。在概念上,系统的运行。在概念上,它是从早期比如消息队列和分布式事务计算这些计算机科学概念所建立的它是从早期比如消息队列和分布式事务计算这些计算机科学概念所建立的存储转发机制发展而来的。存储转发机制发展而来的。 9面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 利用利用SOASOA的好处不仅仅在于它是一个软件开发流程,而的好处不仅仅在于它是一个软件开发流程,而且还是一个业务开发流程。采用且还是一个业务开发流程。采用SOASOA有四个层次,您的实现可有四个层次,您的实现可以跨越从创建特定的软件服务到将您的业务模
14、型全面转换到按以跨越从创建特定的软件服务到将您的业务模型全面转换到按需系统的过程。需系统的过程。10面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 第一个层次是最简单的,因为它只需创建单独的服务。第一个层次是最简单的,因为它只需创建单独的服务。在第二个层次中,您不仅可以创建服务,而且可以开始在第二个层次中,您不仅可以创建服务,而且可以开始将业务功能集成到将业务功能集成到SOASOA中。这涉及多个层次的集成,其中包括中。这涉及多个层次的集成,其中包括应用程序集成、信息集成、流程集成和整个系统的集成。应用程序集成、信息集成、流程集成和整
15、个系统的集成。第三个层次涉及将您的企业第三个层次涉及将您的企业ITIT基础设施转换到基础设施转换到 SOASOA模型,模型,而采用而采用SOASOA的第四个层次集中于转换您的业务模型,以使之成的第四个层次集中于转换您的业务模型,以使之成为随需应变的模型。为随需应变的模型。11面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 从从ITIT专业人员的角度来看专业人员的角度来看( (与业务层相比与业务层相比) ),要创建,要创建SOASOA应用程序,应用程序,通常将经历四个阶段:构建、部署、使用和管理。通常将经历四个阶段:构建、部署、使用和
16、管理。在构建阶段中,您可以定义业务模型或流程、软件模型和在构建阶段中,您可以定义业务模型或流程、软件模型和SOASOA模型。模型。之后,就可以创建一组服务,这组服务可以与已发布的通用接口一起重用。之后,就可以创建一组服务,这组服务可以与已发布的通用接口一起重用。在部署阶段,提取创建的服务,并把它们放在一个可执行、可管理的在部署阶段,提取创建的服务,并把它们放在一个可执行、可管理的环境之中。环境之中。在使用阶段,根据前面所讲的在使用阶段,根据前面所讲的SOASOA和软件模型来装配应用程序,并和软件模型来装配应用程序,并且测试其软件质量以及非功能性需求,比如性能、可伸缩性等等。应用程且测试其软件质
17、量以及非功能性需求,比如性能、可伸缩性等等。应用程序现在已经准备完毕并且可交付用户。序现在已经准备完毕并且可交付用户。最后的管理阶段是一个长期的过程,在这个阶段中,可以监控并最后的管理阶段是一个长期的过程,在这个阶段中,可以监控并管理安全性和使用,以及在许多与可能已经为管理安全性和使用,以及在许多与可能已经为 SOASOA制订好的服务级协定或制订好的服务级协定或策略相对应的方面比较其性能。策略相对应的方面比较其性能。12面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 面向服务的体系结构提供了一种方法,通过这种方法,可以构建面向服务的
18、体系结构提供了一种方法,通过这种方法,可以构建分布式系统来将应用程序功能作为服务提供给终端用户应用程序或其他服分布式系统来将应用程序功能作为服务提供给终端用户应用程序或其他服务。其组成元素可以分成功能元素和服务质量元素。务。其组成元素可以分成功能元素和服务质量元素。 面向服务的体系结构的元素面向服务的体系结构的元素 : :体系结构堆栈分成两半,左边的体系结构堆栈分成两半,左边的一半集中于体系结构的功能性方面,而右边的一半集中于体系结构的一半集中于体系结构的功能性方面,而右边的一半集中于体系结构的服务质量方面。服务质量方面。 13面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件
19、件 体体体体 系系系系 结结结结 构构构构 14面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 功能性方面包括:功能性方面包括:传输是一种机制,用于将来自服务使用者的服务请求传送给服务提供者,并且将来传输是一种机制,用于将来自服务使用者的服务请求传送给服务提供者,并且将来自服务提供者的响应传送给服务使用者。自服务提供者的响应传送给服务使用者。 服务通信协议是一种经过协商的机制,通过这种机制,服务提供者和服务使用者可服务通信协议是一种经过协商的机制,通过这种机制,服务提供者和服务使用者可以就将要请求的内容和将要返回的内容进行沟通。以就
20、将要请求的内容和将要返回的内容进行沟通。 服务描述是一种经过协商的模式,用于描述服务是什么、应该如何调用服务以及成服务描述是一种经过协商的模式,用于描述服务是什么、应该如何调用服务以及成功地调用服务需要什么数据。功地调用服务需要什么数据。 服务描述实际可供使用的服务。服务描述实际可供使用的服务。 业务流程是一个服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用,业务流程是一个服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用,以满足业务要求。注意,可以将业务流程本身看作是服务,这样就产生了业务流程以满足业务要求。注意,可以将业务流程本身看作是服务,这样就产生了业务流程可以由不同
21、粒度的服务组成的观念。可以由不同粒度的服务组成的观念。 服务注册中心是一个服务和数据描述的存储库,服务提供者可以通过服务注册中心服务注册中心是一个服务和数据描述的存储库,服务提供者可以通过服务注册中心发布它们的服务,而服务使用者可以通过服务注册中心发现或查找可用的服务。服发布它们的服务,而服务使用者可以通过服务注册中心发现或查找可用的服务。服务注册中心可以给需要集中式存储库的服务提供其他的功能。务注册中心可以给需要集中式存储库的服务提供其他的功能。 15面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 服务质量方面包括:服务质量方面包
22、括:策略是一组条件和规则,在这些条件和规则之下,服务提供者可以使服务可用于使策略是一组条件和规则,在这些条件和规则之下,服务提供者可以使服务可用于使用者。策略既有功能性方面,也有与服务质量有关的方面;因此,我们在功能和服用者。策略既有功能性方面,也有与服务质量有关的方面;因此,我们在功能和服务质量两个区中都有策略功能。务质量两个区中都有策略功能。 安全性是规则集,可以应用于调用服务的服务使用者的身份验证、授权和访问控制。安全性是规则集,可以应用于调用服务的服务使用者的身份验证、授权和访问控制。 传输是属性集,可以应用于一组服务,以提供一致的结果。例如,如果要使用一组传输是属性集,可以应用于一组
23、服务,以提供一致的结果。例如,如果要使用一组服务来完成一项业务功能,则所有的服务必须都完成,或者没有一个完成。服务来完成一项业务功能,则所有的服务必须都完成,或者没有一个完成。 管理是属性集,可以应用于管理提供的服务或使用的服务。管理是属性集,可以应用于管理提供的服务或使用的服务。 16面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 1 1HTTP HTTP 协协 议议 :一个典型的:一个典型的 S OAS OA实现实现 2 2S O A S O A 与与 Web S e r v i c e sWeb S e r v i c e s
24、17面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 每一项新技术都是在一些原有技术基础上发展出来的。正如每一项新技术都是在一些原有技术基础上发展出来的。正如XMLXML根本思根本思想来自于在想来自于在2020世纪世纪6060年代就已经出现的早期标记性语言一样,年代就已经出现的早期标记性语言一样,S O AS O A虽虽然近几年才出现然近几年才出现 ,但是它所表达的观念应该说在网络这种分布式系统,但是它所表达的观念应该说在网络这种分布式系统结构出现不久就已经广泛应用了。例如我们最熟悉的结构出现不久就已经广泛应用了。例如我们最熟悉的HT
25、 T P HT T P 协议就是协议就是一个非常典型的一个非常典型的S O AS O A架构设计。架构设计。18面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 H T T PH T T P协议满足了协议满足了S OAS OA的三个基本特点的三个基本特点 : ( 1 )( 1 )独立的功能实体独立的功能实体 作为服务器端的作为服务器端的WEBWEB服务器总是非常稳定地按照服务器总是非常稳定地按照 自己的内在逻辑运行自己的内在逻辑运行 ,响应外部,响应外部的请求的请求 ,管理自己的资源和数据。,管理自己的资源和数据。( 2)( 2)大数
26、据量低频率访问大数据量低频率访问 对于一个对于一个HT T PHT T P请求来说请求来说 , 客户端与服务器端之间访问的边界就是一个请求,一客户端与服务器端之间访问的边界就是一个请求,一个响应,没有任何其它的信息往返。对于客户端来说个响应,没有任何其它的信息往返。对于客户端来说 ,它发出的请求只是简单,它发出的请求只是简单的告诉的告诉 We bWe b服务器它所需要的网页的位置;服务器它所需要的网页的位置;( 3 )( 3 )基于文本的消息传递基于文本的消息传递 迄今为止兼容性最好的系统可能就是迄今为止兼容性最好的系统可能就是HT T P HT T P 协议支撑的大部分的协议支撑的大部分的w
27、 e b w e b 应用了,应用了,这里的关键就是所有内容都是以格式化的文本方式传递的,而由于不同的操作这里的关键就是所有内容都是以格式化的文本方式传递的,而由于不同的操作系统上对于相同的系统上对于相同的H T MLH T ML的解释遵循相同的规范,因此不同操作系统下仍然能的解释遵循相同的规范,因此不同操作系统下仍然能够看到一致的用户界面。够看到一致的用户界面。 19面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 这里值得说明的是这里值得说明的是S OAS OA不是不是 We b S e r v i c e s We b S e
28、r v i c e s 。 根据根据20032003年年4 4月月的报道的报道 , 这个问题是这样解释的:这个问题是这样解释的:“We“We b S e r v i c e s b S e r v i c e s 是技是技术规范术规范 ,而,而S OAS OA是设计原则。特别是是设计原则。特别是 We b S e r v i c e s We b S e r v i c e s 中的中的WS D L WS D L ,是一个,是一个S O AS O A配套的接口定义标准:这是配套的接口定义标准:这是 We b S e r v i We b S e r v i c e s c e s 和和 S O
29、A S OA的根本联系。的根本联系。”从本质上来说从本质上来说 ,S OAS OA是一种架构模式是一种架构模式 ,而,而 We b S e r v i c e s We b S e r v i c e s 是利用一组标准实现的服务是利用一组标准实现的服务 。 We b We b S e r v i c e S e r v i c e s s是实现是实现 S OA S OA的方式之一的方式之一 。用。用 We b S e r v i c e We b S e r v i c e s s 来实现来实现 S OA S OA的好处就是可以实现一个中立平台,来获得服务的好处就是可以实现一个中立平台,来获
30、得服务 ,而且,而且随着越来越多的软件商支持越来越多的随着越来越多的软件商支持越来越多的WEBWEB服务规范服务规范 , ,可以取得更好的可以取得更好的通用性通用性。 20面面面面 向向向向 服服服服 务务务务 的的的的 软软软软 件件件件 体体体体 系系系系 结结结结 构构构构 SOASOA的概念并非什么新东西,的概念并非什么新东西,S O AS O A不同于现有的分布式技术之处在不同于现有的分布式技术之处在于大多数软件商接受它并有可以实现于大多数软件商接受它并有可以实现S O AS O A的平台或应用程序。的平台或应用程序。S O S O A A能够在最新的和现有的应用之上创建应用;能够在
31、最新的和现有的应用之上创建应用;S O AS O A能够使客户或服能够使客户或服务消费者免予服务实现的改变所带来的影响;务消费者免予服务实现的改变所带来的影响;S O AS O A能够升级单个能够升级单个服务或服务消费者而无需重写整个应用,也无需保留已经不再适用服务或服务消费者而无需重写整个应用,也无需保留已经不再适用于新需求的现有系统。于新需求的现有系统。 总而言之根据总而言之根据 S O A S O A体系结构模型、基本特征及服务品质特性,结合体系结构模型、基本特征及服务品质特性,结合海洋环境监测数据通信与管理的基本业务需求将先进海洋环境监测数据通信与管理的基本业务需求将先进 S OA S OA设计理设计理念引入到海洋监测领域是可行的,使各类海洋环境监测集成系统功念引入到海洋监测领域是可行的,使各类海洋环境监测集成系统功能变得更加灵活,推动了集成系统技术发展。能变得更加灵活,推动了集成系统技术发展。 21