什么是SOA,谈谈自己的看法(转)

转载自

http://blog.sina.com.cn/s/blog_4e7dcdef0100nfev.html  

 

 

什么是SOA架构

 

 

 

Mark:  今天看了金蝶公司一位仁兄的SOA视频ppt,深有感悟,于是把以前写的SOA在改改,修正某些观点。

 

下面是文章目录

1SOA概念和背景相关】

2你应该知道的一些概念】

3,我对 SOA 的理解】

4 SOA 到底你想干嘛?】

5 SOA  IBM 

 

 

1SOA概念和背景相关】

SOAService-oriented archITecture,面向服务架构)

 

SOA并不是一个新的概念,早在  90 年代(好像是1996年)提出来的,知道进入2000年以后,SOA 才逐渐被重视,被推广,无论是 IBM还是Oracle都有相关的产品。 像一些应用服务器 BEA  weblogicIBM Websphere 等等都支持, Tomcat 也支持 WebService

SOA 里面有 ESBEnterprise Service Bus), WSDLSOAP 等等概念。

经常在网上看到,SOA是下一代软件开发架构,那么到底为何称之为下一代呢?那是因为软件的开发经历了几个阶段,大概是这样子的: com组件 > com+,dcom >  ejb  > webservice

大概就是这样子的,至于谁把 webservcie 放到 最后,那是别人的说话,笔者我不是这么认为的。

 

2你应该知道的一些概念】

 ESB 企业服务总线

SOA组件

WebService

 

 

3,我对 SOA 的理解】

SOA 就是一种解决方案,当然也可以看做架构,也可以看做方法论,毕竟每个人对同一件事物是有不同的看法的,只是哪种看法更主流而已。 就像三民主义和共产社会主义一样。 谁的想法得到了社会的承认,得到主流舆论的支持,那么他的观点就可以看做标准。否则 EJB 也不会被 Sping 攻陷。

 

就像敏捷,TDD一样,都是一种解决现有问题的一种思路。SOA诞生的前提是什么,无非还是现实的问题,更明确些说:是企业,是政府部门面临的现实问题,导致出现了SOA这个解决方案。 并不是厂商或者个人凭空乱造的。只是因为有生存的土壤,所以SOA才会出现,才会发展,才会得到IBM,微软的支持。 Java 以前不支持SOA,可后来还得随波逐流去支持SOA,更本质的说,也就是支持WebService(我没有说SOA就是WebService)。 因为你不支持,那么你就可能要落后,可能就要跟不上时代,跟不上IT技术发展的潮流。所以你不得不支持WebService

 

就像现在的云计算一样, 你不说你的产品支持云计算,那么只能证明你的产品使用的技术不够先进。 但是用户,尤其是不懂IT的用户就认为你的产品out了。  所以这也是一种无奈。 随着 瑞星云,360云,金山卫士云,百度云,淘宝,阿里巴巴云 的出现,你的产品如果也没有个云,至少是概念上的云,那么就只能说明你的产品没有使用潮流的技术,跟不上时代的步伐了。跟不上时代的步伐,那么产品就要被淘汰。 虽然做IT的我知道,目前的产品支不支持云计算,没有多少必要。 因为对用户体验,产品的运行效率没多大影响,可是不懂IT技术的人,是没有笔者我这么理性的。

 

         所以作为潮流时代的我们,必须要谈谈SOA,否则你也要out啦。 就像你不谈敏捷,不谈TDD一样,也会被out。虽然你很理性,你说我认为soa对我来说,没意义。但作为潮流,你也只能随波逐流啦。 没有什么特殊的原因,用句现实点的话, “被SOA”,“被敏捷”……

 

经常,会被 SOA  WebService 搞混,认为这2个家伙就是一个意思。 其实不是这样的, WebService 是实现SOA 的其中一种方式。 WebService 基于 SOAP 协议的,本质就是基于XML 的,正是因为基于 XML,所以SOA才能整合不同的平台,不同的应用。

 

4 SOA 到底你想干嘛?】

总结总结个人观点,SOA到底能干嘛事:

l  整合异构系统

准确点说,整合企业的遗留系统、正在开发的系统和即将开发的新系统。 不同的系统可能采用不同的平台,如操作系统的选择;不同的开发语言;不同的系统架构。

 

l  及时的响应用户的业务变化

大量的SOA组件,通过整合和拆散,然后打包成一个个的粒度合适的SOA组件,再经过流程管理工具的处理,实现业务的不断变化。

就像变形金刚那样,零件还是那些零件,但是经过一定的变化,也就是对SOA组件的拆和并, 就可以玩不同的花样。当然这是理想情况,至于到底实际情况如何,笔者也没有搞过,所以不清楚。

 

5 SOA  IBM 

 

先来看看IBM SOA的期望:

http://www.ibm.com/developerworks/cn/WebServices/newto/

主要就是2 点:

 

  • IT 与业务的一致性
  • IT 资产的最大化重用

 

花了一个下午的时间,上网看帖子,去 ibm 的专区看,感觉还是不能领会到SOA的精髓。

就拿 IBM 宣传的那2点评评。

-IT 与业务的一致性

所谓的IT与业务的一致性,个人理解就是SOA是面向客户的,就是客户提出什么业务需求,那么IT就必须开发什么需求。 举个例子,我们经常去沃尔玛超市买东西,假若沃尔玛超市部署了SOA而且沃尔玛说了,满足所有用户的要求(但这是不实际的)

 

于是,我这样的客户就可以说,你沃尔玛怎么不卖鲨鱼肉呢,你们必须提供一项服务,卖鲨鱼肉!这是一个活生生的客户需求, 于是沃尔玛的SOA技术部门就会提供一项服务,名字叫卖鲨鱼肉。

 

    如果改天,我想吃企鹅肉了(鄙视腾讯的弹窗), 我就向沃尔玛的SOA实施部门再提了一个要求:我要吃企鹅肉了! 于是乎沃尔玛就又提供了一项新的服务:卖企鹅肉。

    改天,我突然想有一个新的服务,我鲨鱼肉也吃,企鹅肉也吃,而且吃的顺序随便改。那么我就又向沃尔玛提了个要求: 我要吃鲨鱼肉和企鹅肉,你们必须打包卖。 于是乎沃尔玛又提供了一些服务,鲨鱼肉和企鹅肉一起卖。但这个新的服务是卖鲨鱼肉的服务和卖企鹅肉的服务组装起来的。 是通过一些服务组件(卖鲨鱼肉和卖企鹅肉)拼装成的服务(同时卖鲨鱼肉和企鹅肉)。

 

    上面的这个例子就可以看出SOA的一个小小的优点了,只要把SOA组件随便打包,就可以有不同的服务了。

 

2IT 资产的最大化重用

这个很好理解,一个企业,可能有很多遗留的老系统,和即将上线的新系统。SOA就可以把这些所有的系统整合起来。

 

 

如果你的企业不是跨国企业,如果你的企业没有多少遗留系统。那就没有必要用SOA架构。SOA架构是一个庞大的工程,哥我看了视频之后,才发现自己是多么渺小。

SOA面向的对象,一定是那种大企业,何谓大企业,像工商银行,跨国企业的那种,

 

其实,一个企业能有多少遗留的系统呢? 又能有多少个应用平台呢? 可以想象一下,在一家企业,一个部门用jave ee 的,一个部门用 .net , 这样的概率又能有多高,如果一家企业内同时允许java平台和.net 平台共存,而且没有主从之分的那种,那么我也只能说:佩服佩服。

 

总之用不用SOA,请慎重考虑。

你可能感兴趣的:(SOA面向服务)