SOA是什么?

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

SOA是什么?

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

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

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

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

SOA在汽车行业的应用和前景

面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。x0dx0a这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。x0dx0a对松耦合系统的需要来源于业务应用程序需要,根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。x0dx0a虽然面向服务的体系结构不是一个新鲜事物,但它却是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于SOA的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA系统原型的一个典型例子是通用对象请求代理体系结构,它已经出现很长时间了,其定义的概念与SOA相似。然而,现在的SOA已经有所不同了,因为它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXML)为基础的。x0dx0a实际上,SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论。从业务角度来看,一切以最大化“服务”的价值为出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套新的软件架构。这套软件架构能够随着业务的变化,随时灵活地结合现有服务,组成新软件,共同服务于整个企业的业务体系。简单的理解,我们可以把SOA看作是模块化的组件,每个模块都可以实现独立功能,而不同模块之间的结合则可以提供不同的服务,模块之间的接口遵循统一标准,可以实现低成本的重构和重组。在SOA的技术框架下,可以把杂乱无章的庞大系统整合成一个全面有序的系统,从而增加企业在业务发展过程中应用系统的灵活性,实现最大的IT资产利用率。

下一代软件架构--SOA(面向服务架构)

面向服务架构(SOA)是一个典型的从IT/互联网行业引入到 汽车 的软件技术,现在 汽车 行业围绕SOA有很多讨论和实践,主要集中于SOA本身的概念和在智能 汽车 中的实际应用,有些观点把SOA捧得很高,认为SOA是一劳永逸的方案,用了SOA就可以具备和特斯拉一较高下的软件能力,也有人觉得SOA比较虚,上了SOA用户也没什么直接的体验,不见得能多卖几辆车。毫无疑问,新技术的引入总是伴随着争议,主要还是专业背景的不同,站在 汽车 电子,通信或者电气工程师的角度去看待一个软件问题,总会有各种怀疑,也有很多与SOA无关的需求和问题,想让SOA来解决,这些都跨专业的理解偏差。而 汽车 软件,毕竟还是软件,不是信号、电子或芯片,很多疑问还得回到软件的领域,才能正确理解SOA的概念以及它能解决的问题。

智能 汽车 到底需不需要SOA?这里需要先看一下智能驾驶时代的 汽车 架构和 汽车 软件的实际需求:

传统的整车架构,尤其是电子和电气部分,主要就是分布式ECU,嵌入式软件和现场总线级别的通信网络,传统的EEA很大程度上是一套硬件集成方案(当然复杂度比手机高出几个量级),如果没有特斯拉,可能这套成熟的体系还能用上很多年,没有人考虑过把IT行业的软硬件架构直接套用到 汽车 上,但现在这事被特斯拉做成了,而且类似 科技 公司背景的入局者和模仿者越来越多,各类 汽车 软件也大幅增加。对于传统OEM,根据自己的专业背景,在这一轮技术升级中,基本都能看到域控制器、新型传感器、车载以太网、操作系统、APP和各种算法等新技术,但如何把它们有效地集成在一起,做成用户体验卓越的智能产品,还能保证成本可控,是一个比较大的挑战。新硬件好学,拆来看看,大概也能明白对手怎么做的,但是软件和代码,还有基于这些软件的运维方式和盈利模式,对于传统 汽车 行业来说,是所谓的虚拟经济和“灵魂”,既看不太懂也有内部变革的阻力。所以OEM需要的是在现有EEA基础上,想办法把这些五花八门的新技术用更快更有效的方式集成到一起,而且采用成本和风险可控的迭代方式,而不是推倒现有架构和供应链重来。这个目标从软件的角度来看,其实就是要求OEM要具备整车软件的集成能力。

但大型系统软件的集成正是传统EEA缺失的能力,因为现有零部件都是软硬件耦合的,传统车内嵌入式软件的集成基本是零部件和CAN网络调通即可,由于CAN是基于广播的,所以各个零部件软件之间实际并没有直接对接。而随着新的非嵌入式的软件越来越多进入到车内,相互之间会通过基于以太网的软件接口(API)来直接传输数据,API调用和CAN信号广播完全是两回事,API设计是软件问题不是通信问题,同时新的 汽车 软件会有独立的生命周期线,为了保证让大量的新软件能通过以太网络在一起协同工作,OEM必须引入全新的独立于硬件的大型软件集成能力,相当于需要一套单独的整车软件架构。

