SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用方式进行交互。
SOA&组件模型(将通联):将…(不同功能单元)..通过…(接口和契约).联系起来&接口:&定义:中立&独立性:&操作系统&硬件平台编程语言&交互:统一和通用&
实体&服务提供者:提供符合契约的服务(自包含、无状态)→发布到代理&服务消费者:提出服务请求→发现并调用其他软件的服务&服务代理&存储库&目录库&票据交换所→产生提供者事先定义标准化接口→可供任何平台使用→松耦合&(约表款)&服务契约&服务注册表&服务条款&
服务&结构:是功能单元,可由多个组件组成。&特点&自包含&无状态&不依赖其他服务的状态&可编排:序列化成多个序列以执行商业逻辑&
SOA指定了一组实体,包括服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约,这些实体详细说明了如何提供和消费服务。服务提供者提供符合契约的服务,并将他们发布到服务代理。这些服务是自我包含的、无状态的实体,可以由多个组件组成。(所谓服务的无状态,是指服务不依赖于任何事先设定的条件,是状态无关的(state-free)。在 SOA 架构中,一个服务不会依赖于其他服务的状态。 它们从客户端接受服务请求。因为服务是无状态的,它们可以被编排(orchestrated)和序列化(sequenced)成多个序列 (有时还采用流水线机制) ,以执行商业逻辑。编排指的是序列化服务并提供数据处理逻辑。但不包括数据的展现功能。)服务代理者作为存储库、目录库或票据交换所,产生由服务提供者发布的事先定义的标准化接口,使得服务可以提供给在任何异构平台和任何用户接口使用。这种松散耦合和跨技术实现,使各服务在交互过程中无需考虑双方的内部实现细节、实现技术、以及部署在什么平台上,服务消费者只需要提出服务请求,就可以发现并调用其他的软件服务得到答案。
③SOA特点:(重合操透粗口)
SOA作为一种粗粒度、松耦合的架构,具有松散耦合、粗粒度服务、标准化的接口、位置和传输协议透明、服务的封装和重用、服务的互操作等几个特点。
UDDI:用于Web服务的注册与查找;
WSDL:用于描述Web服务的接口和操作功能;
SOAP:为建立Web服务和服务请求之间的通信提供支持,实现Web服务的远程调用;
BPEL:将分散的、功能单一的Web服务组织成一个复杂的有机应用。
以下内容背下,论文中用到:
服务提供者主要完成服务的设计、描述、定义和发布等相关工作;
服务注册中心保证该系统各个模块、服务的相互独立性与松耦合;
服务请求者通过WebService技术调用服务。
1、开发服务(Development Services)用于实现新开发的组件以及重用基础架构的能力。
2、业务创新优化服务(Business Innovation & Optimization Services)用于从 IT 和业务两个层面来监控和管理
运行情况。
3、管理服务(Management Services)包括对服务、应用和资源的管理和保护能力,如通过负载均衡来有效的
分配系统计算资源。
SOA 解决方案中的很多服务都是由已有应用系统提供的,接入服务(Access Services)提供访问已有应用或遗
留系统的能力,同时提供已有应用、打包应用程序与 ESB 之间的桥接能力,将已有系统中的功能和信息转化为
服务。
4、业务应用服务(Business App Services)指那些通过新的计算平台 JavaEE 来实现的新应用,它们所实现的
功能和信息也都转化为服务提供出来。
在业务流程需要与外部的合作伙伴、供应商交互的情况下,伙伴服务(Partner Services)提供文档、协议以及
伙伴管理的能力,比如说,可以提供企业边界处不同安全级别差异的转换。
5、信息服务(Information Services)是那些跟信息(而不是活动)有关系的服务,比如将多个系统中异构的数
据,聚合、转换为业务需要的统一整齐的业务数据对象来访问。信息服务通过联合、复制和转换来解决基于不
同实现方式的不同数据源之间的数据共享难题。
6、流程服务(Process Services)是指把多个服务聚合成为一个服务流程对应业务过程的服务,这种复合服务
通常是长时间运行的过程。流程服务提供服务控制能力,将多个服务串起来实现一个业务流程。
7、交互服务(Interaction Service)一方面将人的活动,通过人机交互以服务的方式出现在整个业务过程中,
作为流程服务)中的一部分;另一方面将 IT 的功能和数据传递给最终用户,并满足用户特定的使用习惯。
1、UDDI 协议
UDDI(统一描述、发现和集成协议)计划是一个广泛的、开放的行业计划,它使得商业实体能够(1)彼
此发现,(2)定义他们怎样在 Internet 上互相作用,并在一个全球的注册体系架构中共享信息。UDDI 是这样一种基础的系统构筑模块,他使商业实体能够快速、方便地使用他们自身的企业应用软件来发现合适的商业对等实体,并与其实施电子化的商业贸易。
UDDI 同时也是 Web 服务集成的一个体系框架。它包含了服务描述与发现的标准规范。UDDI 规范利用了
W3C 和 Internet 工程任务组织(IETF)的很多标准作为其实现基础,比如扩展标注语言(XML)、HTTP 和域名服务(DNS)等协议。另外,在跨平台的设计特性中,UDDI 主要采用了已经被提议给 W3C 的 SOAP(SimpleObject Access Protocol,简单对象访问协议)规范的早期版本。
2、WSDL 规范
WSDL 是 Web Services Description Language(Web 服务描述语言)的缩写,是一个用来描述 Web 服务和说明如何与 Web 服务通信的 XML 语言。它是 Web 服务的接口定义语言,由 Ariba、Intel、IBM、MS 等共同提出,通过 WSDL,可描述 Web 服务的三个基本属性:
1、服务做些什么——服务所提供的操作(方法);
2、如何访问服务——和服务交互的数据格式以及必要协议;
3、服务位于何处——协议相关的地址,如 URL。
WSDL 文档以端口集合的形式来描述 Web 服务,WSDL 服务描述包含对一组操作和消息的一个抽象定义,
绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。
3、SOAP 协议
SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协
议,是一个基于 XML 的协议。它包括四个部分:SOAP 封装(Envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;SOAP 编码规则(Encoding Rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC 表示(RPC Representation),表示远程过程调用和应答的协定;SOAP 绑定(Binding),使用底层协议交换信息。
服务实现的途径(Service Implementation Mediums)
将SOA看成是一个架构模型非常重要,它独立于任何技术平台。对于企业来说,可以根据它当前自身的技术优势来实现SOA,从而达到战略目标。
当前,服务可以通过以下三种方式实现:
(以上三种是Thomas Erl在SOA Design Patterns里提出的)
本质上说,我们选取任何技术在一个分布式系统中实现SOA。这个系列中将会介绍的多数设计模式都与实现方式无关,也有一些与实现相关。里面有些例子基于Web services,因为它从面向服务的历史上看是最为流行的。
服务即组件(Services as Components)
一个组件是为一个分布式系统设计一部分程序,它提供一个接口(interface),传统的API通常是将它的能力作为方法暴露,让其他的程序进行显性访问,与传统API不同的是,组件通常依赖于具体平台的开发和运行时技术。比如,组件可以通过Java或者.NET工具开发,然后部署到运行环境中,与其他组件相互通信以支持技术需求。
服务即Web Services(Services as Web Services)
Web service提供物理上解耦的技术契约(contract),这个契约包括了WSDL定义,一个或多个XML Schema的定义以及可能的WS-Policy的表达式。面向服务的思想可以应用到对于Web services的设计之中。Web services 提供了一个架构模型,它利用服务契约(service contract)来进行物理解耦,在面向服务的过程中,它的技术中立性(vendor-neutral)也有助于达到设计上的某些目的。
REST服务(REST Services)
表述性状态转移(REST)为分布式系统提供了一种基于资源(resources)的实现方式。REST services(或RESTful Services)是一个强调简单、可伸缩性和可用性的轻量程序。REST services也可以被用来应用面向服务的原则。
SOA的实施具有几个鲜明的基本特征。实施SOA的关键目标是实现企业IT资产的最大化作用。要实现这一目标,就要在实施SOA的过程中牢记以下特征:
可从企业外部访问
随时可用
粗粒度的服务接口分级
松散耦合
可重用的服务
服务接口设计管理
标准化的服务接口
支持各种消息模式
精确定义的服务契约
转存失败重新上传取消
图1:SOA蓝图 [1]
SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, Web Services Description Language)是用于描述服务的标准语言。
SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。
在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。
每项SOA服务都有一个与之相关的服务品质(QoS, quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信(译注:可靠消息是指,确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。
一,SOA可通过互联网服务器发布,从而突破企业内网的限制,实现与供应链上下游伙伴业务的紧密结合。通过SOA架构,企业可以与其业务伙伴直接建立新渠道,建立新伙伴的成本得以降低。
二,SOA与平台无关,减少了业务应用实现的限制。要将企业的业务伙伴整合到企业的“大”业务系统中,对其业务伙伴具体采用什么技术没有限制。
三, SOA具有低耦合性特点,业务伙伴对整个业务系统的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费用会越来越多。
四, SOA具有可按模块分阶段进行实施的优势。可以成功一步再做下一步,将实施对企业的冲击减少到最小。
五, SOA的实施可能并不具有成本显著性。这要分三种情况加以讨论:
(1) 当企业从零开始构建业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。
(2) 当企业业务发展或发生企业重组等变化而原有系统不能满足需要,而需要重构业务系统时,采用SOA架构与不采用SOA架构成本可看做是相同的。
(3) 当企业业务发生缓慢变化并可预见到将来需要重构业务系统时,由于可以按模块分阶段逐步实施SOA以适应变化的需要,这样企业不需一下投入一大笔经费进行系统改造,而是根据企业业务发展情况和资金情况逐步投入,缓解了信息投入的压力。
网文1:
SOA作为一种粗粒度、松耦合的架构,具有松散耦合、粗粒度服务、标准化的接口、位置和传输协议透明、服务的封装和重用、服务的互操作等几个特点。
网文2:
利用SOA架构开发的优点:
第一、更易维护
业务服务提供者和业务服务使用者的松散耦合关系及对开放标准的采用确保了该特性的实现。建立在以 SOA基础上的信息系统,当需求发生变化的时候,不需要修改提供业务服务的接口,只需要调整业务服务流程或者修改操作即可,整个应用系统也更容易被维护。
第二、更高的可用性
该特点是在于服务提供者和服务使用者的松散耦合关系上得以发挥与体现。使用者无须了解提供者的具休实现细节。
第三、更好的伸缩性
依靠业务服务设计、开发和部署等所采用的架构模型实现伸缩性。使得服务提供者可以互相彼此独立地进行调整,以满足新的服务需求。
网文3(推荐,理解记忆,能自己描述):(范文《2、SOA2:论SOA在企业集成架构设计中的应用》)
总体来讲,选用SOA有如下优势:
1、系统更易维护。当需求发生变化时,不需要修改提供业务服务接口,只需要调整业务服务流程或者修改操作即可。
2、更高的可用性。该特点是在于服务提供者和服务请求者的松散耦合关系上得以发挥与体现。这种没有绑定在特定实现上、具有中立的接口定义的特征称为服务之间的松耦合。松耦合有两个明显的优势,一是它的灵活性,其独立于实现服务的硬件平台、操作系统和编程语言;二是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。
3、更好的伸缩性,依靠业务服务设计、开发和部署等所采用的架构模型实现伸缩性。使得服务提供者可以互相彼此独立地进行调整,以满足新的服务需求。
1、减少了系统的性能;
2、在向标准化过度的转换过程,增加了简介费用;
3、很多没有太多意义的文件型信息;
4、对商业流程的计划要求甚高;
来自网文:https://blog.csdn.net/topofyou/article/details/78937198
以下按照实现步骤划分:
第一步:服务提取
(1)业务流程划分
寻找业务流程中功能缺失部分→流程优化→得出功能
(2)服务提取
包括服务的识别、筛选、确认。重点讲识别
流程划分的基础上→涉及的功能模块进行识别(保证复用性)→功能模块抽象为接口→根据接口需要完成服务的WSDL文档→文档发布到各涉及改造的应用开发组→由各开发组分别实现各自服务
第二步:服务编排
两种实现方式二选一:
(1)通过依次调用的方式将流程的所需要的应用数据逐个获取
(2)通过服务编排手段实现业务流程,再将结果整体交付(用户体验好)
具体实现(这里的实现没有提到SOA三角色?待考虑):
引入ESB总线→ESB为分散在各应用中的服务提供了统一的管理→应用只需要将服务注册到ESB中就可以完成服务的发布→每一个业务流程的都实现了一个统一对外发布接口