我查了一下百度百科中关于SOA的描述
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
1 是一个组件模型
2 把不同功能单元,通过定义良好的接口和契约联系起来。记住,关键是功能单元、契约、接口这三个词。
3 接口是独立于实现服务的硬件平台、操作系统和编程语言
我们知道,webservice是独立于实现具体功能的硬件平台、操作系统和编程语言的。而且我们定义接口也是按照契约的原则来持续改进的。
但从上面三个关键点来看,webservice就差了一个,那就是组件模型。
组件模型?Corba有Corba的组件模型,JAVA有EJB组件模型,微软有COM+/.net组件模型。但现实中的结果如何呢?微软的组件模型和WINDOWS系统结合太紧密,这就不中立了,显然,制定SOA标准规范的BEA、IBM、ORACLE不想上这条船。EJB模型,经过多年发展,各个厂商利益的纠缠,使EJB的发展道路上异常艰难,并且复杂,反EJB、without EJB的呼声越来越高。而且EJB与JAVA绑定太死,也不中立。那就剩下CORBA的组件模型了。CORBA一向以复杂著称,它的标准领导厂商,依然是BEA、IBM、ORACLE之类的。但CORBA确实与硬件平台、与操作系统、与编程语言无关。
这就很奇怪了,既然CORBA最符合SOA的思想定义,那干嘛还要创建SCA/SDO这些规范?
当然,CORBA就是由于复杂,所以真正在商业市场上落实的市场份额并不高,虽然IBM等公司大力在市场上推广CORBA,但仍然被EJB和COM+抢了风头,人家两个才是事实上的标准。
怎么办?IBM已经动了多年的脑筋,想主导J2EE的发展,虽然已经达到了一定的目的,但是里面总有许多历史遗留包袱,让IBM很不爽,这种沉重,如何能走向未来的10年呢?业界都说EJB已死,中间件热潮已过(BEA被收购就是一例),下一个十年怎么过?微软自创一套体系,J2EE承担不起来未来10年,CORBA推广一直艰难,新的开发语言层出不群(PHP、PYTHON、RUBY)。显然,IBM看到的是未来10年,看到的是大同世界,让我想起了IBM的一个广告:四海一家的解决之道。
那就超越J2EE,超越微软,超越这些遗留的语言(如C++),也超越这些新兴的语言(如PHP),来它个大同世界。
于是,SCA/SDO在IBM的领导下产生了。看看主导厂商,IBM、BEA、ORACLE,都是中间件的事实厂商,注意,他们也都是CORBA标准的主要领导厂商,他们也是J2EE标准的主要领导厂商,从这些关系中大家可能就明白了它们为什么有了CORBA,有了J2EE,还要有SCA/SDO。他们在为下一个10年的中间件市场谋取出路。这个主导厂商里,没有SUN。J2EE规范中有SUN,所以IBM总是不爽。我们都知道,这些厂商的中间件技术都是J2EE规范的,IBM是看透了,只要继续努力J2EE,就摆脱不了SUN这个讨厌鬼,每次改进标准的时候,磨蹭多年,最后的标准规范还是一个和了稀泥的东西。
需要一个不丢弃现在的中间件产品,又能顺利过渡到踢走SUN也无妨的技术。于是,SCA/SDO产生。这个标准,是可以很好与现在的J2EE结合不损失现有商业利益的,但又不属于SUN起源的东西,也比COBRA简单的东西,也不属于微软的东西。
跨平台的开发语言有多种,有JAVA,有C++,有PHP,有PYTHON,有RUBY。但现实中,还是JAVA/C++/PHP占主流,让EJB再加一个套,变成SCA,让没有组件模型的C++和PHP加个套,也变成SCA,这就是大同世界。只要有了这个套,大力投入人力和资金在PYTHON、RUBY等领域的SCA实现,那天下真的大同了。当年制定和推广CORBA没有经验,让CORBA这个标准英雄气短。现在有了J2EE的经历,从标准制定到标准推广,都有了丰富的经验,不成功都难。过去我们争着抢着说我们是三层结构的,我们是J2EE的,我们是COM+ WINDOWS DNA的,现在我们又可以说,我们是SOA的。似乎你用JSP写的,就不能称作是企业用产品。
各位看到这里,会发现,现在每个开源产品或组织的背后,幕后推手都是这些商业大佬。一流的企业是制定游戏规则的企业,这句话大家都知道。制定了行业的游戏规则,不遵守怎么办?那就推动让他落实。自己的企业实现这个游戏规则还不说,还必须让开源产品和组织也遵守这个规则。这样,不管是商业产品,还是开源产品,都在这个规则之下。现在开源产品发展的如火如荼,不理会是不行的。所以你看,IBM自己也做自己的商业产品,也派自己的人,也发放资金给开源组织。开源产品和组织成了一个看似中立,全世界人都能参与的,但是主导参与与控制的还是商业大佬的东西。你作为客户,不管你选择哪个,都在游戏规则中。
人说开源是*的,是开放的,是中立的,是不带商业色彩的。
但大家记住我的一句话:一流的企业是制定游戏规则的企业。控制了游戏规则,商业产品和开源产品都是规则的傀儡。