作者:金蝶中间件(Apusic)首席科学家 袁红岗

SOA现在正热得“烫手”。
对于SOA,目前我听到主要有两种说法:一种讲它是“革命性的颠覆架构”,一种讲它是“皇帝的新装”。但无疑,SOA最近几年发展得非常快,世界各主要软件厂商纷纷高调跟进,关于SOA的报道可以说是不绝于耳。而程序员们有的兴奋和期待,有的则有些困惑,最近我在于广州、上海等城市举行的“金蝶Apusic Java俱乐部”上和程序员们交流时,他们或者以一种朝圣者的表情说:“以前面向对象的技术过时了,SOA时代来了”,或者一再恳切地追问我:“SOA到底是什么?SOA时代现在就要开始了吗?”

那么,SOA是什么?到底能解决什么问题、解决得怎样?我们和客户准备好了吗?我给出的答案是“Just Processing,SOA-现在进行中”。

SOA到底是什么?

SOA(Service-Oriented Architecture)的定义是面向服务的架构,就是说将软件按照功能设计成一个个服务,这些服务用标准的方式定义接口、并通过标准的协议进行调用。SOA所定义的接口和调用方式是独立于编程语言和运行平台的,广义上讲SOA可以基于不同的底层技术实现,比如CORBA和Webservices。但CORBA由于过于复杂和臃肿已很少使用,所以目前所说的SOA绝大多数是基于Webservices技术实现。在Webservices的实现方式下,SOA服务的接口用XML进行定义。

在SOA框架的支持下,软件系统开发从业务流程分析开始,使用组件化业务建模的方法识别和分析各种业务模型,将各种实践融入其中,在这个基础上我们建立一组用例,用例直接产生BPEL,这些BPEL则可以被融入一个服务整合框架中,描述了各种服务的信息,从而把ESB上的各个模块统一起来,形成一个巨大的服务仓[MS1] 。
这样,理想的SOA甚至是所有软件人员的一个梦:将中间层再进行抽离,在中间层作一个跨技术架构的元数据和业务逻辑,使之成为跨技术架构的、可长期继承的、并不断积累的企业知识库和最宝贵的资产,也就是面向服务的组件库。夸张一点说,如果所有软件企业都用SOA,那么世界软件业将会发生彻底的改变。显然,这样一个框架不是一种产品,也不仅仅是一种技术,而是一种解决问题的方法,一种“企业业务的指导思想”。

SOA应用的两个场景及其缺陷

那么,SOA要解决的问题是什么?我认为,从技术本质上讲,SOA应用于两个场景:第一种是业务互联互通(EDI),第二种是封闭的交易系统,即将元数据和业务逻辑抽离,形成100%的可复用。比如,当我们分析一个项目时,如果这个项目里有部分业务模块会被别的软件调用,比如一个ERP项目里的Order模块会被用户的自动下订单系统调用,或者这个项目里的业务模块是分布式运行的,不同站点之间的业务模块需要互相调用,这时就需要采用SOA技术。

无疑,SOA是一个伟大的思想,它试图定义一个大家(各种软件厂商)都“认”的、都“遵循”的法则,大家都用这样的方法进行互通互联,从而实现×××限的“联通”,解放无效和重复劳动。打一个不那么恰当的比喻,就像人类的语言一样,SOA或许就像《圣经》中那个著名的“通天塔”的故事:人们用同一种语言交流产生的威力无穷,以至于在巴比伦快要修成了一个“通天塔”,直达上帝所在的天庭。

但是,我们始终无法回避一个一直困扰软件开发者的大问题:如何解决业务逻辑的可变性?SOA是伟大的, 但在SOA应用的两个场景中,同样缺陷也是明显的:
第一种场景:业务互联互通,就是应用系统互联。SOA本身解决互通互联,与其说是技术问题,不如讲是业务问题,例如ERP、CRM的异步整合,数据层面整合都不能很好将两个系统整合,SOA仅仅是一种实现工具之一,整合效果并不会好不到那里去。我们可以说,在没有其他选项之前,SOA是一种最“不坏”的方式,但它并不能解决所有的问题,实际上EAI的牵涉面很广,而我们知道,有些问题并不是单纯靠技术就能解决的。

第二种场景:封闭交易系统,缺点是性能慢,而且交易没有形成确定的规范。XML比较慢是大家都承认的,性能方面的问题将对SOA的发展造在一定的阻力。同时SOA规范本身没有完善,包括Transaction规范在不断完善。SOA实质上可以讲就是WebService,但Web Service多年来收效渐微,并且性能较差。总的来说,SOA现在还处在一个发展阶段,很多标准还在制定,不同厂商之间还存在一些不兼容的现象,因此SOA还不能已经是一个成熟的技术,还需要时间的检验,还在“进行中”。

中国用户的现实选择之惑

在憧憬SOA技术带来的前景之余,我们不得不回过头来冷静地说:SOA和我们大家的共同客户――中国企业还有距离。

中国信息化进程与欧美不同,我们是大量基础业务系统都没有建立起来,整合需求不如想象的大。从我们对客户的了解,发现很少有客户有此需求。简单地总结就是互通无基础,是新建系统,需求并不强迫。而欧美市场大量业务系统建立起来需要整合,从这个角度讲,SOA是适用于他们的。

全年年底有个调查说,到2008年的时候,中国会有80%以上的大型企业应用采用SOA方案。但是据最新的媒体报道说,今天这个比例可能还不到10%。一项新技术需要市场的消化,大型企业出于保护企业投资,不会轻易地转移到新的技术平台;而即使像J2EE这样成熟的技术经过了这么多年的发展,也不敢说能达到80%的市场份额。SOA需要整个IT界的用户和供应商共同促进,仅靠一两家样板客户是说明不了太大问题。因此,想在两年内使80%的大型企业应用采用SOA方案、迅速发生如此剧烈而富有戏剧性的巨大变化无异于神话。

我国的信息化刚刚起步,从信息基础设施到信息化理念上于发达国家又很大的差距。在这个大前提下,我们谈信息化不是去盲目跟风,而是要静下心来认真的思考中国的信息化需要什么样技术架构、能够接受的什么样成本价位。这不仅仅是我们客户需要考虑,我们软件厂商要比我们的客户更要考虑清楚、更进一步。在这个充满变数的激烈竞争市场,只有冷静务实才能生存、发展。实际上,目前大多数用户还都在互相观望,而且在国内根本谈不上企业应用接口的标准化,在这种情况下,SOA还需要很长很长的路要走。

《圣经》中的那个故事说到:“通天塔”最后没有盖起来,人们之间根据各种关系又分出了很多不同的语言,沟通障碍出现了,理想的塔也就无疾而终。

在我看来,SOA是伟大的理想,但离真正的实际应用还有很长一段路要走,它需要整个行业一同来支持。而目前SOA在业务流程、管理和可靠性这样的关键性规范上还有很多不确定因素,还处于进行中。那么,如何用未来的“馒头”满足今天的温饱?