什么是SOA架构?

什么是SOA架构?,第1张

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、 *** 作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/WebService技术之后的自然延伸。

SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。

SOA的核心主体是服务。所谓“服务(Service)”,从业务角度而言,服务是一个可重复的经过标准封装的任务,例如:检查帐号余额开新帐户等等。SOA的目标是通过服务的流程化来实现业务的灵活性,所谓流程(Process)是由一系列相互关联的任务所组成,实现一个具体的业务功能。一个流程可以由一系列服务来实现。

标准架构图如下:

一个正确的框架,是指导我们开发和实施SOA架构的基础。由IBM提案,国际开放群组(TheOpenGroup)提出了一个SOA架构的参考模型,这个架构框架目前是产业界最权威和严谨的SOA架构标准。TheOpenGroup是一个非营利标准化组织,是一个厂商中立和技术中立的机构,致力于提出各种技术框架和理论结构,致力于促进全球市场的业务效率。TheOpenGroup已有超过20年的标准制定与推广历史。在1996年,由X/Open与OpenSoftwareFoundation合并组成。TheOpenGroup最有名是作为UNIX商标的认证机构。在过去,协会最出名的是其出版的SingleUNIX,它扩充了POSIX标准而且是UNIX的官方定义,其成员包括IT用户、供应商以及政府机构。TheOpenGroup在中国的创始会员为金蝶集团,金蝶集团负责成立了中国分会。TOG在1993年提出的TheOpenGroupFramework(TOGAF)架构框架,是一套行之有效的企业架构。历经15年9个版本发展,支持开放、标准的SOA参考架构,已被80%的福布斯(Forbes)全球排名前50的公司使用。

根据这个模型,完整的SOA架构由五大部分组成,分别是:基础设施服务、企业服务总线、关键服务组件、开发工具、管理工具等。

SOA基础实施是为整个SOA组件和框架提供一个可靠的运行环境,以及服务组件容器,它的核心组件是应用服务器等基础软件支撑设施,提供运行期完整、可靠的软件支撑。

企业服务总线是指由中间件基础设施产品技术实现的、通过事件驱动和基于XML消息引擎,为SOA提供的软件架构的构造物。

企业服务总线ESB提供可靠消息传输、服务接入、协议转换、数据格式转换、基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式。在SOA基础实现的方案上,应用的业务功能能够被发布、封装和提升(Promote)成为业务服务(BusinessService);业务服务的序列可以编排成为BPM的流程,而流程也可以被发布和提升为复合服务(CompositedService),业务服务还可以被外部的SOA系统再次编排和组合。ESB是实现SOA治理的重要支撑平台,是SOA解决方案的核心,从某种意义上说,如果没有ESB,就不能算作严格意义上的SOA。

关键服务实现,是SOA在各种业务服务组件的分类。一般来说,一个企业级的SOA架构通常包括:交互服务、流程服务、信息服务、伙伴服务、企业应用服务和接入服务。这些服务可能是一些服务组件,也可能是企业应用系统(如ERP)所暴露的服务接口等等。这些服务都可以接入ESB,进行集中统一管理。

开发工具和管理工具:提供完善的、可视化的服务开发和流程编排工具,涵盖服务的设计、开发、配置、部署、监控、重构等完整的SOA项目开发生命周期。

按照这个模型,许多SOA解决方案是只提供部分实现。这个行业中,许多国内的企业为了搭上SOA的便车,经常以偏概全,混绕概念。应该说真正按照SOA的思想和模型来构建整个企业的IT架构的案例是非常之少的。许多国外厂商的宣传案例,基本上是停留在部署应用服务器,开发了部分WebService组件,可以实现部分数据集成,这个层次而已,而这些WebService是部署在ESB平台之上的,就已经很不错了。实现了服务流程重组,实现SOA治理的案例就更是很少见到了。

OASIS(一个SOA标准组织)给予出的SOA定义“SOA是一个范式,用于组织和利用可能处于不同所有权范围控制下的分布式系统。”

维基百科给出的SOA定义“面向服务的体系结构(Service-oriented)是构造分布式系统的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。”。

要准确全面理解SOA,首先必须理解SOA的核心要素:

SOA的目标就是实现灵活可变的IT系统。要达到灵活性,通过三个途径来解决:标准化封装、复用、松耦合可编排。