这套软件架构的基本作用是:

能集成整车各个ECU、DCU(域控制器)、ZCU(区域控制器)、分布式网关/中央网关等的软件,而软件集成最重要的环节就是,设计一套统一的软件接口和数据传输格式,当然还有安全、性能等一系列规范。有了这套整车软件集成方案,OEM才能让各个供应商或服务商的软件按事先约定好的统一标准来传输数据。否则就会演变成各供应商自行定义接口名称和参数,输出各式各样的数据,安全标准也不一致,最终还得由OEM来适配和对接,成百上千的新软件集成到车内,接口联调和适配的复杂度和工作量是OEM无法承受的,这会比CAN矩阵设计高出几个量级。

那么现在 汽车 行业选择了面向服务架构(SOA)来作为 汽车 的整车软件架构,主要是为了解决各个零部件间的数据交换和通信。这个方向对不对?我们可以从IT行业设计SOA的初衷来分析。

广义的面向服务架构,或者广义的“服务”本身,是从单机软件到网络软件都一直存在的最基本的概念。传统 汽车 的ECU嵌入式软件,都算是单机软件,功能界面数据处理基本都在同一个硬件上,没有前台界面+后台服务的概念,但在IT/软件行业,从局域网到广域网、互联网、物联网等,软件早已完成了分层架构,从最早局域网软件的Client/Server(C/S)架构,到web时代的B/S架构,最近十几年又迭代出SOA、微服务、无服务架构等等,服务这个概念始终存在且保持进化,贯穿了整个软件发展。简单来讲,软件的复杂业务代码都是运行在所谓的“服务器”上,这些服务器都是远程部署在机房的高性能计算机,运行在这些服务器上的软件被统称为“后台服务”,而运行在用户终端上的,比如PC、手机或智能硬件的软件,都叫做“前台界面”,其实就是 汽车 行业经常提的HMI。这种把交互界面和业务模块(算法)分离的主要原因是终端算力有限,同时为了避免重复开发可共用的复杂模块,才把这类模块都放到后台服务器上去做成“服务”来共享使用。

所以 汽车 软件从嵌入式逐步升级为大型系统软件的趋势下,只要有网络,那么基于服务的架构是不可避免的。高算力平台或域控制器就是车内的服务器,这些服务器把各种 汽车 零部件的控制权以软件接口的方式,提供给车内或车外以太网的其他软件使用。

但狭义上的SOA (Service-Oriented Architecture), 尤其是 汽车 行业目前多从IBM借鉴的那套SOA和企业总线理念,是不是必须的呢?并不是,而且IBM的SOA解决方案已经是过时的技术了,原因有很多,总的来说,和商业软件公司的没落有关系。

上面讲了面向服务架构的来龙去脉,就比较容易澄清SOA的用处,面向服务架构是在IT行业软硬件运行环境都很成熟的基础上出现的架构,用于软件模块之间分层,对于部分公用的,消耗计算资源的代码,被抽象成服务,单独运行在专门的服务器上,被其他软件模块共享使用。十几年前SOA的提出显然没有考虑过 汽车 行业现在还需要先实现车载以太网通信,域控制器和操作系统升级的情况。 如果说IT行业搞SOA是从0到1,那么 汽车 行业搞SOA就是从-1到0,再从0到1 ,因为还得先解决硬件升级的问题,-1到0就是OEM先得补齐的硬件功课(当然自动驾驶或者座舱应用本来也需要升级这些硬件),这里面又涉及到成本和长期ROI,以及传统OEM如何看待SOA的价值问题。 从整车成本的角度来看 ,SOA会给OEM每次新车换代节省一定比例的零部件开发费,但是在使用了SOA的第二代车开始才会节省,而第一代使用SOA的 汽车 ,又要升级网络又要引入中间件,各种新增成本,OEM未必能买单,所以如果对软件架构的长期价值理解不清楚,这个总账算起来很有难度。 而从技术上看 ,OEM其实需要在短时间内同时完成通信网络升级、硬件升级、软件升级(生态建立,盈利模式)的三步走,这三步可能在其他行业都经历了十年以上的时间,所以 汽车 行业面临的挑战要复杂不少。

SOA本身能解决哪些问题,不能解决哪些问题,到底能带来什么好处?

SOA的范围包括:

SOA最重要的作用:

