软件开发中的SOA理念

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

      这样也许太国羽理论化,有一篇文章对此做了形象的比喻:

      

玩乐高玩具,体会SOA概念

  SOA的理念与乐高玩具的设计思路很相似,这是最早的一个关于SOA的成功比喻。

  传统的应用好比是普通的玩具,不可拆卸和拼接。而乐高玩具与众不同,可以按照用户自己的想法随意组装,就是因为它是由标准的微小的组件构成。

  基于SOA的应用都是由更小的服务组件组成的,如同乐高玩具的模块;用乐高玩具可以搭建各种不同的形状,就好比SOA架构可以实现不同的应用;乐高玩具的模块式是基于标准化的,因此可以反复利用,SOA架构也是这样。

  这个比喻的好处,是能很快帮助非技术人员在头脑中建立形象的概念,在一个研讨会里面,组织者发了一些乐高玩具的模块让客户们自己做出一些东西来。由此很快让听众明白,他们就是在做和软件开发类似的事情。

  也许有人会说,SOA那么复杂,用小孩玩具来比喻是否太浅显了,这时,进入深层次探讨的机会来了。

  看上去,乐高玩具这么简单,似乎没什么深奥的,但其实这背后隐含了一种设计哲学。设计乐高玩具的团队都是一群拥有博士的设计专家,他们必须解决的一个矛盾是,如何把标准,松耦合、模块的功能以及力学等要素在设计和规划的时候统统解决,留给使用者的,只是纯粹玩的乐趣。一个有趣的事实是,乐高玩具这样一个看上去如此简单的东西一直没有模仿者。

  通过这个比喻,大家可以在10分钟内就明白SOA是怎样一回事,就像所有人看到乐高玩具时就马上能找到玩法一样。然而,当一个人从设计者的角度来理解乐高和SOA类似的设计哲学时就会发现,两者的服务对象其实正是不需要关心技术的人,而且,他们都是为技术买单的人。

  工程师的位置,到底是个玩家,还是设计者为玩家,工程师懂得似乎多了一点,作为设计者,他还有太多东西要学,就像要成为乐高玩具的设计者一样。

看看电视与电脑的区别,理解SOA的特点

  修电视比修电脑难多了,虽然电脑比电视要复杂多了。SOA就像电脑,结构复杂,但容易管理、容易维护、容易升级。

  电脑有一个基于标准的结构——总线结构,还遵循即插即用的契约标准,这些IT界的流行语塑造了PC行业。SOA也拥有几个标准的参考结构,总线,松耦合这些理念和PC行业的基本理念完全相同。

  看一看身边那台可以随时拆开修理、更换显卡、升级内存的台式机,任何一个同行都能马上体会到具有相同理念和优势的SOA的好处了。

看丽江古城的演变,明白SOA实施的模式

  技术总是跳跃的,应用系统永远是中庸的。应用在这个例子里面被比喻为普通的建筑物,而作为企业架构的SOA实施则被比喻成为一座城市。

  城市的演进必然是循序渐进的,这比喻了SOA的实施是一个旅程。

  正面的例子的是丽江古城,这座规划于八百年前的城市,现在仍然生机勃勃,因此被称为“活的古城”。用一条河流分成不同水道流经整个古城,每家门前都有流水声,可以用水洗衣,做饭,所有的街道按照经络学说布置,所有的街区都能享受到同一基础设施上的服务;最有代表性的的是,作为市场的四方街,采用了自动水冲洗设施。由于古城地势东高西低,四方街是中间高,边缘低,因此每天人们用挡板截流水,当水位较高时就可以自动冲洗街面了。这种设计,据说,阿姆斯特丹也有一个,只是不知道哪一个更早。

  可以说,丽江古城的设计是面向服务的,水就是他们的公共服务。他们还通过一些规则来规范水的使用,比如在以前,清晨的水在同一时间,所有人可以用来做饭,下午的某个时间,所有人都可以洗衣服。这就是SOA里面讲的“服务契约”,“管控规则”,“基础设施优化”等理念都可以看到。

  而反面的案例可以看看北京的交通。北京的交通结构有点像传统的架构,无论增加多少条高架和道路,总是难以解决拥堵的问题,这是因为几个环路的设计实际上等同于EAI的办法,总会造成总线拥塞。如果把北京城区的许多大院打散成为更小的社区,类似于将应用的颗粒度变小,就象旧金山那样,其实可以做到很多地方至少不会堵死.然而这个改造需要循序渐进的实施方式。

  想想,为了奥运会,北京的地铁花了多少时间来与地下的管道打交道,我们就知道,企业应用架构的改造有多复杂,也就明白,如果一开始就采用SOA架构有多重要了!

     接触了这么多的软件设计理念,其实,一一想来,要在真正的实际应用中,都能实践,才是真正的王道啊!路途遥远,要加足马力啊!

来源:山城程序员

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年8月23日
下一篇 2013年8月25日

相关推荐