互 *** 作(标准化封装)、复用、松耦合等SOA技术的内在机制,也是中间件技术和产品的本质特征。

标准化封装(互 *** 作性)

传统软件架构,因为封装的技术和平台依赖性,一直没有彻底解决互 *** 作问题。互联网前所未有的开放性意味着各节点可能采用不同的组件、平台技术,对技术细节进行了私有化的约束,构件模型和架构没有统一标准,从而导致架构平台自身在组件描述、发布、发现、调用、互 *** 作协议及数据传输等方面呈现出巨大的异构性。各种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。

在软件的互 *** 作方面,传统中间件只是实现了访问互 *** 作,即通过标准化的API实现了同类系统之间的调用互 *** 作,而连接互 *** 作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与 *** 作系统无关的SOAP协议实现了连接互 *** 作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互 *** 作。

SOA要实现互 *** 作,就是通过一系列的标准族,来实现访问、连接和语义等各种层面的互 *** 作。

软件复用

软件复用,即软件的重用,也叫再用,是指同一事物不作修改或稍加改动就多次重复使用。从软件复用技术的发展来看,就是不断提升抽象级别,扩大复用范围。最早的复用技术是子程序,人们发明子程序,就可以在不同系统之间进行复用了。但是,子程序是最原始的复用,因为这种复用范围是一个可执行程序内复用,静态开发期复用,如果子程序修改,意味着所有调用这个子程序的系统必须重新编译、测试和发布。

耦合关系

SOA架构在松耦合解耦过程也发展到了最后的境界。传统软件将软件之中核心三部分网络连接、数据转换、业务逻辑全部耦合在一个整体之中,形成“铁板一块”的软件,“牵一发而动全身”,软件就难以适应变化。分布式对象技术将连接逻辑进行分离,消息中间件将连接逻辑进行异步处理,增加了更大的灵活性。消息代理和一些分布式对象中间件将数据转换也进行了分离。而SOA架构,通过服务的封装,实现了业务逻辑与网络连接、数据转换等进行完全的解耦。

总之,从科学哲学的角度来看,SOA是一个不断解构的过程,传统软件强调系统性,耦合度过高,所以需要松耦合(解耦);SOA也是一个组件粒度的平衡,集成电路趋势是集成度越来越高,软件发展的趋势是相反的过程;SOA是架构,更是方法,反映了人们对哲学思想的追求的原动力。

按照这个特性,SOA基本上来说与WebService并不是同一个概念,SOA并不一定需要WebService实现,理论上可以在其他技术体系下,实现SOA。但事实上,到目前为止,能够实现SOA架构风格的技术就是WebService,因为它的特性和厂商的支持力度,使得WebService成为了实现SOA实现技术的事实标准。也正因为WebService技术的成熟,才使得已经提出10多年了的SOA思想和概念,得以能够实现落地,成为一种可以使用的技术。这也就是回答了SOA和WebService的关系。

