学习SOA--概念篇

SOA 的概念

我 是在2005年的时候接触SOA的概念的,当时是一个SOA项目的开发人员, 说来丢脸,在这个项目里的挺长一段时间里我不知道SOA是什么,就算这个项目结束了,我对SOA也不是十分的清楚,甚至有一段时间,我让为 WebService就是SOA。不说丢脸的事了,转入正题,首先我们说说SOA的定义,
    不得不说,SOA有的定义是史上最混乱的,现在应该还是SOA的战国时代吧,我收集了一下,大概有以下几种定义

  1. W3C ,可以调用的一系列组件,其接口描述可以发布和发现。
  2. CBDI ,一组策略,实践和框架,支持将应用程序功能作为一组服务在与能够调用,发布和发现的服务使用者相关的粒度发布;这组服务是使用接口的单一标准形式从实现抽象出来的。
  3. Gartner: 面向服务的体系结构是一种客房机/服务器软件设计方法,其中的应用程序由软件服务和软件服务的使用者(也称为客户机或服务请求方)组成。SOA与更为通用的客户机/服务器模型不同,其定义强调软件组件间的松散偶合及对独立接口的使用。
  4. IBM :面向服务的体系架构(Service Oriented Architecture,SOA)是一个建设企业IT架构的架构风格。采用面向服务的原则,达到业务与支持业务的信息系统的紧密结合。
  5. BEA :面向服务的体系架构是一个IT战略,将企业应用中分散的功能组织成为支持互操作、基于标准的服务。这些服务可以被组合及快速重用以满足业务需求。  

这些只是一些比较出名的公司或者组织给出的定义,对他的定义绝对不止如此, 虽然,不能给出标准的定义,但我们至少可以来说说 SOA的特点吧, SOA的特点也是各说各话,可大部分都可以分为以下几点

  • 以业务为中心

       以业务为中心,我觉得这应该是这几年的 IT界的一个共识吧, SOA更多的关注用户的业务,而不是技术, SOA所用的技术大部分都是成熟的现有技术,因为他关注的是业务,他通过让业务人员参与 SOA的系统的规则、设计、和管理,让 SOA系统能紧密的结合用户的业务。

  • 随需应变

SOA系统是以业务为中心的,他利用一些松散的耦合的服务构建起来的,这些服务可以根据用户的要求进行重新的组合,所以他可以达到一个随需应变能力。

  •   重用 IT资源,提升开发效率。

提升开发的效率永远是 IT界追求的目标,为了这个目标,我们已经过了许多的努力, SOA强调业务为中心,随需应变,这都是建立在一个个的服务的基础之上的,而一个个服务,不但有新开发的,还有许许多的对老系统的重用,把老系统的业务功能打包成一个个服务, SOA系统再重用这些服务,达到一个提升开发效率的目的。必竟软件业已经发建非常多年,一个系统已经为一个企业服务了很多年,要用一个新的系统来完全替代他,那成本会非常的高。

  •   强调标准

SOA系统是建立在大量的标准协义之上的,它可以达到一个异构系统的互操作的能力,很轻易的能实现互联互通互操作的能力。

看看 SOA的特点, SOA给我们带来的最大的好处就是,软件复用的思想,从代码级别上升到了一个业务级别,他通过把业务,打包成一个个标准的服务注册到服务器中,再利用 ESB BPML来对服务进行一系编排,来达到一个个新的服务,因为服务的编排是已经交给了业务人员,这也就可以达到了以业务为核心,随需应变。当然对业务人员的要求也就相对来说高许多。造成了,业务,设计,开发人员对 SOA有了不同的理解,如下,

  • 对于开发人员,他们更关注底层的实现技术,如何开发服务,如何开发adapter,以发布新的功能,以及将已有的模块发面为服务,
  • 对于设计人员,关注于如何将服务装配成业务流程,如何实现流程的管控、整合、安全等内容。
  • 对于业务人员,关注于业务流程的设计、业务的研究以及根据市场的需求,灵活调整流程。

你发现了吗,开发人员的理解,和一个普通软件的开发的理解也没有什么大的相同,因为使用相对成熟的技术和技术的标准化,再加上网络和电脑硬件的发展,对软件的速度要求已经越来越低,对开发人员的要求也已经越来越低了。技术在 SOA系统中是次要的,如果你没有技术,现在的一些大公司,他们已经成熟的 SOA中间件,他们可以为你在技术上给你强力的支持,当然,这要求你有足够的资金了。当然,我不是一个提倡技术无用论的人,我是个做技术的, SOA系统的技术虽然成熟,但所用的东西还是非常多的,单 SOA系统中常会用到(记住,这不是必要的)的 web service就有 N多的标准了,想学全这些技术不知要花多少的时间,之所以说开发人员对技术的要求降低的前提是,开发人员不用去研究技术,也不用懂得 SOA应用到的有技术,技术的研发应该发在设计人员身上,开发人员只是写一些业务实现的服务,和把原有的业务打包成 apadpter

反观对设计和业务人员的要求就相对来说高许多,要求以业务为核心,业务人员就已经不单纯只是提出业务对 IT系统的要求了,他需要参与到 IT系统的规划设计管理中去, SOA系统要求随需应变,业务人员就需要会对服务进行重新的编排,还要规划新的服务。这些可是技术活啊,想想现在的 OO思想,有那么多的模式是为了做这些的,而 SOA总的来说发展的时间还不是很长,他还没有那么多的模式供大家进行参考,很多服务的编排和规划都需要业务人员自己去模索,这当然对业务人员的要求提高了。也因此,一个 SOA的系统不是一挫而就的,他是一个长期的过程。

       而对设计人员吗,因为现在的服务都是网络化的,他就需要考虑更多的问题来设计,比如网络化就造成对安全的极大的挑战, 还有 SOA N多的技术,技计人员做设计时,至少要知道吧,要不要怎么构建这个庞大的 SOA的构架怎么做技计啊。设计人员的要求也在不知不觉的提高中。

