作者:up方方土,一个混在金融行业的屌丝程序员,喜欢代码,喜欢咖啡,喜欢旅行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
技术圈就好比娱乐圈 ,在大平云移四大天王的年代,有谁还会想起曾经呼风唤雨的一哥SOA?也许SOA也许就此陨落了~也许再过两年,有人再看到SOA,会很愤怒地骂道,哪个屌丝程序员又写错别字,明明是SAO,写成SOA!!!
所以,作为SOA的粉丝,写篇文章来纪念一下这个昔日的明星,来阐述一下我对他的理解,来回顾一下我是不是真的懂他
SOA到底是什么?
百度百科说:面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。
维基百科说:面向服务的体系结构(Service-oriented architecture)是构造分布式計算的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。
软件厂商说:SOA就是一个概念,帮我们卖出去了好多产品和服务;企业用户说:SOA就是一个标签,让我们的系统更高更大更上;架构师说:SOA深不可测,可大可小,可长可短;程序员说:丫的,SOA就是一骗子,哪些WSDL,SOAP不就是个远程调用吗?
SOA到底是什么?是一种商业手段?是一种设计方法?是一种开发技术?都是、也都不是。我理解的SOA的定义应该是可变的,在一个企业的上下文环境下,来定义SOA的具体含义。说白了:企业遇到了怎么样的问题,用SOA的哪些方法来解决了这些问题,便是SOA在这个企业上下文环境下的定义了;
那么对于一个系统的架构而言,SOA可以从哪些方面去切入呢?
一、系统集成:站在系统的角度,目的:将原先系统间调用的网状结构转变为星形结构;
这是SOA的第一步,解决的是企业系统间的通信问题,将原先散乱、无规划的系统间的网状结构,梳理成规整、可治理的系统间星形结构。在这一步,往往会需要引入一些产品,比如企业服务总线(ESB)、会引入一些服务的技术规范,会引入一些服务的管理规则等。完成了这一步,解决的一个核心问题是【有序】。
图1:系统集成二、系统的服务化:站在功能的角度,将业务逻辑抽象成可复用、可组装的服务,通过服务的编排,实现业务流程的快速再生,目的:将原先固化的业务功能转变为通用的业务服务,实现业务逻辑的快速复用;
这是SOA的第二步,解决的是提升企业系统生产力的问题,将原先定制、功能化的代码逻辑,转变成在通用、服务化的业务逻辑。这一步,往往会需要引入一些产品,比如流程引擎(BPM)、会引入一些服务的设计方法,会引入一些服务的编排原则等。完成了这一步,解决的一个核心问题是【复用】。
图2:系统的服务化三、业务的服务化:站在企业的角度,将企业职能目抽象成可复用、可组装的服务:将原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;
这是SOA的第三步,SOA第一步解决的是系统间调用的问题,SOA第二步解决的是系统功能复用的问题,这两步都是从技术层面,从系统角度来对于现在面临的问题进行剖析和处理。而SOA的第三步,则是从业务层面,从职能角度来剖析和处理所面临的问题。一项业务的组成,包括了【业务规则+业务流程+业务系统+业务人员】,用SOA的服务封装理念,将这样一个业务单元封装成一项服务,而整个企业是通过这些服务的编排实现业务价值。完成了这一步,解决的一个核心问题是【高效】。
图3:业务的服务化还是要重申一点:虽然SOA是一剂良药,但是一定要对症下药,用药过量也会带来副作用。
网友评论