【IT168 分析评论】
1996年,Gartner提出了SOA概念。
Gartner还曾提出两个很著名的概念:
ERP,企业资源计划。以企业资源的角度来组织企业的人、财、物、信息。此概念产生于大生产时代MRP之后,号召把企业的上下游也纳入到企业通盘战略考虑当中。因为社会已经变成了产业链,从原材料到生产到物流到销售到售后服务,每个环节都影响生产企业。生产已经变的不是第一重要了,供不应求时代已经结束。进入营销渠道的时代。
CRM,客户关系管理。以客户服务的角度出发来重新组织企业的人、业务、流程、信息。此概念在ERP的基础上,把眼光从供应链上游和生产企业转移到了客户终端。生产时代结束,营销推销时代也快结束,不考虑客户感受,不和客户交互交流,一味生产和推销,是不可能获胜的。
(从什么角度来组织资源和流程,颇像技术界的面向过程、面向对象、面向组件、如今面向服务了)
在这样的大背景下,Web2.0也是顺应这个概念产生的,口碑营销、精确分众、圈子、即时通信、短信、博客,各种交互工具顺应时代而产生。
ERP和CRM都是应用层面的产物。
这样的应用,在信息化方面如何落地。
于是,SOA概念随即而出。
1996年的美国,互联网已经很发达了。但是互联网技术并没有跟上。企业仍然封闭在自己的信息化世界。虽然有CORBA、COM+、RMI/EJB这些技术模型在支撑,但向互联网公众提供信息服务,而非上下游合作伙伴提供信息服务,CORBA、COM+、RIM/EJB仍然在穿透防火墙和通用数据格式传输上仍然存在问题,三个体系都有自己的通讯协议和数据传输协议,普通消费者无法参与其中。
2000年,XML产生。随机基于HTTP的SOAP、WSDL、UDDI产生,Webservice作为一个基于互联网通用技术基础上发展的数据通讯协议和数据传输访问协议体系产生了。
但是Webservice只是定义了基于通用互联网技术的数据通讯和数据传输访问。就相当于底层通路通了。但是基于上面的应用呢,还是没有一个规范。就相当于,路通了,但是在这条路上什么样规格的车跑起来最顺畅,还没有这个规范。(当然你可以不要规范,自己造个自己的车,以后在和拥有统一规格的车一起管理和运行时交互时就有了问题。这个描述也为了回答相当一部份人提出的那个问题:我们既然有了Webservice,那干吗还要SCA/SDO呢?)
SOA就是干这件事的。
但是,SOA,业界大佬太急。就如同在.COM大潮中,每个企业都急于申明我们是一家.com公司。于是,这个市场混淆了各种视听。
做工作流的、做OA的、做业务基础平台的、做组件的、做中间件的、做EAI的,都号称自己已经是SOA了。有的说SOA是为了业务敏捷(可以灵活调整系统以适应快速发生变化的业务竞争。现摘录一段话:SOA通过把传统应用模块分解成更小的构件,并把这些构件当作可以重用的Web服务,CIO们就能通过选择和安排所需构件,来生成最贴合的系统。这和当年我们做WINDOWS DNA架构是多么相似。但当年SOA已经提出,但并没有人说WINDOWS DNA架构是SOA架构。没流行这个名词的原因??),有的说SOA是为了系统整合,有的说SOA是企业总线,有的说SOA是种业务分析设计思想,有的说SOA是技术架构模型,有的说SOA类似UML的作用,可以使业务设计人员和技术设计人员有共同语言,有人更说SOA就和web2.0一样,就是个概念。颇像当年微软急于把自己所有产品都打上.NET标志一样,最后弄的大家都搞不清楚什么是.NET了。直到2007年发布WPF、WCF、WF之后,.NET的技术走向才算基础架构定型。SOA和当时的.NET非常相似。
如今,SOA规范才真正落地为SCA和SDO。工作流规范业界已经成型,WF也符合业界工作流规范,所以SOA中并没有定义工作流规范。而对应WPF的SOA显然也不需要,毕竟SOA考虑的是业务接口服务层面,而非这个服务以什么样的图形界面规范来让客户存取,没有必要(中国普元补上了这一环节。中国普元也是OSOA优异成员之一。光有接口没有UI,还是需要程序员动手写这个UI,业务人员不可能没有UI去做灵活改变业务功能和流程,即使有BPEL和DSL也不行。别给业务人员任何技术的东西,别想着DSL和UML就能让业务人员用起来)。所以,SCA和SDO已经够用了,SOA架构真正成型。
但SCA和SDO是2007年8月才定型的(虽然2005年已经草案了)。所以之前急于号称是SOA产品的厂商不知作何感想。
我阅读了SCA和SDO标准,我也对比了过去我研究的CORBA,我也对比了微软的WCF,架构思想居然非常类似。
当年DEC和IBM主导定义的CORBA,太复杂,SUN和微软都做了定制化裁减,发展了自己的RMI/EJB和COM+。由于Webservice的出现,微软立即发展了基于Webservice的架构体系:WCF。但是JAVA世界由于标准制定牵扯了大量厂商的利益,发展缓慢。而IBM也不愿意尴尬的在SUN的JAVA世界做个影子巨人。IBM一直盘算着如何做领袖。
于是SOA真正架构,吸收了CORBA的教训(IBM由于当年的CORBA没有带起业界标准很是懊恼,这次要卷土重来,更加学聪明了,谁说大象不能跳舞),也结合了Webservice,也借鉴了WCF(WCF也是在Webservice基础上发展起来的架构,很多技术借用了Webservice的技术,而非另起一套底层),终于产生。
而OSOA组织,最近才出现SUN的踪影,而SCA和SDO标准中并没有SUN提交的草案。
JAVA和.NET两大平台,封闭而专有。而IBM需要的是一种业界标准制定者。SOA这回达成了IBM的意愿。无论是JAVA,还是.NET,甚至是PHP,只要符合SCA和SDO,就可以提供业界标准服务接口。
挣脱了语言和专属平台优缺点的樊笼,IBM蓝色巨人又成为自由的业界之神。
我为什么这么关注和信任和理解SOA。其实和我自身所处的软件行业非常有关系。
我是做企业管理软件的。很早业界就都有共识:软件不能这样卖了。我们把一套办公系统卖给了运营商,人家用我们的软件做服务,收费比我们卖软件还多。
所以,就连卖软件老大微软也在喊着软件服务化。
过去是在企业内部运行的软件,一个企业不外乎也就那么多人那么多数据。但是,一旦把软件服务化、互联网化了,就不抵有多少人访问了。
所以,我们如何应对软件服务化、互联网化。