SOA 的演化

什么事情都不是凭空出现的,他们都有自已的演化过程,以下几个条件就促成了 SOA的形成。

1.         硬件和网络的演化

硬件有大家都知道的摩尔定律,《 TODO定律定义》。在这个定律下,硬件的发展已经远远的超过了软件,软件从原来因为硬件的速度而使用机器码汇编编写软件,因为硬件的发展,一些软件的性能上的损失已经慢慢的可以接受起来,我们因此迎来了高级语言进行编码,先是过程式的,再到了后来,我们使用了 OO,这都需要建立在硬件的发展的基础之上的。网络也一样,网络速度的发展,个人上网的速度已经从 56K,128K,512k 2M以上了,更别说企业级别了。这样就为了软件的网络化打下了基础。有了这两这硬件和网络的发展, SOA的兴起才有了基础

2.         软件复用的演化

从软件架构概念推出至今,人们一直在努力的探索复用,从子程序的复用,数据的复用,到对象的复用,乃至组件的复用,似乎从来没有脱开技术的影子,始终 是在提术领域谈复用,对业务似乎没有直接的效益。而 SOA则进一步,提出了组件组织为流程,流程复用甚至业务复用的理念,将复用推到了业务领域。

3.         社会的演化

社会的发展,使得企业的竟争越来越激烈,同质化的服务已经越来越不能满足企的需要,企业为了达到服务差异化,而不段的推陈出新。做为为企业服务的 IT系统也感受到了这一变化, IT系统必需适应这个变化,能快速的对应企业的产品和服务,做到 IT和业务的对齐。以前的开发模式的开发的软件,已经慢慢的不能适应这个变化,出现一种新的开发模式的软件是历史的必然。

 

SOA 的效益

       说了这么多的 SOA,如果 SOA不能给企业带来效意,那么一功都是白搭的。企业都是以利益最大化为核心的, SOA会流行,除了大公司的炒作,如果没有给企业带来实实在在的好处,那是不会流行起来的。我们现在就来说说, SOA为企业带来的好处,

1.  提高业务的效率和用户的满意度

软件中提高效率的最好办法就是复用, SOA系统已经做到了业务级别的复用,他的效率比一般系统在这一方面的效率就高多了。在一般的系统中,依赖于其他的软件系统的话,他就需要多很多的事情,所以他想复用其他系统的业务的代价很高。然而 SOA系统,他已经把所有系统的业务都打包成了服务放入 ESB中,并对服务进行注册,可以很轻易地查找和访问服务,不需要了解服务的提供者的物理位置,实现方式等。这就极大的提了业务效率。 SOA的随需应变的能力,能使 IT和业务对齐,这是企业系统的极大的进步,用户的满意度自然会提高。

2.  有利于整合 IT资源,提高系统的对外协作能力

整合 IT资 源,这已经不是这几年的事了,其实很早以前都有在做这事,因为,早期的软件系统系都是独立的,或者,只是在部门内部几个系统间的协作。如果要使这种协作的 面积扩大化,那基本上是不可能的,因为有很多的协作接口,都是建立在对系统的全面了解的基础之上的。为什么以前做的整合不成功呢,我想这应该和标准化和整 合程度有关系

  • 标准化对企业 IT资源整合的影响

在以前的整合是建立在特定的技术上的。因为是建立特定的技术之上,企业软件系统大都是异构的,也就是说一个企业的系统可能会使用 .net,java,C,C++不同技术平台和不同的传输协议。要用一种特定的技术来整合一个企业的 IT资源,那成功的机率不会太高,一家公司所有系统都使用同一种特定的技术,那种可能性还是比较小的。

       SOA怎么做呢, SOA是使用标准化的技术,以特定的技术平台无关,而几乎所有的技术平台都支持这一技术标准,比如 web service。通过把旧系统的业务分解成一个个的服务,为每一个服务写一个面向 web service的适配器,让其他的软件系统通过标准的 WEB Service来访问这些服务,而不用管调用的系统是使用什么技术平台。在这种整合的实现是需要开发人员去写一个个的适配器的,会增加一定的工作量,但,这远比重新写一个系统来得简单得多。

  •   整合的程序对企业 IT资源整合的影响

在 以前的整合中,主要是以部分为导向,自上而下进行整合的,我们将这整合称做垂直整合。他只能在部门内的次源进行互联互通互操作,而部门间就无能为力了,比 如,财务系统要拿到业务系统的资料,那你只能去把业务系统的资料导出,再导入到财务系统,或者通过报文的形式来交互,增加许多的工作量而且出错的机率和花 费的时间也比较的高

       SOA是一个企业 IT战略的重要组成部分,他要求整合公司内部外部的所有源,我们称他为水平整合。他不但整合了公司的内部资源,还整合了外部的源。这样,可以极大的提高效率。

 

3.         提高投资回报率

我们已经做到了高效的反应用户的需求,整合了用户的 IT资源,用户的投资回报率当然相比一般的系统要来得高。

 

总结

       SOA不是一种


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值