看了篇文章,对SOA有了初步的理解。可以把SOA架构看作成一个完整的企业架构,企业里有各种业务(业务系统),每个业务都有自己的服务,业务通过ESB(企业服务总线)串联起来,有个服务注册中心,业务把自己的服务注册到注册中心。消费者可以在注册中心找到自己的服务,完成自己的需求。达到一站式服务,就像超级商场和小卖铺的区别一下。
以下是这篇文章。
简介
最早在1996年, Gartner就提出了SOA的概念,为SOA描述的远景目标是:在于让IT变得更有弹性,以更快地响应业务单位的需求,实现实时企业(Real-Time Enterprise)。后来在IBM、BEA等IT巨头的推动下,各种技术逐渐完备。截止到目前为止,业界还没有一个统一的SOA定义。SOA是一种软件系统架构,其通过松耦合的方式,将各个组件的不同功能单元——服务(Service)——连接起来。SOA的核心是服务(Service),与服务相关的实体还有服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约等。
W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。
服务代理者(Services Broker)是一个服务存储库,它允许服务提供者发布服务到该服务存储库上并使服务请求者能够找到这些服务。服务发布者(Services Provider)提供符合契约(Contract)的服务,并将这些服务发布到服务代理者(Services Broker)。服务请求者(Services Consumer),也被称为服务消费者,通过查找服务代理者(Services Broker)中的服务,找到想要的服务。
服务本身是无状态(Stateless)的,可以有一到多个组件(Component)组成。服务的表现形式可以是多种多样的,既可以嵌入到页面响应服务请求,也可以作为一个服务接口用来被调用。服务的实现没有技术限制,可以是用各种语言来实现。具体如图01-01所示:
IBM在其developerWorks上这么定义SOA:“面向服务的体系结构(Service-Oriented Architecture,SOA)是一种 IT 体系结构风格,支持将您的业务转换为一组相互链接的服务或可重复业务任务,可在需要时通过网络访问这些服务和任务。这个网络可以是本地网络、 Internet,也可以分散于各地且采用不同的技术,通过对来自纽约、伦敦和中国香港的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。可以对这些服务进行结合,以完成特定的业务任务,从而让您的业务快速适应不断变化的客观条件和需求” 。
面向服务的架构(Service-OrientedArchitecture,SOA)是一种IT术语,不是一种商业术语,这使得很多人难以理解SOA的概念。本文尝试结合日常生活中的例子来形象的阐述什么是SOA,使大家对SOA有一个全面的认识,从而在整个企业级(而不是企业中的一个或多个部门)构建灵活、可重用的系统。
通过超市的例子解释什么是SOA
我们在小的时候家门口有很多的小卖部,大一点的小卖部会有柜台,营业员站在柜台里面,我们需要买东西的时候来到柜台外面,柜台里面有什么商品透过玻璃一目了然,找到想要的东西后直接向营业员要就好。小一点的小卖部更是只有一个窗口,我们通过窗口就可以看到里面大多数的商品,直接找老板要某一样东西就好。这样,每个小区或家属院门口都会有一到几个小卖部,满足了我们多数的日常需要。
这就类似我们早期的IT建设,各个部门根据自己的需要,分别构建自己的应用系统,用来实现本部门业务的自动化(从手工方式变成电子方式),业务量和数据量都不大,基本上能满足本部门的需要。
随着社会的发展,小卖部越来越不能满足人们日益增长的物质需要,于是,百货商店(百货大楼)就得到了大的发展,大家都习惯去百货商店购买东西。
同理,各个部门的业务也在发展,分散在各个部门之间的业务系统也越来越不能满足企业日益增长的业务需要,于是,各种集成系统应运而生,就像从小卖部到百货大楼的转换一样。
社会的发展还在继续,随着大卖场(超市)的出现,人们的生活方式有了一次大的转变,以往我们需要跑很多地方才能买到的物品,在超市里就都可以买到,从粮油副食品,到小商品,再到电器等等,真正实现了一站式购物。在超市出现以前,比如同学要过生日,我们需要买蛋糕、鲜花、生日礼物送给同学,同时蛋糕需要用漂亮的包装盒包装,生日礼物需要用包装盒以及丝带包装,那我们需要分别跑不同的地方才能买到我们想要的东西,而随着超市的出现,蛋糕、鲜花、生日礼物都可以在超市买到,同时还会赠送蛋糕需要的包装盒,生日礼物需要的包装盒和丝带。超市带来的另一个变化,就是我们可以自由的挑选我们想要的商品,所有的商品都摆在货架上等待我们挑选,相比于传统的百货商店和小卖部,要方便许多。
企业基于全局构建的SOA系统同样给企业应用带来了一次大的转变,通过基于SOA的系统真正实现了对所有企业资产的集成(类似于超市的一站式购物),通过重用(REUSE)企业现有资产,构建更好的面向使用者的操作平台(而不是面向计算机的一个个孤立的应用系统)。基于SOA构建的系统(超市)可以很好的集成企业中已经存在的各种资产,从而使企业的现有资产得到了很好的重用。通过服务调用的方式,使得原有各个系统以及新构建的系统有机的结合成为了一个整体。
大型连锁超市背后的重要支撑就是其现代物流,这就类似于SOA中的企业服务总线(ESB)的概念。现代物流中运输的是超市需要的各种商品,同样,ESB上跑的是各个系统需要的服务(Web Service)。超市可以把以前的小卖部以一个个货架(专区)的形式整合起来,而基于SOA的系统同样可以把以前一个个孤立的系统整合起来,这种整合是以松耦合的方式实现的,不再像集成系统那么通过点对点的集成技术来实现(当业务发生变化时,需要硬编码来修改系统以适应业务变化),就像货架上卖的货物可以随时调整一样,基于SOA的系统允许接入的服务也是可以根据需要进行变化的。
小企业需要SOA吗?
小企业需要SOA吗?显然是需要的,就像越来越多的小卖部变成了一个个连锁超市一样,企业如果要发展,使用SOA的方式整合企业现有的资源是最好不过的选择,既可以保护原有的资产,又可以灵活扩展,避免了传统的集成方式带来的种种弊端。就像超市有不同规模一样,既有全球大型连锁超市、家电连锁超市、仓储式超市,也有像7天一样的小型连锁超市,更有家门口的小型非连锁超市,同样,不管大型企业还是小型企业,都会需要构建基于SOA的应用系统,区别在于构建的SOA系统的成熟度和规模不一样。
体系结构
相比于传统应用,基于SOA的系统是针对业务随时会发生变化进行设计,而不再针对某一个固定的业务进行设计,各个业务组件之间通过松耦合的方式连接,而不是通过紧耦合的方式,通过原子服务、复合服务保证资产的可重用。
如果想构建一个SOA系统,就需要了解体系结构的概念,体系结构是成功构建IT系统和应用程序的最重要方面。关于体系结构知识的具体请参见软件体系结构。
体系结构中有一个重要的概念:抽象。抽象是指对要描述的对象隐藏无关的细节,在整体上提供简化的视图,以便更好的理解对象。通常来说,抽象的级别越高,细节信息越少,抽象的级别越低,细节信息越多。在设计面向服务的解决方案时,既可以使用自顶向下(从抽象级别高到低)的方法,也可以使用自底向上的方法。在企业级如果要构建一个SOA系统,通常使用自顶向下的方式,先分析整个企业的体系结构(包括业务和技术的战略、治理维护等)。但由于现在多数企业都是以项目为中心划拨资金和投入资源的,所以,自底向上的方式构建SOA项目也是切实可行的,先通过项目获得经验,在将其推广到整个企业体系结构(EA)级别。
SOA参考体系架构(SOA Reference Architecture)
SOA参考体系架构如图01-03所示,通过SOA参考体系架构我们可以很好的了解如何构建一个SOA系统,期间会用到什么服务。SOA参考体系架构通过使用非专有的、与具体产品无关的方式,清楚地说明了SOA系统架构中都需要用到那些服务和组件,描述了在企业范围内构建SOA系统所需要的关键能力。
在01-03图的中间部分,是企业服务总线(Enterprise Service Bus,ESB)。ESB作为SOA模型的连接入口点,是SOA参考架构的核心,为整个架构范围内所有服务提供相互通讯的能力。ESB可以提供很多服务,比如请求和响应服务、路由服务(中介服务)协议转换服务、数据转换服务、自定义的日志记录、优化和监视等。另外,ESB还提供了各种服务的通用连接和动态调用(虚拟化)功能,充分利用了服务组件体系结构(SCA)模型编程。
图01-03图的中间靠左上部分是交互服务(Interaction Services)。交互服务通过用户接口、用户交互界面等将将IT的功能和数据传递给最终用户,并满足用户特定的使用习惯。
图01-03图的中间靠中上部分是流程服务(Process Services)。流程服务主要用来满足业务流程的需要,通过将多个服务组合起来形成一个业务流程。
图01-03图的中间靠右上部分是信息服务(Information Services)。信息服务主要用来提供对同构或异构数据源的访问,解决不同数据源之间数据共享困难的问题。比较常用的技术有联邦、复制、ETL、元数据管理、主数据管理、动态数据仓库、XML等。
图01-03图的中间靠右下部分是访问服务(Access Services)。访问服务主要用来提供访问已有应用、打包应用的能力,使已有应用的功能以服务的形式对外暴露出来。
图01-03图的中间靠中下部分是业务应用服务(Business App Services)。业务应用服务主要用来构建一个强大、可伸缩、安全的服务环境,为新的应用组件提供运行时服务。
图01-03图的中间靠左下部分是伙伴服务(Partner Services)。伙伴服务提供将合作伙伴的应用系统集成到共同的企业体系结构中的功能。
SOA参考架构是一个完整的企业架构,可以覆盖整个企业范围内集成的需求。参考架构中的服务通过模块化的方式进行集成,因此SOA的实现可以从一个小的项目来启动,在新的项目实施的时候,新的功能能够轻松的加到架构中,通过渐进的方式在企业范围内扩大集成的范围。
SOA解决方案堆栈
通过对重要概念和关注事项的抽象,SOA解决方案堆栈提供了 9 个层次(分离关注的事项:五个功能层和四个非功能层),以及它们的逻辑体系结构构建块(抽象),这些构建块可以用于在较高的抽象级别上表现面向服务的体系结构。
如图01-04所示,SOA解决方案堆栈的五个功能层分别是请求者层(Consumers Layer,消费者层)、业务流程层(Business Process Layer)、服务层(Services Layer)、服务组件层(Sevice Components Layer)和操作系统层(Operational Systems Layer),上方的功能层相是服务请求者更加关注的层次,下方的功能层是服务提供者更加关注的层次。下面我们分别来看一下这五个功能层:
? 请求者层(Consumers Layer,消费者层):
提供图形化界面或其它操作方式,方便服务请求者提出服务请求。
? 业务流程层(Business Process Layer):
业务流程层主要是根据业务流程的需要,对服务层中定义的服务进行相应的组合和编排。
? 服务层(Services Layer):
服务层是整个SOA解决方案堆栈的核心层,由所有的服务(Services)组成,其在五个功能层中起着承上启下的作用,当收到业务流程层的调用请求后,将调用服务组件层的相关组件单元完成业务请求,从而实现SOA业务驱动的理念。服务可以根据实际需要,按粒度进行分层,虽然细粒度的服务可以提供更多的灵活性,但其交互的模式以及治理也更为复杂。相反,粗粒度的服务可以有效降低交互的复杂性,但灵活性降低,大家可以根据自己的实际需要进行灵活选择。
? 服务组件层(Sevice Components Layer):
服务组件层是由各个组件组成的,服务层的各种服务当接到请求后就是调用这些组件完成相应的工作的。服务组件层中的组件是平台相关的。
? 操作系统层(Operational Systems Layer):
操作系统层主要包括操作系统、数据库、管理系统、客户关系管理系统(CRM)、ERP、商业智能(BI)等各种同构或异构的系统,是所有应用程序、中间件以及操作系统的组合。
如图01-04右边部分所示,SOA解决方案堆栈的四个非功能层分别是:治理层(Governance Layer)、数据架构(元数据)和商业智能层(Data Architecture(meta-data) & Business Intelligence Layer)、Qos层(QoS Layer,Security, Management & Monitoring Infrastructure Services)和集成层(Integration Layer,Enterprise Service Bus)。下面分别来看一下这四个非功能层:
? 集成层(Integration Layer,Enterprise Service Bus):
集成层,也就是企业服务总线ESB主要实现服务代理者(Services Broker)的功能,在服务请求者和服务提供者之间提供正确、高效、安全的服务中介、路由和传输功能。
? Qos层(QoS Layer,Security, Management & Monitoring Infrastructure Services):
Qos层主要为SOA提供要实现功能性需求 (NFR) 所需要的各种功能,比如安全、管理、监控等。
? 数据架构(元数据)和商业智能层(Data Architecture(meta-data) & Business Intelligence Layer):
该层主要提供元数据、商业智能相关的各种功能。
? 治理层(Governance Layer):
治理层包括对SOA中业务操作的整个生命周期的治理管控。
如何构建一个企业级SOA系统
第一步:通过组件业务模型(Component Business Model,CBM)分析企业核心业务组件。
SOA是业务驱动的,我们需要根据业务的优先级来进行IT投资,而不能盲目的进行IT投资。通常我们使用IBM GBS的组件业务模型(Component Business Model,CBM)来评估企业的各种业务,分析该企业的核心竞争力在什么业务上。CBM解决方案的基础是组织内核心业务组件的定义,通过对企业的核心业务进行KPI分析、ROI分析,得出该业务是否具有足够的竞争力。
通常我们会从CBM中得出的重点区域作为SOA设计活动的输入,比如对某一银行,我们通过CBM认识到帐号管理是该行的一项核心竞争力,其同时也是客户满意度和减少客户大量流失方面的一个重要决定因素。那我们在进行SOA系统构建时就可以把帐户管理作为一个重点进行构建,通过加快帐户开立流程,增强这个功能从而提高客户满意度,减少客户大量流失。
第二步,通过面向服务的成熟度模型(Service Integration Maturity Model , SIMM)确定当前系统的成熟度以及我们下一步要构建的SOA系统要达到的成熟度,这是个迭代的过程。
第三步,成立SOA卓越中心(SOA Center of Excellence ,COE) 或类似该机构的小组,通过这个中心整合企业范围的技术与资产。成立该中心有助于理顺构建SOA系统过程中的各种跨部门问题,服务的生命周期管理等等。
第四步,使用面向服务的建模和体系结构(Service-Oriented Modeling and Architecture,SOMA)进行服务建模,其对应的工具为Rational Unified Process (RUP)。SOMA是IBM端到端的SOA解决方案开发方法。SOMA 2.4中方法内容主要分成三部分,分别是:服务标识(Service Identification)、服务规范(Service Specification)和服务实现(Service Realization Decidions)。而SOMA3.0对服务实现部分做了细分,共分成四个部分:服务标识(Service Identification)、服务规范(Service Specification)、服务实现(Service Realization)和服务部署(Service Implementation)。服务标识主要是用来派生和定义候选服务,服务规范使用全面的技术来决定哪些服务需要暴露并指定相应的流程和服务组件来实现这些服务。服务实现主要包括解决方案模板和模式选择,技术可行性探索,SOA解决方案堆栈实例化。服务部署主要包括构建、组装、测试和部署服务。服务建模时可以使用IBM WebSphere Business Modeler,治理管控可以使用IBM WebSphere Service Registry & Repository。
相关推荐
尽管不同的组织和个人对SOA的理解有所不同,但我们可以从多个角度总结出SOA的一些关键特性: 1. **粗粒度、松耦合服务架构**:SOA的服务是粗粒度的,这意味着每个服务执行的功能相对较多且独立。同时,服务之间的...
在学习SOA的过程中,你可以通过以下资源进一步深入理解: 1. “SOA原理与实践”:这本书详细介绍了SOA的概念、设计原则和实施方法。 2. “Web服务编程与SOA”:探讨了基于Web服务的SOA实现技术。 3. 在线教程和案例...
总之,SOA的技术文档将帮助读者理解如何设计、实施和管理一个基于服务的系统,以适应快速变化的业务需求和复杂的企业环境。通过学习这些文档,您可以掌握构建高效、灵活的IT基础设施所需的技能和知识。
【服务导向架构(SOA)概述】 服务导向架构(Service-Oriented Architecture,简称SOA)是一种软件设计方法,它提倡将独立的功能封装为...理解和掌握SOA原理及其关键技术,对于构建高效的企业级IT解决方案至关重要。
IBM SOA 664 认证考试旨在测试考生对于服务导向架构(SOA)基础理论的理解程度。本考试主要涵盖SOA的核心概念、设计原则、实施策略以及治理模型等内容。通过该考试,可以证明考生具备在企业环境中成功规划和实施SOA...
3. **安全性和可靠性设计**:考虑到实际应用场景中对安全性和可靠性的高要求,WCF提供了丰富的工具和API来支持这方面的需求。例如,可以使用消息级安全、传输级安全等方式来增强安全性。 4. **监控和管理设计**:...
服务构建是一个涉及软件系统组件化和构件化的过程,这不仅需要深入理解业务流程,还需要对服务的粒度、接口以及与其他服务的协作有精准的把握。为了更好地适应市场和客户需求的变化,服务构建后的每一个服务组件应该...
综上所述,《Java SOA Cookbook March 2009》涵盖了SOA的基础概念、服务的设计与建模、数据模型的设计等多个方面,为读者提供了全面深入的理解和实践指南。通过对这些知识点的学习,可以帮助企业和开发者更好地构建...
文件`rest(一种软件架构风格)_百度百科.url`和`SOA接口的两种常用实现比较:SOAP(WebService) vs REST(GET,POST).url`分别指向了关于REST和SOAP/REST比较的参考资料,它们可以进一步深入理解这两种接口实现的区别...
针对给定文件内容,以下是对知识点的详细梳理: ...最后,文档还为读者提供了对IBM System z9大型机上SOA的最新发展状态有一个全面的理解,这对于企业IT用户在2007年开始规划他们的SOA发展至关重要。
此外,早期并频繁地沟通策略,确保所有相关人员理解和遵循,同时收集反馈以改进策略。设立卓越中心(COE)是另一个关键步骤,COE能提供SOA项目的指导、培训,强化治理的集中管理。 严格执行策略是治理成功的关键,...
首先,SOA的核心理念之一是提供松散耦合、可重用的服务,这一点在Web 2.0中依然重要。虽然REST(Representational State Transfer)架构风格简化了某些类型服务的构建,尤其是那些面向互联网和Ajax客户端的服务,但...
创建用例有助于SOA设计师更好地理解系统的需求和行为,是开始SOA设计项目的合理第一步。通过用例,可以清晰地定义每个服务的功能以及它们如何相互作用,这对于后续的设计和开发工作具有重要的指导意义。 --- #### ...
2. SOA和EDFA中CPO对超光速和慢光效应的影响。 3. 矩形信号相对于正弦信号在超光速和慢光效应方面的特性。 4. 群时延的计算以及在不同信号类型中的应用。 5. 信号失真对于超光速和慢光效应的评估,以及总谐波失真...
描述中的"SOA NOTE resource4"进一步确认了这一点,意味着这是一个与SOA相关的第四部分资源。 【描述】中的"SOA NOTE resource4"可能暗示了一个系列教程或学习路径,其中"resource4"可能代表该系列中的第四个关键...
为了实现这一点,SOA通常采用公开的标准,如XML、XML Schema Definition(XSD)以及WS-*系列标准,这些标准支持服务的发现、绑定和通信。 SOA服务的内部设计可以采用多种技术,包括面向对象的方法,而服务的通信则...
因此,他对于BPEL和Java在企业环境中的实际应用有着深入的理解和实践,这也反映在了他的作品中。 5. 出版社与版权声明: 本书由Packt Publishing出版,首次出版于2013年9月。Packt Publishing是知名的IT技术图书...
标题“tools”暗示了我们可能讨论的是与软件开发工具或者技术框架相关的内容。...阅读这份文档将对理解SOA的实践和应用大有裨益,尤其是对于那些希望构建可扩展、灵活且易于维护的IT系统的开发者和架构师来说。
### IGBT的一点简单资料 #### IGBT的基本结构 绝缘栅双极晶体管(Insulated Gate Bipolar Transistor,简称IGBT)是一种重要的功率半导体器件,结合了MOSFET和双极晶体管的优点,拥有高输入阻抗、低导通损耗等特点...
【C# 2018最新SaaS软件具体实现例子】是针对软件即服务(SaaS)模式的一个实例,展示了如何利用C#编程语言和...通过对这些内容的深入理解,开发者不仅可以提升个人技能,还能为构建高效、灵活的SaaS应用打下坚实基础。