浅析SOA架构的十大技术理论体系
- 格式:doc
- 大小:44.50 KB
- 文档页数:5
SOASOA是一种软件架构SOA的核心概念SOA架构的特点:1、松散耦合2、分离关注点(业务和技术)SOA的引入分为四个阶段,成熟度模型1、第一个阶段:现有业务系统或新系统中服务的发现、设计和实现(服务化)2、第二个阶段:引入ESB,对系统提供的服务进行集中管理3、第三个阶段:使用BPEL流程,以快捷的交付业务功能4、第四个阶段:SOA治理总线的优点:解耦、标准化、灵活地扩展ESB的主要职能:服务的路由、协议的切换、内容的转换将来SOA的集成主要应用四大领域1、应用集成(服务集成):面向应用系统的服务互操作(Web Services、IBM MQ、Active MQ)2、界面集成:用统一的界面展示企业内多系统(Portal)3、业务流程集成:使用BPEL技术将服务编排成流程(WPS,Oracle BPEL)4、数据集成:面向海量数据异构数据库的汇集处理(数据交换:ETL产品)DataStage开发SOA架构思路1、设计整体系统总览图(分析待开发、待改造的业务系统的涵盖领域)2、对IT系统进行系统内和系统间的服务的分析设计思路:首先从系统间集成的要求来发现系统内的服务,然后进行分解成系统内的原子服务3、根据业务要求进行设计制定流程,并指定流程中包含的活动和使用的服务。
4、定义使用外部服务,和进行新服务的开发5、通过服务的组合和编排来推出新的流程注:流程指的BPEL流程基于SOA思想的技术架构一、规范SOA的规范:SCA、SDO、BPEL流行的松散耦合技术规范:Web Service(WSDL、SOAP、UDDI)Portal方面的规范:Portlet规范二、技术框架SCA、SDO的框架:apache-tuscany-sca,apache-tuscany-sdoWeb Service框架:Axis1/2;XFire;CXF;Spring WS.NET平台:VS2005,需要安装Web Services Enhancements (WSE) 3.0 for Microsoft .NETVS2008/VS2010,WCF(Windows Communication Foundation)三、产品ESB Server/Process Server/Portal Server/消息中间件商业:IBM系列:IBM WebSphere ESB Server/IBM Message Broker;IBM WebSphere Process Server;IBM WebSphere Portal Server;IBM WebSphere MQOracle/BEA系列: Oracel Aqulogic Service Bus;Oracle BPEL Server;Oracle Portal ServerMicrosoft系列:Microsoft BizTalk Server;Windows Workflow Foundation;SharePoint Portal Server ;Windows Communication Foundation开源系列:ESB:JBOSS ESB,Mule;apache-servicemixProcess: JBOSS JBPM,ActiveBPELPortal:Apache JETSPEED...消息中间件:ActiveMQSOA案例1、ESB2、BPEL。
SOA的架构层次面向服务的架构(SOA)是一种灵活、松耦合的系统设计方法,它将应用程序的不同功能单元(称为“服务”)通过这些服务之间定义良好的接口和契约联系起来。
这种方法使得系统中的服务可以以一种统一和通用的方式进行交互,从而实现了系统的高内聚、低耦合。
本文将深入探讨SOA的架构层次,分析其各个组成部分及其在系统设计和实现中的作用。
一、服务层服务层是SOA架构的核心,它包含了一组可复用的、粗粒度的服务。
这些服务是业务逻辑的封装,具有明确的接口定义,可以独立部署和升级。
服务层的设计需要遵循一定的原则,如服务的无状态性、服务的自治性、服务的可发现性等。
这些原则保证了服务的可靠性、可维护性和可扩展性。
二、服务注册与发现层服务注册与发现层负责服务的注册、查找和管理。
当一个新的服务被创建并部署到系统中时,它需要在服务注册中心进行注册,将自己的接口定义、访问地址等信息发布到注册中心。
其他服务或客户端可以通过服务发现机制在注册中心查找所需的服务,并获取其访问信息。
这一层为系统提供了动态的服务绑定能力,使得服务之间的依赖关系更加灵活和可扩展。
三、传输层传输层负责数据的传输和通信。
在SOA架构中,服务之间的通信通常基于开放的标准协议,如HTTP、SOAP、REST等。
这些协议保证了服务之间的互操作性和跨平台性。
传输层还需要处理诸如消息格式转换、加密解密、压缩解压缩等底层细节,以确保数据的完整性和安全性。
四、业务流程层业务流程层负责将服务组合成业务流程。
一个业务流程可能涉及多个服务的协同工作,以完成某个具体的业务目标。
业务流程层通过编排和协调这些服务,实现了业务流程的自动化和智能化。
此外,业务流程层还可以根据业务需求对服务进行动态调整和优化,以提高系统的响应速度和资源利用率。
五、表示层表示层是系统的用户界面,负责与用户进行交互。
在SOA架构中,表示层可以通过调用服务层提供的服务来获取数据并进行展示。
由于服务层提供了统一的接口和数据格式,表示层可以更加灵活地设计和实现用户界面,以满足不同用户的需求和偏好。
一个SOA架构技术概览SOA(Service-Oriented Architecture,面向服务的架构)是一种软件架构风格,它将应用程序的功能划分为可重用的服务,这些服务可以通过网络进行交互。
SOA架构的目标是实现应用程序和业务流程的松耦合。
SOA架构技术概览如下:1.服务描述:在SOA架构中,每个服务都需要有详细的描述,包括服务的名称、接口、操作、输入和输出等信息。
这些描述通常使用统一描述语言(如WSDL)来定义,以便服务提供者和服务消费者可以共享和理解服务的功能和操作。
2. 服务注册与发现:在SOA架构中,服务注册与发现非常重要。
服务提供者需要将其服务注册到服务注册中心,以便服务消费者可以在运行时动态地发现并调用服务。
常用的服务注册与发现机制包括UDDI (Universal Description, Discovery, and Integration)和Service Registry。
3. 服务组合:SOA架构中的服务是可以组合的,通过将多个服务按照特定的顺序或条件进行组合,可以创建更复杂的业务流程。
常用的服务组合技术包括BPEL(Business Process Execution Language)和ESB (Enterprise Service Bus)。
4. 服务编排:服务编排是指将多个服务按照特定的逻辑规则进行编排和调度,以实现特定的业务逻辑。
常见的服务编排技术包括业务流程管理工具(如jBPM)和规则引擎(如Drools)。
5.服务安全:由于SOA架构中的服务是通过网络进行交互的,因此服务安全是一个重要的问题。
常见的服务安全机制包括消息加密和签名、访问控制、身份验证和授权。
6.服务监控与管理:在SOA架构中,对于运行中的服务进行监控和管理是至关重要的。
常见的服务监控与管理技术包括服务性能监控、错误日志记录、故障恢复和负载均衡。
7.服务测试和部署:SOA架构中的服务需要经过充分的测试和部署,以确保其质量和可靠性。
解析SOA架构与相关技术SOA(服务导向架构)是一种设计和构建应用程序的软件架构风格,它将应用程序的功能划分为一组可以独立运行和管理的服务。
服务之间通过网络进行通信,并通过一套标准的接口定义和协议交换数据。
SOA架构的核心思想是将复杂的应用程序拆分为一系列相对独立的服务,每个服务都具有明确定义的接口,并且可以独立开发、部署和维护。
这种模块化的设计使得应用程序更易于扩展和升级,同时也提高了开发的效率和重用性。
在SOA架构中,服务是一种可组合的单元,可以进行组合和重组以满足不同的业务需求。
服务可以由不同的组织或团队开发,并且可以在不同的技术平台上运行。
这种松耦合的设计使得服务可以独立演化和升级,而不会对整个系统产生影响。
与SOA架构相关的一些技术包括:1. 服务描述语言(Service Description Language,SDL):用于描述服务的接口和功能。
常见的SDL包括WSDL(Web ServicesDescription Language)和RESTful API。
2. 服务注册与发现:用于管理和查找可用的服务。
常见的技术包括UDDI(Universal Description, Discovery, and Integration)和Zookeeper。
3. 服务编排:用于组合和协调多个服务以完成复杂的业务流程。
常见的技术包括BPEL(Business Process Execution Language)和Camel。
4. 服务治理:用于管理和监控服务的运行状态和行为。
包括安全性、可靠性、性能等方面的管理。
常见的技术包括ESB(Enterprise Service Bus)和API网关。
5. 服务交互:用于实现服务之间的通信和数据交换。
常见的技术包括SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)。
SOA十大原则作者Stefan Tilkov译者戴强斌发布于2007年4月10日上午4时27分在与许多客户的接触中,我发现有必要建立一套SOA的基本原则。
下面的部分将介绍SOA 中应有的基本原则。
这些并非绝对真理,它们更像一个用于SOA相关讨论的参考框架。
你会发现:前四项衍生自Don Box提出的四项原则,尽管随着时间的流逝,这四项原则的描述可能已经有了些变化。
1.明确边界服务被调用时,与实现其功能相关的内容都应被传递过来。
对服务的所有访问都应该通过公共接口进行。
调用服务时,非隐含的假设是必须的。
“服务与消息紧密联系,因为参数进出服务的唯一方式是通过消息进行的”。
作为通用的模式,服务调用不应依赖于共享的上下文,而应被作为无状态的模块。
契约描述了服务的功能性与非功能性的能力和特点,管理着服务提供的接口。
服务调用是一个具有业务逻辑效果的行为,可能有大量的资源开销,并且导致一系列不同于本地方法调用和远程过程调用的错误。
服务的调用绝非远程过程调用。
服务的使用和提供应该尽可能地简单,因此与服务间的交互没必要被隐藏得太多。
在SOA中,服务发送和接收的消息、服务契约以及服务本身都应当是最好的构件。
这就意味着,例如,被用到的编程模型和工具至少应该提供一个API,这个API会帮助服务的编程人员了解上述概念。
总的来说,一个明确的接口会封装服务的内在实现,而服务通过该接口发布自己的功能;与服务交互是一个具体的行为,它依赖于服务使用者和提供者之间消息的传递。
2.共享契约和架构,而不是类基于一份服务描述(一份契约),服务使用者和服务提供者都可以获得使用或提供服务的全部所需。
根据松耦合原则,服务提供者不能依靠服务使用者来重用那些依赖于使用者环境的代码。
毕竟,服务使用者可能使用不同的开发环境和运行环境。
这条原则给SOA体系中所能交换的数据加上了严格的限制。
理想的情况是,数据以符合一种或多种模式的XML文档形式被交换,因为这种方式可应用于任何你能想到的编程环境。
SOA面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。
松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。
而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。
对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。
我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。
虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。
虽然基于SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。
由于它考虑到了系统内的对象,所以虽然SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。
不同之处在于接口本身。
SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与SOA 相似。
然而,现在的SOA 已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。
面向服务架构的十大技术与基础理论体系中科院软件所研究员仲萃豪前言实践论认为:从实践提升到理论,再由理论指导实践,由此向前发展。
目前SOA的发展的情况正是如此,通过不少实践,SOA的模型己经被公认为标准规范,目前是正需要进一步总结上升到理论的时候了。
当前国内要发展SOA主要有三方面工作:方法、工具和环境。
方法是工程技术,由基础理论来指导提出的。
所以一门科学必需要包括:认知科学(哲理)、工程技术和方法、最后是理论。
SOA是从面向对象、构件架构等逐步发展完善,且相互依托、相互补充、又各自适应不同范围,因此在讨论SOA理论时,要了解它是如何演化过程来,继承了那些理论体系,其适应度如何。
SOA的第一个技术与理论体系为结构编程方法40年前国际上发生了“软件危机”,如IBM公司开发一个操作系统、或美国的航空公司开发飞机订票系统,都花费了上千人年的工作量,开发周期长、而开发出来的产品却是错误很多,难以维护和适应修改。
正在此时,一位荷兰的物理家E.W.Dijkstra提出了一种“结构程序设计方法”,他认为:人的智力是有限的,采用数学或物理学的思维方法,用枚举、抽象、归纳、类比等思维方式简化问题。
由于我也是数学系毕业的,我拜读了他的所有论文,就编写一本著作“编程方法学”,此书曾三次获得著作大奖,并在全国十多所名牌大学讲过课。
用此方法扩展到软件设计中时,称为“结构化分析和结构化设计(SASD)”。
所谓“结构程序设计方法”,就是基于面向对象设计方法的早期蓝本,侧重於解决程序正确性的编程的方法,以此为基础建立了软件工程这门学科,建立了编程的基础理论体系。
解决软件开发效率的第二个基础理论体系是“面向对象”的可重用理论我们都知道由面向对象发展到面向构件,由面向构件再发展到面向服务,因此它们的认知观和基础理论都是息息相关的,解决大型软件的开发效率和质量除了要解决编程的正确性外,还必需解决开发周期长、复用性差、成本高、文档多、以及难以适应系统演化等问题,十多年来仍旧困惑着这门学科,“软件危机”仍未解决。
实践论认为:从实践提升到理论,再由理论指导实践,由此向前发展。
目前SOA的发展的情况正是如此,通过不少实践,SOA的模型己经被公认为标准规范,目前是正需要进一步总结上升到理论的时候了。
当前国内要发展SOA主要有三方面工作:方法、工具和环境。
方法是工程技术,由基础理论来指导提出的。
所以一门科学必需要包括:认知科学(哲理)、工程技术和方法、最后是理论。
架构的演化过程
SOA是从面向对象、构件架构等逐步发展完善,且相互依托、相互补充、又各自适应不同范围,因此在讨论SOA理论时,要了解它是如何演化过程来,继承了哪些理论体系,其适应度如何。
结构编程方法
40年前国际上发生了“软件危机”,如IBM公司开发一个操作系统,或美国的航空公司开发飞机订票系统,都花费了上千人数年的工作量。
它开发周期长、而开发出来的产品却是错误很多,难以维护和适应修改。
正在此时,一位荷兰的物理家E.W.Dijkstra提出了一种“结构程序设计方法”,他认为:人的智力是有限的,采用数学或物理学的思维方法,用枚举、抽象、归纳、类比等思维方式简化问题。
由于我也是数学系毕业的,我拜读了他的所有论文,就编写一本著作《编程方法学》。
用此方法扩展到软件设计中时,称为“结构化分析和结构化设计(SASD)”。
所谓“结构程序设计方法”,就是基于面向对象设计方法的早期蓝本,侧重於解决程序正确性的编程的方法,以此为基础建立了软件工程这门学科,建立了编程的基础理论体系,也是第一个技术与基础理论体系。
“面向对象”的可重用理论
我们都知道由面向对象发展到面向构件,由面向构件再发展到面向服务,因此它们的认知观和基础理论都是息息相关的。
解决大型软件的开发效率和质量除了要解决编程的正确性外,还必需解决开发周期长、复用性差、成本高、文档多以及难以适应系统演化等问题,这些问题十多年来仍旧困惑着这门学科,“软件危机”仍未解决。
人们的知识是从一个定理、一个原理逐步积累起来的,社会是依靠知识的不断积累发展的。
然而编制软件每次却都是从零开始,这是造成“软件危机”的根本原因。
由此提出了编程工作是否也可以重用以前成功的经验和程序呢?整整经过十多年的探索,到七十年代才获得成功。
我曾经用此方法设计了一个大型操作系统,这套方法和理论在产品开发和科研领域方面用得很多,因此我称它为第二个技术与基础理论体系。
面向构件和架构
鉴于面向对象的缺陷,三位面向对象的奠基人联合起来,创建了UML统一建模语言。
UML为软件开发和SOA的产生起到奠基和里程碑的作用。
UML主要理论成果是:统一面向对象的基本概念,并引进了许多新的概念,认为软件开发的过程实质上是从抽象的模型逐步细化,过渡到具体的实现,其中间的每个阶段都是实现了某一抽象模型,UML为此提供了建立模型的工具。
用直觉的图形来建立模型,从此软件专家就有了自己的工具,正如音乐家有了五线谱工具那样。
为适应软件的多变性,提供了演化的概念。
实际上此建模理论是第三个技术与基础理论体系,它为演化到构件和架构概念奠定基础理论模型。
由于工程上的实施缺乏开发规范,在技术上要求开发人员的素质较高,很少见到真正运用UML的方法于实际的工程开发应用软件中,最大的问题是被开发出来的软件难以演化,而软件要能适应变化是客观存在的。
为此发展出单纯重用的“构件和架构”技术及其理论体系。
在1998年日本京都召开的“基于构件的软件开发(CBSD)”国际专题学术会议上,一致认为软件开发技术离不开构件和体系结构。
软件体系结构现简称“架构”。
在此之前的软件架构都采用层次结构的架构,直到分布式系统提出了用户端/服务器模式后,才产生对架构的研究,出现了构件和架构,也就是第四个技术与基础理论体系。
卡内基·梅隆大学为软件的架构和框架建立了扎实的基础理论,软件体系结构是软件系统的高级抽象,体现了软件设计思想。
反映了系统开发中最早的决策,明确了系统有哪几部分组成,它们之间是如何交互的;进一步影响到资源的配置、团队的组织以及产品的质量。
系统的成败也在于体系结构。
三层体系结构分布式系统
三层体系结构是由二层结构的胖终端中的应用构件独立出来组成了应用层。
为解决分布式系统中的各种潜在复杂性,提出了中间件技术及其理论,称为第五个技术与基础理论体系。
八年前我的最后一位博士生王文军的学位论文是《分布式系统的联邦结构》,即面向服务的架构,但未被应用和发展。
而两年前IBM公司提出SOA后却很快被广泛接受,其原因可从客观需求上和技术成熟度上三方面来叙述:
其一,客观上需要,随着网络普及化,用户越来越迫切需要将现有多个应用系统集成,以能实现更强的信息处理功能。
如电子商务的供应链、智能交通、电子政务、数字地球等已是本世纪发展的热点。
Gartner预计,到2008年基于件产品将占领70%的市场份额。
其二,面向对象和构件架构的基础理论和技术已趋向成熟,发展到统一建模语言,提供建模工具。
中间件集群理论己趋向成熟,并提出了中间件Inter Bus技术。
其三,浏览器技术普及,己成为行业标准,奠定了SOA的基础理论和技术规范,由此已是水到渠成,使SOA拙壮成长。
SOA在实现中的组成部分
SOA的体系结构仍旧是三层或N层结构,但对异构平台各层之间的联系,不是用CORBA、J2EE或.NET的方式,而且用WBDL和SOA P来实现,它们的概念简单统一。
目前都是采用嵌入ESB企业服务总线的平台来实现,ESB是一个中间件群,确保系统实现了服务接口、各种中间件以及松耦合的三个方面功能,因此称它为第六个技术与基础理论体系。
另外,普遍采用BPEL(业务过程执行语言)来描述用户需求,由BPM(业务过程管理平台)来解释执行,构成了第七个技术与基础理论。
SOA的主要优点
1. 利用现有的资产。
方法是将这些现有的资产包装成提供企业功能的服务。
组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。
2. 更易于集成和管理复杂性。
将基础设施和实现发生的改变所带来的影响降到最低限度。
因为复杂性是隔离的,当更多的企业一起协作提供价值链时,这会变得更加重要。
3. 更快地整合现实。
通过利用现有的构件和服务,可以减少完成软件开发生命周期所需的时间。
这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和缩短开发时间。
4. 减少成本和增加重用。
通过以松散耦合的方式公开业务服务,企业可以根据业务要求更轻松地使用和组合服务。
5. SOA业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。
建立软件开发方法和规范
构件构架理论体系的应用是适用于构件技术创立的,当发展到面向服务的体系结构时,必需加以修改和扩充,现在称为模型驱动MDD的需求工程建模理论,可以称它为第八个技术与基础理论体系。
另一个构件的领域工程将要扩充成SOA的参考结构,这是第九个技术与基础理论体系。
SOA的门户将要反映SOA所有功能的表现层界面,为此如何将最新的WEB2.0与SOA给合,这是第十个技术与基础理论体系。
上述三方面是SOA在实际应用时必需要建立的理论和技术。
SOA的发展状况
IBM公开宣布SOA计划不到三年,去年年底,BEA公司、甲骨文公司、惠普等所有名牌公司都在中国发布了关于SOA的消息。
由于SOA模型统一,因此都是把本公司的中间件产品向SOA靠拢,提供开发和运行SOA系统的相应工具和环境,以争取市场的份额。
北京市市科委将为SOA核心平台研发提供资金,由软件行业促进中心统一管理,促进北京市IP行业发展。
其方案如图所示。
随着SOA理论的发展,各种与SOA有关的规范和标准将不断出现,如SOA P、WSDL、ESB、BEPL语言等,它们的出现象征着SOA将逐步走向成熟。
我们更应注意着各家公司所开发的工具和环境产品,有助于SOA的大力推广应用。
上述十大理论体系应该认真掌握、灵活应用,更应该不断刨新。
总之,SOA理念清晰、技术趋向成熟,实现不难、做好不容易,我们不要做重复工作,应经常交流,尽量少重复,一定能达到国际一流水平。