940 likes | 1.07k Views
软件体系结构 (Software Architecture). 面向服务的软件体系结构 Service-Oriented Architecture (SOA). 内容. SOA 的背景 什么是 SOA 相关技术 如何构建 SOA 系统 SOA 与其它技术的关系. 新方法的商业驱动力. Heterogeneity. Change. cutting costs & maximizing the utilization of existing technology. Better More competitive More responsive.
E N D
软件体系结构(Software Architecture) 面向服务的软件体系结构 Service-Oriented Architecture (SOA)
内容 • SOA的背景 • 什么是SOA • 相关技术 • 如何构建SOA系统 • SOA与其它技术的关系
新方法的商业驱动力 Heterogeneity Change cutting costs & maximizing the utilization of existing technology Better More competitive More responsive Conflict • 企业压力之下的两个基本的主题 • 异构 • 变化
随需而变On Demand e-Business • 对 SOA 的需求来源于需要使业务系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的技术实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。 • 横向的改变 • 纵向的改变 • 内部改变 • 利用灵活的结构进行新的改变
为了减少异构性、互操作性和不断改变的要求的问题,这样的体系结构应该提供平台来构建具有下列特征的应用程序服务为了减少异构性、互操作性和不断改变的要求的问题,这样的体系结构应该提供平台来构建具有下列特征的应用程序服务 • 松散耦合 • 位置透明 • 协议独立
候选解决方案 • 面向对象的分析和设计 • 通过封装对象的某些方面,以简化复杂业务场景的分析 • 为了降低复杂性,可以抽象对象的某些特征,这样就可以只捕获重要或本质的方面。 • 基于构件的开发 • 通过内聚一些更细粒度的对象来提供定义良好的功能 • 一旦组织在更高层次上实现了基于完全独立的功能构件的体系结构,就可以将支持企业的应用程序划分成一组粒度越来越大的构件。可以将构件看作是打包、管理和公开服务的机制
候选解决方案 • 面向服务的设计 • 服务通常实现为粗粒度的可发现软件实体,它作为单个实例存在,并且通过松散耦合的基于消息通信模型来与应用程序和其他服务交互
候选解决方案 • 分层应用系统体系结构
对新型体系结构的要求 • 不同系统和不同编程语言的互操作性?———一种适合各种系统和编程语言的通信协议被要求。 • 一种与平台无关的、清晰明确的描述语言 • 为了使用其他提供者提供的服务,不仅需要对提供者的系统进行访问,而且那些服务的接口必须用一种语法清晰,平台无关的语言描述。 • 服务的查找和获得 • 为了能够在系统设计时特别是运行时方便地进行集成,我们需要一种机制用来查找和获得有效的服务,这些服务应该基于他们的功能或者调用方式被很好地分类了。
内容 • SOA的背景 • 什么是SOA • 构成SOA的技术 • 如何构建SOA系统 • SOA与其它技术的关系
定义 • 面向服务的体系结构(service-oriented architecture,SOA)是一个构件模型,它将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来 • 接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。 • 服务(service)是封装成用于业务流程的可复用构件的应用程序函数。它提供信息或简化业务数据从一个有效的、一致的状态向另一个状态的转变 • 用于实现特定服务的流程并不重要,只要它响应命令并为请求提供高质量的服务就可以了
SOA的特点 • 松耦合 • 在该体系架构中,客户端不和任何服务器相关联,它只和服务相联系,所以客户端和服务器的集成不影响客户端应用程序。 • 无论老的或者新的功能模块都可以被封装成服务构件被发布。 • 功能构件和它们的接口分离,所以新的接口可以非常方便地插入。 • 在复杂的应用程序里,业务过程的控制可以被隔离:引入一个业务规则引擎用来控制已经定义好的业务过程流。引擎根据工作流的状态调用各种不同的服务。 • 服务可以在运行时动态地合成进来。 • 通过配置文件进行绑定,所以可以非常容易地适应各种新的需要
SOA的特点 • 明确定义的接口 • 服务交互必须是明确定义的 • Web 服务描述语言(Web services Description Language,WSDL)是受到广泛支持的方法,用于描述服务请求者所要求的绑定到服务提供者的细节 • 服务 • 调用操作的消息 • 构造这种消息的细节 • 关于向何处发送用于构造这种消息的处理细节的消息的信息
SOA的特点 • 无状态的服务设计 • 服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态 • 服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们最好定义成通用业务流程、函数和数据模型
SOA的特点 • 服务粒度作为设计要点 • 对于外部的使用推荐使用粗粒度的接口,而细粒度的接口可能用于企业内部 • 粗粒度接口可能是特定服务的完整处理,例如 SubmitPurchaseOrder ,在这里消息包括定义订购单所需的所有业务信息。细粒度接口可能具有用于以下方法的不同操作:CreateNewPurchaseOrder 、SetShippingAddress 、AddItem 等 • 虽然细粒度的接口为请求者应用程序提供了更多的灵活性,它同样也意味着交互的模式可能随着不同的服务请求者而不同。这可能使对于服务提供者的支持更加困难。粗粒度接口保证服务请求者将以一致的方式使用服务。 • SOA不要求使用粗粒度接口,但是推荐使用它们作为外部集成的最佳实践
SOA的特点 • 服务质量需要重点考虑 • SOA设计将跨越计算机系统,并且还可能跨越企业边界,因此不得不考虑在使用Internet 时安全性功能和需求以及如何链接伙伴的安全域 • Internet 协议并不是为可靠性(有保证的提交和提交的顺序)而设计,但是不得不确保消息被提交并被处理一次。当这不可能时,请求者必须知道请求并没有被处理
功能性元素 • 传输是一种机制,用于将来自服务使用者的服务请求传送给服务提供者,并且将来自服务提供者的响应传送给服务使用者。 • 服务通信协议是一种经过协商的机制,通过这种机制,服务提供者和服务使用者可以就将要请求的内容和将要返回的内容进行沟通。 • 服务描述是一种经过协商的模式,用于描述服务是什么、应该如何调用服务以及成功地调用服务需要什么数据。 • 服务描述实际可供使用的服务。 • 业务流程是一个服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用,以满足业务要求。注意,可以将业务流程本身看作是服务,这样就产生了业务流程可以由不同粒度的服务组成的观念。 • 服务注册中心是一个服务和数据描述的存储库,服务提供者可以通过服务注册中心发布它们的服务,而服务使用者可以通过服务注册中心发现或查找可用的服务。服务注册中心可以给需要集中式存储库的服务提供其他的功能。
服务质量元素 • 策略是一组条件和规则,在这些条件和规则之下,服务提供者可以使服务可用于使用者。策略既有功能性方面,也有与服务质量有关的方面;因此,我们在功能和服务质量两个区中都有策略功能。 • 安全性是规则集,可以应用于调用服务的服务使用者的身份验证、授权和访问控制。 • 传输是属性集,可以应用于一组服务,以提供一致的结果。例如,如果要使用一组服务来完成一项业务功能,则所有的服务必须都完成,或者没有一个完成。 • 管理是属性集,可以应用于管理提供的服务或使用的服务。
角色 • 服务使用者:服务使用者是一个应用程序、一个软件模块或需要一个服务的另一个服务。它发起对注册中心中的服务的查询,通过传输绑定服务,并且执行服务功能。服务使用者根据接口契约来执行服务。 • 服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。 • 服务注册中心:服务注册中心是服务发现的支持者。它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。
操作 • 发布:为了使服务可访问,需要发布服务描述以使服务使用者可以发现和调用它。 • 发现:服务请求者定位服务,方法是查询服务注册中心来找到满足其标准的服务。 • 绑定和调用:在检索完服务描述之后,服务使用者继续根据服务描述中的信息来调用服务。
SOA带来的好处 • 利用现有的资产 • SOA 提供了一个抽象层,通过这个抽象层,企业可以继续利用它在IT 方面的投资,方法是将这些现有的资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。 • 更易于集成和管理复杂性 • 在面向服务的体系结构中,集成点是规范而不是实现。这提供了实现透明性,并将基础设施和实现发生的改变所带来的影响降到最低限度。通过提供针对基于完全不同的系统构建的现有资源和资产的服务规范,集成变得更加易于管理,因为复杂性是隔离的。当更多的企业一起协作提供价值链时,这会变得更加重要。
更快的响应和上市速度 • 从现有的服务中组合新的服务的能力为需要灵活地响应苛刻的商业要求的组织提供了独特的优势。通过利用现有的组件和服务,可以减少完成软件开发生命周期(包括收集需求、进行设计、开发和测试)所需的时间。这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和减少上市准备时间。 • 减少成本和增加复用 • 通过以松散耦合的方式公开的业务服务,企业可以根据业务要求更轻松地使用和组合服务。这意味资源副本的减少、以及重用和降低成本的可能性的增加。 • 说到做到 • 通过SOA,企业可以未雨绸缪,为未来做好充分的准备。SOA 业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。
内容 • SOA的背景 • 什么是SOA • 相关技术 • Web Services • Enterprise Business Service (ESB) • 如何构建SOA系统 • SOA与其它技术的关系
Web Services产生背景(一) • WWW的发展 • 浏览器驱动 服务驱动
产生背景 • 传统中间件难以适应Internet • 往往特定于端点(Endpoint) • UNIX RPC : 端点必须与UNIX兼容 • CORBA : 端点必须有ORB运行环境 • RMI : 端点必须有Java虚拟机 • DCOM : 端点必须是Windows操作系统 • 难以穿越防火墙 • 端口不固定 • 消息采用二进制编码 • …
产生背景(四) • 软件产业的发展 • 市场模式:面向产品转变为面向服务 • 销售策略:“软件即服务”(Software-as-Service) 如何满足上述发展需求? Web Services
什么是Web Services?(一) SOAP Service Requestor Web Service Invocation Interface WSDL Description • 一个能够使用XML消息通过网络来访问的Interface, 这个Interface描述了一组可访问的操作。 • 由SOAP+WSDL包装的Object • 适应松散耦合的网络环境,可通过Web访问,手段是SOAP Message • 服务的行为、输入/输出都可使用WSDL描述
什么是Web Services?(二) • e-Business驱动了Web Service的发展,而Web Service的基石是Web技术、IT技术和对象技术的融合。 • 高度可集成的、基于Web的对象 • 通过SOAP Message实施的面向对象编程 • 能够将你现有的企业应用使用SOAP包装、WSDL描述,从而发布企业的商务功能或商务数据
什么是Web Services?(三) • Web Service是松散耦和的、可复用的软件模块,从语义上看,它封装了离散的功能,在Internet上发布后能通过标准的Internet协议在程序中访问。 • Web Service是自包含的、自描述的、模块化的应用程序,可以通过Web发布、定位和调用。 • Web Service是互联网应用需求和技术发展的双重产物。Web Service代表新一代的软件架构模式,就是通过互联网架构应用软件,服务即软件。
Web Services的特点(一) • Web服务是可复用的软件模块。Web服务是对软件开发中面向对象设计的发展和升华。基于构件的模型允许开发者复用其他人创建的代码模块,组成或扩展它们,形成新的软件。 • 这些软件是松散耦合的。传统的应用软件设计模式要求各个单元之间紧密连接,这种连接形成的复杂性要求开发者必须对连接的两端元素有完全的了解和控制能力,而且,这种连接一旦建立后,很难从中把一个元素取出,用另外一个元素代替。相反,松散耦合的系统,只需要简单的协调,并允许更加自由的配置。
Web Services的特点(二) • 从语义上看,Web服务封装了离散的功能。一个Web服务就是一个自包含的“小程序”,完成单个的任务。Web服务的模块使用其他软件可以理解的方式描述输入和输出,其他软件知道它能什么,如何调用它的功能以及会返回什么样的结果。 • Web服务可以在程序中访问。和Web网站或桌面程序不同, Web服务不是为直接与人类交互设计的,它们不需要有图像化的用户界面。 Web服务是在代码级工作的,它们被其他软件调用,并与其他软件交换数据。不过Web服务最终的目的还是形成一个能够与用户交互的应用软件。 • Web服务是在Internet上发布的。 Web服务使用现有的并广泛使用的传输协议,比如HTTP。
角色与操作 • 服务注册表 • 服务的发布与定位 • 类似电话簿 • 服务提供商 • 提供服务 • 将可用的服务发布到注册表中 • 服务用户 • 通过注册表查找所需服务 • 通过提供商与服务绑定,并使用服务
运行时情景:自助游 1) Publish (upload) WSDL 3) Download WSDL 2) Search for Web Service 4) Invoke via SOAP 5) Respond via SOAP UDDI Registry Selfhelping Travel Web Service Provider Personal Travel Assistant
Web Services的分类(一) • 按用户与服务的相对位置划分 • 内部服务:用户与服务属于同一个公司 • 外部服务:用户与服务分属不同公司
Web Services的分类(二) • 从功能划分 • 面向内容的服务 • 提供数据为主,没有或极少量的计算 • 如,收集、整理多个站点内容的信息联盟 • 基础服务 • 为用户提供便于使用其它服务的信息 • 如,Microsoft Passport, 移动设备定位服务 • 面向业务的服务 • 提供业务逻辑与数据 • 如,iCare, StoreBrand
Web Services的开发生命周期 Web服务的开发生命周期包括以下4个阶段: • 创建:创建阶段包括开发和测试Web服务的实现、服务接口说明的定义和服务实现说明的定义。 • 安装:安装阶段包括把服务接口和服务实现的定义发送到服务请求者或服务注册处那里,并把服务的可执行程序放到一个可执行的环境中(通常是Web应用服务器)。 • 运行:在运行阶段,Web服务等待调用请求。这个时候,Web服务已经完全配置好,可以被不同的服务请求者通过网络访问和调用。而服务的请求者这个时候可以进行查找服务和绑定操作。 • 管理:管理阶段对Web服务应用程序进行监督、检查和控制等。比如安全性管理、性能管理、服务质量管理等。
Web Services的体系结构 • Web Services的技术架构 • Web Services的关键技术
Web Services的技术架构 ??? Routing, Reliability and Transaction Workflow: WSFL Service Discovery, Integration: UDDI Management Quality of Service Security Service Description: WSDL Messaging: SOAP Transport: HTTP, FTP, SMTP Internet: IPv4, IPv6
Web Services的技术架构(1/2) • 网络层:Web服务的基础是网络,因此网络层位于Web服务技术架构的底层。HTTP凭借其简单而广泛应用,成了Web服务实现中首选的网络协议。其他一些Internet协议,比如SMPT和FTP等,也可以用于Web服务。而在局域网内,则可以使用MQSeries、CORBA等应用范围不是很广的技术。 • XML的消息层:在网络层之上是基于XML的消息层,该层要求XML是消息协议的基础。目前,SOAP是最好的XML消息协议。 • 服务说明层:其实是一堆说明文档。WSDL用于描述基于XML的服务,支持对可交互服务的最小限度的描述。WSDL定义服务交互的接口和机制。
Web Services的技术架构(2/2) • 服务发布层:服务发布是指让服务的请求者得到WSDL文档,这个操作可以在服务请求者生命周期的任何阶段执行。 • 服务发现层:它的发现机制对应于服务发布层的发布机制。任何允许服务请求者得到服务说明并在运行时刻让应用程序使用的机制都可以被看做服务发现。最简单的发现方法是静态发现。还使用本地WSDL注册、私有UDDI注册或UDDI操作节点发现Web服务。 • 其他技术层面:为了满足当前电子商务的要求,Web服务应用程序必须满足企业级的需求,包括安全性、管理和服务质量等。
Web Services关键技术 Business Rules UDDI WSDL Web Services Technical Stack SOAP XML Common Network • SOAP (Simple Object Access Protocol) • 基于XML的Web services调用协议 • 类似CORBA/IIOP, RMI/JRMP • WSDL (Web Services Description Language) • 基于XML的Web services描述协议 • 类似 CORBA/IDL, RMI/Remote Interface • UDDI (Universal Description, Discovery and Integration) • 发布与定位Web services的注册表 • 类似CORBA Naming & Trader, RMI Registry
SOAP简介 • 定义 • 一种基于XML的轻载协议,用于分布环境中结构化与类型化信息的交换。 • SOAP 1.1: Userland, Microsoft, IBM, Lotus, DeveloperMentor • 自由的传输绑定 (不仅仅是HTTP) • 自由的语言绑定 (比如Java, C#) • 可插入的数据格式 (必须基于XML) • 完全的中立 (中立、公开的标准) • 独立于任何编程语言、对象模型、操作系统、平台
SOAP消息 消息头 消息体 信封 • 一条SOAP消息包括 • 一个信封(SOAP envelope) • 一个消息头(SOAP Header) • 一个消息体(SOAP Body)
数据封装概念 • SOAP消息(message): • 对等SOAP结点(SOAP nodes)间通讯的基本单位; • SOAP条目: • 是一个句法上的结构,它用于包含一个逻辑上的单一元素,这一元素是需要被SOAP结点处理的; • 一个SOAP条目是由该条目最外层元素的完整修饰名所标识的,这个完整修饰名是由一个局部名和一个命名空间URI组成的; • 封装在SOAP header中的SOAP条目成为Header条目,而封装在SOAP body中的SOAP条目为Body条目。
SOAP 消息格式(1) Service Provider User SOAP Request Web Service SOAP Response • Request/Response Message • Request 调用远端对象的某个方法 • Response 返回该方法运行后的输出结果