SOA与构件技术、软件工程、软件平台、信息安全、可信赖计算、软件产业等六个领域的关系既是SOA核心理念,也是其发展与应用的基础。
应用需求的快速发展带动了计算机网络技术的快速发展,其直接结果是产生了当前炙手可热的网络服务(Web Service)技术,如何合理地把Web服务应用到各类企业的IT系统和商业流程之中、并给企业带来直接的经济效益,一直是备受国内外企业治理者高度关注的课题。面向服务架构(SOA,Service-oriented architecture)就是在此背景下出现的,SOA被誉为下一代Web服务的基础框架,目前已经成为计算机信息领域的一个新的发展方向。
1996年,Gartner最早提出SOA的思想,2002年12月,Gartner提出SOA是“现代应用开发领域最重要的课题”,预计到2008年,SOA将成为占有绝对优势的软件工程实践方法。Gartner为SOA描述的远景目标是:在于让IT变得更有弹性,以更快地响应业务单位的需求,实现实时企业(Real-Time Enterprise)。一些IT组织已经成功建立并实施SOA应用软件了,IBM等厂商也看到了它的价值,继而纷纷跟进。
SOA与构件技术
研究SOA,不能不关注软件构件技术,“基于构件技术提供网络服务”是SOA的重要思想起源,做SOA研发的公司无不对构件技术有一定研究。
在SOA架构中,流动的应该是构件,而不是已经集成在一起的整个系统软件。一个用户选择了一款软件,一般都有定制的要求,尤其是系统治理软件,如ERP、CRM等。构件化技术为不同用户的定制要求提供了可能,把常用功能做成可供选择的构件,用户就有了更为灵活的选择。没有构件化时,软件系统的各个部分是紧密结合在一起的,因而会“牵一发而动全身”,采用了构件化技术后,软件的各个功能模块就可以独立地实现、升级,而不会影响系统整体。
构件技术与构件化的概念是有区别的,构件化的关注点不在于构件本身的技术实现,而在于如何把应用系统分解成稳定、灵活、可重用的构件,在于如何利用已有的构件库组装出随需应变的应用软件,从一个面向构件的环境中去分析应用,如何做出灵活、重用的构件来思考。构件化的目的在于带动软件工业化。
但是,构件技术则是构件化的基础,它为构件的工厂化生产提供技术保障。传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流等反映问题的本质;而构件技术关注的是在软件已经可用的情况下,在高层次上的复用,如分布式异构互操作。基于构件的软件设计方法学把应用和实现分离,提供标准接口和框架,使软件开发变成构件的组合。基于构的软件方法学是以接口为中心、面向行为、基于体系结构设计的,它要求:对构件件要有明确的定义;用构件描述语言和规范,如UML、微软COM构件技术中的IDL、科泰世纪CAR构件技术的CDL。
在基于对象模型描述的计算机网络系统中,对象是最基本的概念,分布协同的基本单元就是这些对象构件。对象之间只能通过预先定义好的接口访问,这些接口构成连接客户和服务器的协议。任何对象都可向其他对象请求或提供服务。SOA是一种基于对象的构件计算模型,它将不同的功能单元通过预先定义好的接口和契约联系起来。SOA的构件计算模型决定了软件系统构架。在一个SOA系统中,提供具体服务的是一个实现相应功能的构件。
SOA与软件工厂
作为面向服务的体系架构,当众多用户多次重用同一构件、或者需要在不同构件间进行互操作时,SOA需要提供一套统一的软件标准或协议,用工业化生产的角度来看,SOA架构需要支持软件的工厂化生产。
假如把软件比喻成工业化产品,软件工厂技术则包括软件零件的生产、下载、组装、使用、销毁等重要环节,软件工厂的本质在于提供一套统一的软件规范:包括在各个环节中的软件接口、标准或协议的制定原则、软件零件的生产规范、网络构件的下载与安全治理、软件零件的组装规则、组装完成后的运行机制、运行完成后的清理或销毁原则等。只要大家依照这些规范进行开发,就能够保证软件间的兼容性和互操作性,提高软件的开发效率和质量。
经过几十年的发展,软件编程理念经历了随意编程、面向结构、面向对象、面向构件、面向Web服务等阶段。相比之下,Web服务最为惊心动魄。Web服务之前的软件体系结构,功能重用主要是通过源代码级的封装、继续等特性来实现;而Web服务则是通过基于动态目标代码级的封装、继续,及元数据的自描述技术、AOP技术等来实现的。软件工厂条件下的软件积木式拼装和零件化生产技术不断成熟,理想的软件工厂技术的标志性特征是基于目标代码模块的动态拼装、动态运行、动态治理。以目标代码为基本软件模块,展开对同一应用软件的跨操作系统平台研究、展开同一应用软件的跨不同系统的集成运行环境的研究、展开不同应用程序之间的二进制兼容与互操作研究,这些都是促进SOA发展与应用的重要方面。
SOA与软件平台
在网络环境下的面向服务的架构中,支持网络软件运行的基础平台是很重要的,尤其是支持软件跨平台运行。Java虚拟机为Java程序的跨平台运行提供了基础环境。微软的.Net技术则充分考虑了企业级应用程序、尤其是由不同编程语言实现的应用程序之间的兼容性和互操作。
我国自主研发的“和欣”操作系统(英文名Elastos)创新性地实现了“CAR构件技术”(CAR,Component Assembly Runtime),提供了高效率的构件/中间件运行环境。“和欣”是完全面向构件技术的操作系统,其系统服务器都是以动态链接库的中间件形式提供,如文件系统构件、设备驱动构件、网络服务构件等。CAR构件技术完全面向下一代网络服务,提供了Windows、Linux上的构件运行平台,可实现“和欣”应用程序和CAR构件可以以目标代码形式在Elastos、Windows(2K/XP/CE)、Linux操作系统上二进制兼容运行。
SOA与信息安全
美国总统信息技术顾问委员会的一份报告《计算机安全:转折期的研发重点》(《Cyber Security:A Crisis of Prioritization》)中明确提到了:无止境的补丁不是解决问题的办法。通过修正和重建网络、计算机系统以及软件来“增强”安全性和可靠性可能在短期是必要的,但是这些不足以满足整个国家的网络的安全要求,很难在已有复杂的系统中增加安全性的要求。即使一切最好的防范措施都被充分地使用,假如对信息安全没有本质上的改变,我们仍将无止境地修补“堤坝上的漏洞”。因此,全新安全模式的研发需要从基础软件架构开始。通过对这些年来的软件安全问题进行计算模型上的分析,可以看出原有的软件体系架构已经无法满足日益复杂软件系统对安全的要求,新的,更安全的软件架构呼之欲出,SOA就是新安全体系结构的代表。
传统的软件架构并没有在安全性方面进行系统级支持,这是由于在软件产业发展的初期,人们更关心的是软件的功能和效率,而对软件的安全并不是很重视。随着计算机和软件开发技术的普及,软件的安全隐患陆续暴露出来,从病毒、盗版、到蠕虫,软件的安全性面临巨大的挑战。PKI就是在这种背景下诞生的安全架构,其部分解决对于信息认证及反盗版方面的问题,但对于原有的软件体系架构自身的缺陷,PKI仍不能全面保护软件和信息的安全,这也是大量破解软件存在的主要原因之一。在反病毒方面也存在同样的问题,各大反病毒公司不断推出新的反病毒软件,发布新的病毒库,但这一切并没有防范新的病毒,反病毒公司不断推出新的防病毒措施,电脑用户为更新自己的防病毒软件而疲于奔命,但电脑黑客们总能找到新的系统漏洞而进行攻击。为什么会出现这种情况?是否有一种更好的信息安全的措施?分析一下传统软件的架构可以发现,传统软件架构为了保持自由开放的特性,对软件的执行没有限制,一旦软件开始执行,就会获得相应的系统资源,并且认为软件的每个组成部分都是可靠的,而不管其中是否已经感染病毒。常见的反病毒软件也只能在软件运行前对其进行检查,而软件一旦开始运行,各种反病毒措施也就失效。因此,反病毒软件无法做到真正意义上的防范于未然。
SOA架构为信息安全提供了新的支持平台。SOA中所提供的服务必需通过权威的认证机构的认证,才能对外发布。这就保证了服务本身的可靠性,当用户从权威服务提供机构获得所需服务时,不必再次检测服务的可靠性,因为安全检测工作已经由服务提供者完成,这是SOA对服务使用者提供保护。对于向服务器申请服务的用户来说,其也必需通过相应的安全认证,只有合法的用户才能获得相应的服务,这样SOA对服务提供者也提供保护。在SOA中,软件的执行过程中不再像过去那样将要在本地安装所有的部分,而是动态地从网上根据需要请求服务,软件的各个部分分散在Internet中,需要时进行动态地组合。这种分散的软件结构,将安全责任由传统的软件使用者全部负担,转换为由软件的使用者和提供者共同负担,因而明确了责任,降低了单个用户的安全风险。对于一些不必在用户端执行的服务,可以在服务方执行,用户只要知道其结果就可以了,从而进一步降低了安全隐患。总地看来,SOA架构同时对服务提供者和服务使用者提供保护,从安全性角度来说是必需的,当然这种保护是以牺牲自由度和效率为代价。
以构件化为主要特征的和欣操作系统,在继续了SOA在信息安全方面的优势的同时,又结合Application Domain技术,提高了自由度和执行效率。Application Domain是比较新的技术,其在微软的新一代操作系统Longhorn中占有重要地位。Application Domain可以根据需要设置域(Domain)中所执行程序的权限,这使得程序的执行必需符合域中所授予的权限,以此达到保护系统的目的。在和欣操作系统中,通过认证的构件可以在权限较高的域中执行,如可以对文件系统进行访问。而对于没有通过认证的构件,可以让其在权限较低的域中执行,如禁止其访问本地文件。这样通过域的权限设置,可以将程序的执行控制在限定的范围内,避免对系统造成危害。这样就解决了自由度和安全性不能两全的问题。
总之,SOA是一次信息系统架构上的较大变革,其在提供了强有力的计算资源的同时,也为信息安全提供了系统级的支持。以软件构件化为基础的新的计算模型,将对SOA的深度开发与普及起促进作用。
SOA与可信赖计算
可信赖计算的最终目标是保护计算机资源(硬件、软件和数据)被合法用户安全使用,禁止非法用户随意使用计算机资源;保护计算机软件和数据不受非法用户破坏、更改和泄露,即使计算机被盗,也能防止信息泄漏。
为了提高计算机的安全防护能力,Intel、微软、IBM等发起成立了TCPA (Trusted Computing Platform Alliance)可信赖计算平台联盟,并定义了具有安全存储和加密功能的TPM(Trusted Platform Module)可信赖平台模块,发布了基于硬件子系统的可信赖计算平台标准。该标准通过在主机中嵌入一个硬件计算引擎来防止非法用户对数据进行修改,比常见的身份认证和数据加密方式技高一筹。后来微软另立门户发布了代号为“聪明女神”的可信赖计算计划(Trustworthy Computing),目标与TCPA如出一辙:建立一个可防止数据非法泄漏的电脑安全架构,保护用户的要害数据。“聪明女神”也是先从加装安全芯片入手,然后由Windows操作系统内核中增加的安全模块予以支持。
2002年底,IBM发布了第一款带有嵌入式安全子系统ESS(Embedded Security Subsystem)的笔记本电脑。2003,TCPA的核心成员将TCPA改组,更名为TCG(Trusted Computing Group,可信赖计算集团)。
在一个联网环境,可信赖计算对数字版权保护是十分重要的,TCG/“聪明女神”的真正用意是实现DRM(数字版权保护),对用户的计算机应用软件使用情况进行监控,DRM会让用户无法使用未经授权的软件,也无法自由播放、复制带有版权标记的音乐和数字电影。
可以看出可信赖计算具有十分广阔的前景,没有可信赖的计算支持,在上面就很难搭出符合现代版权保护要求的商务模型。同样缺少了可信赖技术,以租用软件、租用服务为基础特征的SOA也将很难取得真正的商业应用。根据目前的中国的信息系统复杂程度看,一个企业内部的信息系统完全采用SOA,还显得有些困难。如何平稳的将现有的信息系统过渡到SOA,是各大IT公司面临的主要挑战。和欣操作系统和CAR构件平台,为这种过渡提供了一种选择。
SOA与软件产业
SOA作为新一代的软件构架,在未来5~10年里将给软件产业带来革命性的变化。在SOA时代,任何一个大的应用软件系统,都不再由一个软件开发商独立完成,而是由不同厂商生产的基于基础标准和接口的中间件相互协作完成。到时会出现各种消息通信、内容治理系统、工作流引擎,身份认证提供者、整合应用和门户服务器等不同类型的中间件厂商。随着SOA的标准化,每种中间件的生产厂商的数量会逐渐减少。每个厂商也只会专注于一种或几种中间件,努力提高中间件性能和质量。从软件产业总体上看,这将降低软件开发成本,提高软件质量,大大减少目前各软件厂商之间相同软件部分重复开发的问题。
对于软件客户来说,SOA可以为客户解决“信息孤岛”问题,并能提供随需应变的服务。SOA通过将原有的应用和资源转变为可共享的标准服务,打破了“信息孤岛”。企业决策者只需要根据企业的策略来定制流程,把应用作为服务“拿来就用”,而无需考虑底层的集成。这样就可以实现IT和企业业务之间的同步。SOA要求开发者超越应用来思考,并考虑复用现有的服务或者检查如何让服务被重新利用。SOA鼓励使用可替代的技术和消息机制,通过把服务联系在一起来满足应用。这种基于消息机制的应用答应公司可通过调整使用已有的服务模式而非被迫进行大规模新的应用代码开发。这样客户可以在商业环境许可的时间内对变化的市场做出快速的响应。SOA在企业信息化方面有着明显的优势,为软件产业带来新的需求和市场。
但是现阶段SOA的发展仍然存在着标准化、安全、服务粒度、企业治理等等不足。其中标准化不足是制约SOA发展的重要因素。Web服务是实现SOA最好的方式,但Web服务本身还有很多不成熟的方面。除了SOAP和WSDL相对成熟外,在可靠消息传递、安全Web服务、Web事务处理等方面的标准还有待完善,无论UDDI、ebXML、UBL等在定义业务方面都还需要走很长的路。
目前国内建设电子政务、ERP等等大型信息系统工程,关注更多的是硬件及DBMS、应用服务器这样的大型系统软件。软件供给商们应尽量让客户重视基础信息标准化,为基于SOA的应用提供坚实基础。