信息周刊:我们最近在进行一项“中国SOA应用”的专项研究,希望了解SOA在国内企业的部署开展情况。请问中外运是否实施了SOA?
张思宇:是的,我们两年前就开始采用SOA技术作为我们一些应用系统的架构了。
信息周刊:业界对于SOA的理解并不一致。能介绍一下您对SOA的理解吗?
张思宇: 我从事软件开发20多年了,我认为SOA是一个不小的进步,开创了软件系统的新结构。
一个企业往往会有两个或多个系统,它们之间需要相互交换数据和调用对方的功能。传统的方法是在每个系统上留出对外开放的API接口,这些接口可能是基于一定标准的,但绝大多数是非标准的。
后来出现了多种支持分布式工作的软件结构、语言和编程方法等,使程序可以嵌入另一个系统中。再后来出现了EAI(企业应用集成)技术和产品等等,所有这些技术都试图解决相互调用的关系问题。
进入互联网时代后,出现了Web技术,出现了在应用服务器上,而不是在操作系统上开发应用系统的做法,出现了Web服务,使得客户端或不同应用之间,可以远程调用一个部署在应用服务器上的服务。SOA是在Web服务这一成熟技术上的一种扩展。我理解SOA架构的特点是,第一,参与SOA的不同应用系统或服务大多数是建立在应用服务器上的系统;第二,不同系统之间的对话主要使用标准的协议,比如HTTP、SOAP、XML协议等。
信息周刊:为什么说SOA是一种进步呢?
张思宇:SOA之前,API的调用方是主动者,它对被调用的系统的部分资源有控制权,会产生影响。这种方式我们叫做紧耦合。SOA则是调用方在提出请求后,等待对方的回应,而干涉不了对方系统的工作。这种方式我们叫松耦合。我们非常希望系统之间是松耦合的,因为如果是紧耦合的关系,A系统不断地通过API调用B系统的资源,B系统自己的工作就会受到影响。而在SOA这样松耦合的关系下,A系统向B系统提出服务请求后,可以继续其它的工作,B系统得到请求后返回给A系统一个结果。如果B系统忙的话,它也会通过一定的机制来处理这个请求。这样不同系统之间不会互相干涉。
第二点,API是非标准化的,SOA则是基于标准的。比如用XML语言描述一个请求,用HTTP等协议传递请求和结果,不同系统上的服务都可以理解,这样系统间对话才有共同语言。
第三,API依赖语言、系统环境、编程环境,但SOA不关心对方是用JAVA还是C语言,也不关心对方是什么Linux环境还是Windows环境,这和它调用服务的过程是没有关系的。所以我觉得SOA确实是一套很好的方法。
信息周刊:您觉得SOA是技术层面还是业务层面的问题?
张思宇:SOA主要是技术层面的问题,与它所实现的业务没有关系。打个比方吧,我认为SOA是一种文体。比如司马迁写史记,他按照本纪、书、表、世家、列传的架构组织他的材料。这和它里面的内容没有关系。
当然,现在的宣传中,强调了将业务梳理成一个个的小单元,用SOA的架构写成一个个的服务,部署在一套支持SOA的系统平台上,再串起来组合成适当的业务流程。这是关于如何利用SOA编写应用的方法问题,也是SOA应用平台的提供商们所强调的一面。