【IT168 技术文章】
目前最为前沿的IT行业趋势,第一是面向服务的体系结构(SOA),第二就是开源软件。而把SOA与开源软件的优点相结合,不仅可以降低客户的IT成本,同时还能敏捷地应对不断变化的业务需求。
在现有的软件开发项目里面,一直存在一个没有办法解决的问题:业务功能的理解和技术功能的理解是由同一个人负责的,也就是让同一个人或同一些人完成业务与技术领域的衔接。实际环境中想要找到一个这样的人是非常不容易的,而如果没有这个人,软件开发项目基本就离失败不远了,这是IT领域的老问题,也是面向服务的体系结构SOA(Service-Oriented Architecture)要解决的主要问题之一。
SOA限制IT部门考虑采用非常好的的组织与能力的组合,从而获得Web服务、SOA以及BPM技术的全部优势。就好象一个汽车公司一样,它不一定有能力发明制造轮胎、发动机、音响等全套的汽车零件。它的音响可能是从A公司批量购买的,它的刹车系统可能是B公司提供的,汽车公司利用了其他零件供应商的服务,来为最终的汽车用户服务。
在SOA架构中也是这样,技术人员必须能够适应从做全部工作到做部分工作,并与他人共同完成整个工作的转变。与对象或者过程相比,服务的开发应面向一个更为宽广的环境,因为它被重用的机会更大。实际上,定义可重用的服务也许是SOA中最重要的方面,也是SOA现在如此流行的重要原因。
OSOA规范三架马车
为了响应客户需求,IBM、BEA、Oracle、SAP、Primeton等公司正在合作制定用于构建SOA系统的规范,为开发人员提供构造基于SOA应用程序的更简单更强大方法。目前,制定规范的工作交由这些公司组成的OSOA(Open Service Oriented Architecture)协作组织负责,另外OSOA还负责在Apache推出开源的SCA/SDO实现,用来更快的催化市场的发展。

OSOA目前正在起草一系列的规范,并以免版税的许可方式提供给业界使用。OSOA的业界伙伴们现在主要在两个项目上协同工作,分别是SCA(Service Component Architecture,服务构件架构)和SDO(Service Data Objects,服务数据对象),这两个项目就象OSOA的两架马车一样,为SOA架构立下了汗马功劳。根据笔者掌握的最新情报,OSOA正在准备启动第三架马车:DAS(Service Data Objects,服务数据对象)。
1.SCA
早在2005年11月,OSOA就发布了SCA 0.9规范草稿。SCA是一种全新的、跟语言无关的编程模型,这种面向服务构件的编程模型可以大大简化客户的编程,提高应用的灵活性,将会对现有软件开发方式产生颠覆性的影响。
2.SDO
SDO致力于为应用系统中处理数据提供统一的方式,而不论数据的来源、格式是什么样的。SCA和SDO都可以独自使用,没有规定说在同一个应用程序中必须同时使用两种技术。然而SCA和SDO可以结合起来一起使用,从而为采用面向服务的架构搭建应用系统提供一种强有力的、灵活的方式。
3.DAS
DAS是与SDO密切相关的。DAS提供了一种对数据库和对服务来说统一的数据处理方式,它也提供了相应的机制,用来实现当数据同其来源分离时的处理。DAS设计用于简化和统一应用程序处理数据的方式。通过使用DAS,应用程序编程人员可以采用统一的方式访问和操作来自异类数据源的数据,包括关系数据库、XML数据源、Web服务以及企业信息系统。
开源SOA四将军
SOA作为新生事物,它的开源实现并不多。就笔者在行业内的了解,目前共有下面四个开源SOA项目,就如同战场上的将军一样,为SOA阵营攻城略地,开拓了不少疆土。
1.大将军Tuscany
Tuscany是Apache软件基金会的孵化项目,由在Apache软件基金会占有重要份量的IBM和BEA主导。Tuscany原本是意大利行政区名,一般中文翻译为托斯卡纳区,这里被借用作为项目名称。Tuscany的主要目标是为用户提供一组SOA基础设施,其中包括Java和C++实现的SCA/SDO/DAS标准。
2.骠骑将军STP
STP(SOA Tools Platform)项目是Eclipse基金会的重要项目。STP的目标是为技术人员提供一个灵活可扩展的框架,技术人员能够在这个框架的基础之上围绕SOA方便地进行设计、配置、组装、布署、监控和管理等工作。STP提供相关工具来支持开发人员使用面向服务的体系结构进行解决方案构建,而面向服务的体系结构则使用服务组件体系结构作为其核心模型。
3.左车骑将军SOA PHP
PECL(PHP Extension Community Library)库在PHP社区是无人不知无人不晓,不过知道PECL库新纳入的SOA PHP项目的人却并不多见。SOA PHP项目的主要目标是用PHP来实现SOA中的SCA/SDO标准,这对PHP社区的同志们真是个莫大的福音。
4.右车骑将军牛顿(Newton)
Newton是一个分布式的运行时框架,用来对企业级环境下复杂的SOA系统做动态的实例化和可持续管理。Newton利用SCA系统描述,对OSGi的组件做动态的布署,由此实现对分布式的异构数据源的监控和管理。