Web服务作为炙手可热的技术 如何应用到企业的IT系统和商业流程之中 并给企业带来直接的经济效益 一直备受国内外企业管理者的高度关注和推崇 而在近两年 出现了一种技术架构被誉为下一代Web服务的基础架构 它就是SOA(Service oriented architecture 面向服务架构) 年 Gartner最早提出SOA 年 月 Gartner提出SOA是 现代应用开发领域最重要的课题 还预计到 年 SOA将成为占有绝对优势的软件工程实践方法 主流企业现在就应该在理解和应用SOA开发技能方面进行投资 更好支持商业流程 SOA并不是一个新事物 IT组织已经成功建立并实施SOA应用软件很多年了 BEA IBM 等厂商看到了它的价值 纷纷跟进 SOA的目标在于让IT变得更有d性 以更快地响应业务单位的需求 实现实时企业(Real Time Enterprise 这是Gartner为SOA描述的愿景目标) 而BEA的CIO Rhonda早在 年 月就提出要将BEA的IT基础架构转变为SOA 并且从对整个企业架构的控制能力 提升开发效率 加快开发速度 降低在客户化和人员技能的投入等方面取得了不错的成绩 SOA是在计算环境下设计 开发 应用 管理分散的逻辑(服务)单元的一种规范 这个定义决定了SOA的广泛性 SOA要求开发者从服务集成的角度来设计应用软件 即使这么做的利益不会马上显现 SOA要求开发者超越应用软件来思考 并考虑复用现有的服务 或者检查如何让服务被重复利用 SOA鼓励使用可替代的技术和方法(例如消息机制) 通过把服务联系在一起而非编写新代码来构架应用 经过适当构架后 这种消息机制的应用允许公司仅通过调整原有服务模式而非被迫进行大规模新的应用代码的开发 使得在商业环境许可的时间内对变化的市场条件做出快速的响应 SOA也不仅仅是一种开发的方法论 它还包含管理 例如 应用SOA后 管理者可以方便的管理这些搭建在服务平台上的企业应用 而不是管理单一的应用模块 其原理是 通过分析服务之间的相互调用 SOA使得公司管理人员方便的拿到什么时候 什么原因 哪些商业逻辑被执行的数据信息 这样就帮助了企业管理人员或应用架构师迭代地优化他们的企业业务流程 应用系统 SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚 轻松应对企业商业服务变化 发展的需要 企业环境中单个应用程序是无法包容业务用户的(各种)需求的 即使是一个大型的ERP解决方案 仍然不能满足这个需求在不断膨胀 变化的缺口 对市场快速做出反应 商业用户只能通过不断开发新应用 扩展现有应用程序来艰难的支撑其现有的业务需求 通过将注意力放在服务上 应用程序能够集中起来提供更加丰富 目的性更强的商业流程 其结果就是 基于SOA的企业应用系统通常会更加真实地反映出与业务模型的结合 服务是从业务流程的角度来看待技术的 这是从上向下看的 这种角度同一般的从可用技术所驱动的商业视角是相反的 服务的优势很清楚 它们会同业务流程结合在一起 因此能够更加精确地表示业务模型 更好地支持业务流程 相反我们可以看到以应用程序为中心的企业应用模型迫使业务用户将其能力局限为应用程序的能力 企业流程(enterprise process)是流经企业框架的空气 它赋予业务模型里的组件以生命 并更加清晰地定义了它们之间的关系 流程定义了同业务模型进行交互 *** 作的专门方法 例如 会计可能是企业服务系统的一个组件 但是将发票寄给客户却是一个业务流程 服务被定义用来支持业务流程 因而贯穿整个流程始终的是 各种服务组件在流程和逻辑实现过程中的装配 *** 作 理解业务流程是定制服务的关键所在 有利于企业业务的集成 传统的应用集成方法(点对点集成 企业消息总线或中间件的集成(EAI) 基于业务流程的集成)都很复杂 昂贵 并且不灵活 这些集成方法难于快速适应基于企业现代业务变化不断产生的需求 基于面向服务架构 (SOA) 的应用开发和集成可以很好的解决其中的许多问题 SOA 描述了一套完善的开发模式来帮助客户端应用连接到服务上 这些模式定制了系列机制用于描述服务 通知及发现服务 与服务进行通信 不同于传统的应用集成方法 在 SOA 中 围绕服务的所有模式都是以基于标准的技术实现的 大部分的通信中间件系统 如 RPC CORBA D EJB 和 RMI 也同样如此 可是它们的实现都不是很完美的 在权衡交互性以及标准定制的可接受性方面总是存在问题 SOA 试图排除这些缺陷 因为几乎所有的通信中间件系统都有固定的处理模式 如RPC 的功能 CORBA 的对象等等 然而 服务既可以定义为功能 又可同时对外定义为对象 应用等等 这使得 SOA 可适应于任何现有系统 并使得系统在集成时不必刻意遵循任何特殊定制 SOA 帮助企业信息系统迁移到 leave and layer 架构之上 这意味着在不用对现有的企业系统做修改的前提下 系统可对外提供 Web 服务接口 这是因为它们已经被可以提供 Web 服务接口的应用层做了一层封装 所以在不用修改现有系统架构的情况下 SOA 可以将系统和应用迅速转换为服务 SOA 不仅覆盖来自于打包应用 定制应用和遗留系统中的信息 而且还覆盖来自于如安全 内容管理 搜索等 IT 架构中的功能和数据 因为基于 SOA 的应用能很容易地从这些基础服务架构中添加功能 所以基于SOA的应用能更快地应对市场变化 为使企业业务部门设计开发出新的功能应用 下图提供了使用基于服务集成的企业应用的高级视图 与传统的企业应用集成架构的主要区别在于该系统使用基于标准的服务 并包括过程/数据服务 编排和组合 基于标准的服务成了应用间的集成点 服务的编排和组合增加了服务的灵活性 重用性和集成性  图示 使用基于服务集成的企业应用SOA服务粒度 可以按基于服务的功能及发送和接收的数据数量来定义服务 如细粒度服务 粗粒度服务或组合服务 在 SOA 中服务粒度有两种相关的意思 服务是如何实现的 服务使用和返回了多少数据或多少消息 细粒度服务执行了最小的功能 发送和接收少量的数据 粗粒度服务执行了较大的业务功能 并交换了更多的数据 细粒度服务是供粗粒度服务或组合服务使用的 而不是由终端应用直接使用的 如果应用是使用细粒度服务建立的 则应用将不得不调用网络上多个服务 并且发生在每个服务上的数据量较少 因而会对对系统整体性带来影响 所以粗粒度服务的用户不能直接调用他所使用的细粒度服务 然而 由于粗粒度服务可能使用多个细粒度服务 因此它们不能提供粒度级的安全和访问控制 组合服务可以使用粗粒度服务和细粒度服务进行组装 数据数量数量不是粗粒度服务和组合服务之间的区别 粗粒度服务例子 如创建新客户 在这一过程的 *** 作是 需要通过一些外部服务验证对客户进行验证 并在 CRM 应用系统中创建客户记录 组合服务例子可以是提供一个新的DSL线 这需要一个服务调用来验证定单 创建或验证客户 确认产品库存及为数据线分配资源 下图描述了服务粒度的不同级别及它们之间的关系 图示 服务粒度 通过一组有效设计和组合的粗粒度服务 业务专家就能够有效地组合出新的业务流程和应用程序了 SOA与Web服务 SOA不是一定需要 Web 服务来实现 并且一个基于Web 服务开发出来的应用也不代表就是一个基于 SOA 构架应用 Web 服务只是服务实现的一个典型 是实现企业 SOA的一个组件(非必需组件) SOA 为基于服务的分布式系统提供了概念上的设计模式 Web 服务则是基于标准的 可经济实惠地实现 SOA的一项技术 SOA将IT资源透过服务这样一个在业务上有重要涵义的概念来提供 共享 把IT与业务的距离更加拉近了一步 服务在涉及的层次上要比组件 函数 流程等更高 而且往往在业务上可以找到与之直接对应的概念或实体 例如报价 订单 服务打破了IT系统间的藩篱 就像一家公司的各个部门 平常各自扮演特定对内或对外服务的角色 但彼此间如果能有效地通过共通的语言及文字 进行良好的沟通 便能协力达成更大 更高的目标 随着SOA和Web服务的潮流 带来了组合式应用(posite application)的开发方式和观念 开始逐渐被大量应用在Portal(门户)和Integration(集成)上 组合式Portal的做法 就是通过Portal界面所提供的应用 往往不是真的在Portal服务器上执行 而是将Web服务即时抓过来 再加以呈现 同时汇总给Portal的使用者 在整合方面也是采用组合式的方式 通过高级工具来设定 使系统得以灵活地配合任务的调整 对各项以Web服务方式提供的服务进行不同形式的串联和协作 同时快速地加以部署 年 月 BEA发布了一个企业门户合理化(enterprise portal rationalization EPR)战略 这个战略用来平衡BEA WebLogic Platform的SOA能力 凭借最好的行业实践和行业专家 帮助客户解决多年来形成的散乱的portal和Web应用程序开发 如果说Web服务等技术是SOA的血肉 那么正确的服务设计理念及系统运行平台则是SOA的灵魂 SOA试图让IT能更快和业务同步 在规划上以提供d性的业务服务为目标 从CIO到负责规划的系统分析人员 需要和业务单位 策略伙伴间有充分的沟通 CIO必须认识到 SOA的建立将是一个为期数年的承诺 基础建设需要按部就班地进行 资助的模式也必须在IT和各个业务部门间建立 来陆续支援基础建设及各项业务服务的开发 在中间件领域 SOA架构日益成为中间件软件供应商争 lishixinzhi/Article/program/Java/hx/201311/26963


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11777232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存