SOA能保证车内和车外所有使用以太网通信的软件采用同一套数据格式进行数据交换,避免大量的软件接口适配和数据不兼容,给OEM和供应商双方都省去大量的集成成本。长期来看,SOA会是未来 汽车 开放平台的基础,如果有一天特斯拉开放和苹果类似的应用商店,面向服务架构必然是最底层的技术基础。

SOA不包含:

另外OEM需要的软硬件解耦能力,须由操作系统和SOA中间件开发商共同提供,操作系统可以通过驱动模型、硬件抽象和设备树等方式把常用的标准零部件转成系统接口,但各OEM的零部件很多都是非标准化的,操作系统并没自带这些零部件系统接口,所以还需要SOA这样的架构来补充这部分零部件的协议转化和为应用层提供API。

在实际SOA项目落地过程中,会有各种车载网络和硬件的限制条件,尤其是SOA整体性能问题,会牵涉到车内现有网络和ECU的性能和负载瓶颈,需要OEM和零部件厂商共同解决,都是有不小的挑战。另外SOA虽然是后台架构,但也会被质疑能带来什么用户体验,这涉及到应用层开发,确实需要一些新的APP或新场景来验证SOA的作用。

汽车 行业的工程师多年来习惯了先找行业标准,工具,然后才是研发,制造,最后再用标准来测试验证的闭环,这套流程是典型的制造行业的模式,凡事都得先看看有没有行业标准和成熟工具,上下游各公司都用同一套标准,最后以最小的成本和最低的风险把 汽车 造出来,流程很稳定,但这种思维模式会让工程师过分依赖标准和工具,失去真正的研发和创新能力,尤其是整车架构中很多标准和协议都是欧美日定义的,大量的资金都投给了国外的工具商和外资Tier-1,给到工程团队的研发费用反而很少。现在这套闭环被特斯拉带头用更先进的理念和技术打破了,还造出了跨代领先的产品,证明了开源软件在车内的可行性。而且新的智能软件并不像硬件或者嵌入式软件需要那么多规范,传统 汽车 软件开发类似于做填空题,题干都被固定了,我们只能做最没有技术含量的部分,而智能软件都是根据用户需求自行开发,更像是写作文,就一个题目,剩下的自由发挥。这个变化对于新一代智能 汽车 或者新一代的 汽车 软件供应商,都是研发能力升级的最佳机会,也有充分的商业动机去完成新一代核心软件和工具的国产化。

作者:

Luke Chen

快控 科技 CEO

Web服务作为炙手可热的技术 如何应用到企业的IT系统和商业流程之中 并给企业带来直接的经济效益 一直备受国内外企业管理者的高度关注和推崇 而在近两年 出现了一种技术架构被誉为下一代Web服务的基础架构 它就是SOA(Service oriented architecture 面向服务架构) 年 Gartner最早提出SOA 年 月 Gartner提出SOA是 现代应用开发领域最重要的课题 还预计到 年 SOA将成为占有绝对优势的软件工程实践方法 主流企业现在就应该在理解和应用SOA开发技能方面进行投资 更好支持商业流程 SOA并不是一个新事物 IT组织已经成功建立并实施SOA应用软件很多年了 BEA IBM 等厂商看到了它的价值 纷纷跟进 SOA的目标在于让IT变得更有弹性 以更快地响应业务单位的需求 实现实时企业(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能更快和业务同步 在规划上以提供弹性的业务服务为目标 从CIO到负责规划的系统分析人员 需要和业务单位 策略伙伴间有充分的沟通 CIO必须认识到 SOA的建立将是一个为期数年的承诺 基础建设需要按部就班地进行 资助的模式也必须在IT和各个业务部门间建立 来陆续支援基础建设及各项业务服务的开发 在中间件领域 SOA架构日益成为中间件软件供应商争 lishixinzhi/Article/program/Java/hx/201311/26963

以上就是关于SOA是什么?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

 
举报收藏 0打赏 0评论 0
 
更多>同类百科头条
推荐图文
推荐百科头条
最新发布
点击排行
推荐产品
网站首页  |  公司简介  |  意见建议  |  法律申明  |  隐私政策  |  广告投放  |  如何免费信息发布?  |  如何开通福步贸易网VIP?  |  VIP会员能享受到什么服务?  |  怎样让客户第一时间找到您的商铺?  |  如何推荐产品到自己商铺的首页?  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备15082249号-2