首页  ·  知识 ·  
SOA常见误区解析
网友  万方数据     编辑:德仔   图片来源:网络
h3一、SOA的概念/h3   SOA是Service-Oriented Architecture的缩写,意为面向服务的体系结构。SOA关键是在于ldq

一、SOA的概念

  SOA是Service-Oriented Architecture的缩写,意为面向服务的体系结构。SOA关键是在于“服务”的概念。W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。Service-architecture.com将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”Gartner则将SOA描述为:“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。”

  由此可见虽然不同厂商或个人对SOA有着不同的理解,但是我们仍然可以从上述的定义中看到SOA的几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。

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

 

图1  SOA的架构模型

二、SOA产生背景

  由于企业或组织在过去的信息化进程中分别建立了多个局部应用系统,这些系统的数据和功能都彼此孤立,后来发现这些彼此孤立的系统给管理造成了很大的障碍。如既有财务系统,又有人事系统,考勤系统,货物进销存系统等,而且还可能在不同地点和不同的网络环境中。这些独立的系统很可能需要通信,比如,给加班的员工付加班费(当然这样公司并不多见),这可能就涉及到人事系统,考勤系统,财务系统,也就是说他们需要一些互操作性,如果每个系统都是独立的,无疑将造成浪费。针对传统架构的不足,SOA(面向服务编程)应运而生,

  SOA所能解决的主要问题是应用集成,即不同应用系统之间的互通互联。SOA的理念和技术体系是伴随着系统集成(即系统整合)的不断演进而逐渐清晰和成形的。没有系统集成,就不会有SOA。实际上,SOA就是系统集成的一种高级形式。SOA方法将功能方面涉及的对象、数据、组件、业务流程、界面等从服务提供者和服务消费者角度进行层次化。与此同时,将安全架构、数据架构、集成架构、服务质量管理等,应用共同的设施提取出来形成不同的层次,为所有的服务所共有。SOA系统集成技术的出现,使分散且处于异构环境之下的各种业务有机的结合为一个整体,保证了业务流程的完整性和管理通道的畅通无阻。

  简单的说,SOA的产生遵循了这样的逻辑主线:业务敏捷性需要一个灵活的业务模型,业务模型需要一个灵活的IT来支持。同时,良好的业务建模,IT与业务之间的对齐和互动变得很重要,所以基于企业架构的实践,横贯业务和技术的SOA管控被用来保证SOA转型的成功。(图2)为SOA 解决方案堆栈。

   
 

图2 为SOA 解决方案堆栈

三、SOA常见误区解析

  一个灵活的IT需要遵循必要的设计原则,比如关注点分离、松散耦合,而这些设计原则结合具体技术形式体现在IT架构中,将会形成自己的架构风格,这当然也由一些架构元素支撑,比如ESB,服务注册库等。SOA的架构中的元素多少都能够从过去的IT技术当中找到些影子,但是,它建构在开放标准和技术的基础上,融合和继承了过去的实践成果,也使人们在认识SOA的同时容易产生误区:

 1、认识的误区
 
1)SOA是一种新技术

  SOA不是一种新技术,而是把企业核心的业务推动因素内在地联系在一起的一种方式。事实上,企业经常拒绝SOA,因为企业把SOA看作是一种技术。企业需要看到益处才能提高IT预算。实现这个目标的方法是IT部门在实施SOA项目之后应该展示这个解决方案是可行的,而不仅仅是展示这个概念本身。

2)SOA = ESB

  ESB只是SOA架构中的一个元素,负责转换、路由和服务质量等。看待SOA,应该从业务、技术、管控等不同的角度来看待。

3)SOA = Web Service

  Web Service通常指基于SOAP/HTTP的Web服务,这些服务是实现SOA中所定义服务的一种技术形式。Web Service提供了分布式环境下卓越的互操作能力。SOA的实现并非只有通过Web这一种形式,事实上,SOA的表现形式有很多种技术可以实现,web技术只是其中的一种。图3 为SOA与web在技术上的关系。

图3 SOA与web在技术上的关系

4)SOA有巨大的投资回报

  虽然SOA一般都有一些投资回报,但是,在企业中间和有问题的领域,投资回报是有很大差异的。事实是,投资回报的数量基本上取决于业务性质。越是动态的和不断变化的业务,SOA就越有价值。如果因为是静态的,SOA的价值就小,不会有很大的改变。要记住,SOA的核心是价值是灵活性。
 

2、实施中的误区

  基于对SOA的正确认识之上,SOA才可能顺利的进入应用实施阶段,但SOA的实施不仅局限于技术,SOA的实现过程中还涉及到人员和流程等方面。由于SOA的复杂性和涉及环节较多,因此在SOA的应用实施过程中,同样也存在诸多误区。

