Transcript Document

软件体系结构调研
Service-Oriented Architecture
(面向服务的体系结构)
学号:MF0933046
姓名:张国华
一、SOA的定义
面向服务的体系结构(Service-Oriented Architecture,SOA)
是一个组件模型,它将应用程序的不同功能单元(称为服务)通
过这些服务之间定义良好的接口和契约联系起来。接口是采用中
立的方式进行定义的,它应该独立于实现服务的硬件平台、操作
系统和编程语言。这使得构建在各种这样的系统中的服务可以一
种统一和通用的方式进行交互 。
CBDI的定义:
The policies, practices, frameworks that enable application
functionality to be provided and consumed as sets of services
published at a granularity relevant to the service consumer.
Services can be invoked, published and discovered, and are
abstracted away from the implementation using a single,
standards-based form of interface.
二、为什么选择SOA?
不同种类的操作系统,应用软件,系统软件和应用基础结构
(application infrastructure)相互交织,这便是IT企业的现状。一些
现存的应用程序被用来处理当前的业务流程(business processes),
因此从头建立一个新的基础环境是不可能的。企业应该能对业务的变
化做出快速的反应,利用对现有的应用程序和应用基础结构
(application infrastructure)的投资来解决新的业务需求,为客户,
商业伙伴以及供应商提供新的互动渠道,并呈现一个可以支持有机业
务(organic business)的构架。SOA凭借其松耦合的特性,使得企
业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的
业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企
业现有的或已有的应用作为服务, 从而保护了现有的IT基础建设投资。
三、SOA的目标架构
四、SOA参考架构——逻辑视角
四、SOA参考架构——功能视角
五、SOA的特性
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的三大基本特征
1 独立的功能实体
在Internet这样松散的使用环境中,任何访问请求都有可能出错,
因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问
题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能
力。传统的组件技术,如.NET Remoting,EJB,COM或者CORBA,
都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;
当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本
身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用
服务就会受到影响。
SOA架构中非常强调实体自我管理和恢复能力。常见的用来进
行自我恢复的技术,比如事务处理(Transaction),消息队列
(Message Queue),冗余部署(Redundant Deployment)和集群系统
(Cluster)在SOA中都起到至关重要的作用。
SOA的三大基本特征
2 大数据量低频率访问
对于.NET Remoting,EJB或者XML-RPC这些传统的分布式计
算模型而言,他们的服务提供都是通过函数调用的方式进行的,一
个功能的完成往往需要通过客户端和服务器来回很多次函数调用才
能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性
带来的影响都可以忽略不计,但是在Internet环境下这些因素往往是
决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统
推荐采用大数据量的方式一次性进行信息交换。
SOA的三大基本特征
3 基于文本的消息传递
由于Internet中大量异构系统的存在决定了SOA系统必须采用基于
文本而非二进制的消息传递方式。在COM、CORBA这些传统的组件
模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户
端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,
不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给
不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身
是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数
据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。
此外,对于一个服务来说,Internet与局域网最大的一个区别就是
在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松
散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数
据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的
数据,从而得到的非常理想的兼容性。
七、SOA的优势
一,SOA可通过互联网服务器发布,从而突破企业内网的限制,实
现与供应链上下游伙伴业务的紧密结合。通过SOA架构,企业可以与其业
务伙伴直接建立新渠道,建立新伙伴的成本得以降低。
二,SOA与平台无关,减少了业务应用实现的限制。要将企业的业务
伙伴整合到企业的“大”业务系统中,对其业务伙伴具体采用什么技术没
有限制。
三, SOA具有低耦合性特点,增加和减少业务伙伴对整个业务系统
的影响较低。在企业与各业务伙伴关系不断发生变化的情况下,节省的费
用会越来越多。
四, SOA具有可按模块分阶段进行实施的优势。可以成功一步再做
下一步,将实施对企业的冲击减少到最小。
SOA的优势
五, SOA的实施可能并不具有成本显著性。这要分三种情况加以讨论:
■当企业从零开始构建业务系统时,采用SOA架构与不采用SOA架
构成本可看做是相同的。
■当企业业务发展或发生企业重组等变化而原有系统不能满足需要,
而需要重构业务系统时,采用SOA架构与不采用SOA架构成本可看做是
相同的。
■当企业业务发生缓慢变化并可预见到将来需要重构业务系统时,由
于可以按模块分阶段逐步实施SOA以适应变化的需要,这样企业不需一
下投入一大笔经费进行系统改造,而是根据企业业务发展情况和资金情
况逐步投入,缓解了信息投入的压力。
八、SOA对于软件架构的影响
在系统中引入SOA后需要在软件架构方面做出的改变:
•使用基于文本方式的SOAP调用,摆脱远程调用中出现的函数参数
类型等与数据无关的信息,保证所有SOAP传递的都是有意义的商
业数据。依赖于Schema,而不是类定义对这些数据进行解释。
* 传统的三层Web应用将可能变成四层结构:传统意义上的商业逻
辑层将被进一步划分为存放每个会话(Session)信息的客户逻辑层和
与状态无关Sateless的SOA层。
九、SOA应用场景
当前最适于采用SOA方法与技术来构建的应用系统主要场景是
各种系统间的集成,包括数据集成、流程集成和界面集成。由于技
术原因在当前阶段,SOA方法与技术还不适用于单个应用系统的建
立。当前可能的主要应用场景包括:
●跨部门资产(资源)联合使用
●组织内部或组织之间应用整合需要,可以适应未来变化,实现对已有
资产(资源)的保护,简化开发
●互联网环境下虚拟企业的建立,可以利用互联网上的服务进行组合提
供新的业务服务
●为用户提供多渠道支持服务,服务接口的统一,有利于服务展现方式
和服务渠道的多样化
十、SOA在中国应用现状
目前SOA在国外已经得到很好的应用和发展,像IBM和BEA等公司
也相继推出了成套的产品。但调查显示有近74%的中国企业目前针对
SOA未采取任何行动。仅有7.61%的企业“在企业IT和业务流程架构中全
面部署SOA”。
但同时数据也显示70.65%的中国企业已经认识到SOA的价值,认为
SOA能弥补现有IT系统的不足、有助于业务发展等。
约38%的企业认为,SOA最吸引其之处,是有利于开发新的商业流
程;约51%认为能提高现有的商业流程的灵活性。……24%左右选择降
低开发成本,这源于SOA所带来的标准化,容易产生规模效率,使企业
降低系统重复开发和维护的成本;同时其“松耦合、构件化”的特点也
使得其能更加灵活地开发新应用,约有23%的人对SOA这一优势情有独
钟。
十一、成功实施SOA的特征
★在架构开发上要有前瞻性,即不要只局限于基本的连通性,而
要更多地关注架构本身。
★ 加强IT与商业流程之间的关联,把IT提升到商业功能服务提供
者的角色。
★制定一个能够支持SOA的组织结构,其中包含文化、技能、培
训、团队建设、决策、激励机制、协作及治理等方面。
★基础设施要具备可升级性,通过正确的工具和测量方法,设定
服务的可升级性基准。
★提高操作的可见度和透明度,注重服务治理和服务管理。
十二、SOA发展趋势
◆面向服务的原理将会复苏 ,因为有效的治理和云服务的交付
都会需要它们,即使不一定被叫做SOA。
◆随着经济的复苏,将会涌现出大量的创业项目,无论是个人
还是已经建立的团队,很多都会依赖云服务起来展开他们的运营。
而面向服务的原则是其基础。
◆随着企业摆脱经济恐慌,并寻求更具侵略性的成长,它们对
分析仪表盘的依赖会大大加强,对复杂事件处理(CEP)的兴趣将持
续增长,而这需要事件驱动架构(EDA)来支撑。
◆通过SOA来改善质量,时间表和数据流的可信赖性将得到更
多的关注。数据服务会变成SOA工作中越来越重要的组件。
◆厂商将会更少地讨论“SOA”,而更多地提及“云”。不论
对不对,实际上在他们看来,这两个词是可以替换的。
SOA发展趋势
◆云治理将会在组织中越来越重要,因为他们发现得到的是一团杂乱
的点对点云服务,而没有一个统一可度量的中心,这预计会大大促进SOA
治理工具和云服务注册库的应用。
◆更多的SOA功能和产品都将会在云上发布。如按“集成即服务”等
方式。
◆微软,借助Oslo、WCF、BizTalk和.NET Framework,将会进一步
促进中小型企业的面向服务进程——大部分也会是基于云来发布的。
◆ SOAP和WS-*(这些年一直是Web Service的核心)会被轻量级协
议(如REST)挤到一边,更多地SOA工作将会结合SOAP和基于REST的
服务来做。
◆企业混搭将会是最常见的用户访问后端服务的形式,这也许能帮助
商业用户更好的理解SOA到底是什么。
谢谢!