1)Web服务等于SOA

  这二者之间存在一定的关系,但Web服务的使用并不构成SOA,也不能提供SOA所带来的优势。SOA是一种架构方法,而Web服务是SOA的一种实施,二者的接合点在于标准的互联网协议。SOA根据业务需求和优先级、治理的实施和分阶段的蓝图方案进行规划,以实现一种真正面向服务的环境。图4展现了SOA与web在架构上的关系。

 

图4 SOA与web在架构上的关系

2)通过SOA能消除集成问题

  如果采用SOA成功实现所需的战略,的确会最终消除集成问题。但区别在于,解决方案是基本的信息集成战略,而不是SOA架构的“魔力”。规划SOA、评估业务需求、建立企业治理和基本的信息集成战略,这些才是能根本解决集成问题的方法。

3)SOA与业务无关

  实施SOA的第一步根本不是技术实施,而是进行缜密的规划,并且这种规划与对业务的判断紧密相关。企业首先要从业务角度着手,这意味着要先明确采取措施的原因,然后转向功能角度,即要明确企业需要实现的具体功能,最后再从技术角度研究如何实现,这也就是SOA技术中立方案发挥作用的地方。

4)无有效治理模式

  由于SOA的分布式和抽象的性质,运行时治理是非常重要的。一个单个的商业服务也许由许多架构层中的组件所组成。当这个服务失败的时候,最好有适当的流程和工具迅速找到问题并且在用户首先察觉之前回复正常。没有一个有效的治理模式,你的SOA反而会转变为系统下降、高开发成本、失控的生产环境和不满意的客户等噩梦。

5)对流程太过迷信

  SOA实施离不开流程,但不能太过迷信流程。创建太多的流程将会团队陷入文件之中,从而分散团队对促进业务的推动因素的注意力。“过度治理”或者“死于流程”模式使设计师像机器人一样思考和简单地执行文件,或者只做检查表让他们做的事情。

四、如何避免误区

  据Gartner分析公司分析,到2010年为止,SOA架构体系会深入到百分之八十以上新的大型系统中,或是部分的影响其构建设计。为了能避免企业在SOA之路上步入更多的误区,针对上述SOA常见误区,本文总结SOA实施中的一些经验,给出以下几点建议:

1. SOA是一个架构体系

  随着SOA所引发的浪潮越演越烈,许多供应商也开始更多的与SOA关联到一起。但是进一步的市场营销手段或是其他的宣传反而带来了不良的影响,人们往往忽视了SOA的主要特征,而把一些技术甚至一些产品作为SOA的具体表现,归根结底,SOA是一个架构体系。事实则是如此,SOA作为架构体系的存在是不依赖于任何特定的技术或方法的。

  SOA是一种架构体系,不是某种具体的技术,它可以通过多种技巧和技术实现。设计人员在遵从SOA设计原则的基础之上,去实现了整个架构。比如说,如何处理抽象,如何处理松散耦合,如何处理异质性,以及如何处理流程。这是所有实施SOA的企业在开始筹划他们的面向服务项目之前,就应该深知的一个原则

2. Web只是SOA的呈现形式之一

  根据SOA目前发展来看,很多企业对SOA都有一个不太准确的印象,那就是认为面向服务架构的所有内容仅仅只是关于Web服务的。事实上,SOA所指的服务包括了企业内部所有类型的服务。SOA应用的优势在于:这是一个可伸缩的,灵活的企业级架构体系。

  SOA和Web服务两者的发展密切关联,但是在没有使用Web服务的情况下,同样可以实施面向服务架构,反之,即便将很多的Web服务整合在一起也并不能说这就是面向服务架构。  

3、有了ESB并不意味就拥有SOA

  ESB全称为Enterprise Service Bus。 ESB从本质上讲是一种应用集成的中间件。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。它的作用就是集成异构的应用系统,完成异构环境下的系统整合和集成。

  在SOA时代下,ESB为SOA的实施提供了底层架构的技术支持。SOA从根本上来说就是要解决两个问题:重用和异构。ESB为服务提供者和服务消费者之间的集成提供了一个平台。SOA从根本上来说是一种软件架构的思想和方法论,它必须有相应的技术来帮助它落地,应用在具体的项目当中,而ESB则提供了实施SOA、简化SOA的技术手段。ESB的意义在于让SOA有了一个可实现的基础设施,ESB不过工具和技术而已。

 

本文作者:网友 来源:万方数据
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读