应运而生的SOA
美国著名的IT市场研究和顾问咨询公司Gartner预测:到2006年,采用面向服务的企业级应用将占全球销售出的所有商业应用产品的80 以上到2008年,SOA将成为绝对主流的软件工程实践方法。近几年全球各大IT巨头纷纷推出自己的面向服务的应用平台,纷纷表示自己将全面支持SOA。仿佛一夜之间SOA成为炙手可热的软件开发方法。其实SOA并非刚刚出现的新名词,而是很早以前就有人提出了面向服务的概念,只是以前没有现在这么多人关注而已。随着软件开发方法的不断发展,随着企业级应用系统愈来愈复杂,使得SOA成为了应运而生的软件工程方法。
什么是SOA
SOA 是Service Oriented Architecture的缩写,代表了一种软件开发方法。其核心思想是由擅长软件开发的技术人员把一个个的业务功能包装成一个个标准的服务,精通商业流程的专家通过组合这些服务可以很容易的搭建功能完善的企业应用,或者重新组合这些服务成全新的应用以满足企业的不断变化的需求。这里只是给出了SOA简单的介绍后面将会详细的讲述SOA架构。
应用软件开发方法的演变
应用软件开发方法在短短的几十年中经历了一次又一次的进化,然而每一次的进化给人们带来的好处都是一样的,那就是提高生产效率、减低生产成本,因此给投资者带来更丰厚的回报。回首软件开发方法的进化历程有如下几次重大的过程:面向函数(面向过程)、面向对象、面向组件以及迎面而来的面向服务软件开发方法。每一种软件开发方法都解决了特定的问题,但同时又不得不面对新的问题,因此不断的催生新的方法和手段。面向过程和面向对象的软件开发方法大家都已很熟悉了,因此不用多说,下面着重看一看基于中间件和基础件的面向组件的软件架构方法。所谓中间件是相对于以前的客户端/服务器结构而提出的把商业业务逻辑抽象成一个个组件,然后把这些组件放在中间层的应用服务器上运行,由应用服务器负责各个组件所需要的事务和安全等基础服务、以及组件的管理和监控等等。IT技术人员都知道要开发事务和安全这一类的基础服务需要专业的系统级的程序员来完成,而不是普通的应用程序员就可以轻松搞定的事情,或者说开发和维护这一类的基础服务需要耗费大量的人力财力,然而幸运的是事务和安全等基础服务可以独立于业务组件,因此有了当今正流行的各种中间件和基础件产品。这些中间件产品专注于基础服务的开发和维护,而应用程序员可以专注于业务组件的开发,因此对于开发各种企业应用如ERP,BPM以及电子政务等等各种应用系统的软件公司只需要购买专业的中间件产品,不用自己费时费力的开发和维护中间件和基础件产品。
当今流行的中间件平台有:SUN公司领导的J2EE平台,微软主导的COM/DCOM平台以及OMG公司主导的CORBA平台。正如我们所看到的有这样三种主流的技术,因此应用软件公司在开发应用软件时不得不在其中做出选择。在他们选定了一种中间件技术之后,所有的软件组件都在这个选定的中间件平台上面搭建。也有的比较大的软件公司选择的了多个平台,比如说他的ERP基于.NET平台,而CRM基于J2EE平台。随着各种应用软件的不断开发,一个个“信息孤岛”也就被无形中建立了起来,然而应用软件也越来越复杂,应用软件的客户对应用软件的要求也越来越高,其中最为典型的技术上的要求是:要求集成各种应用软件,各种应用软件产品必须能够互连互通,各种应用软件产品之间可以共享信息,互 相之间可以共享某些功能模块,而不需要重复开发。这些要求成为了基于中间件的面向组件开发的软件开发技术的心头之痛。虽然各种EAI的产品可以缓解一下这个心头之痛,但还是无法从根本上解决问题。除此之外,基于中间件的开发的产品耦合度过高,导致无法适应不断变化的应用软件需求,因此基于中间件的面向服务的软件开发方法SOA成为了人们关注的焦点。因为可以互操作的特性是SOA的一个重要的基础功能之一。SOA要求把业务功能包装成标准的服务,所谓标准的服务是服务之间可以互相调用,服务的技术实现对于客户端来说是透明的。客户端不用关心服务是如何实现的,不管它是用什么编成语言来开发的。服务可以用JAVA来实现,也可以用Microsoft C#来开发。
因此可以用下图来表示应用软件开发方法的演变过程:面向过程、面向对象、面向组件、面向服务。
SOA的抽象模型
要理解实施SOA,首先要对SOA的架构有个认识,SOA架构分为四大功能模块:
开发服务
发布服务
查找服务
使用服务
服务提供者开发出各种各样的有用的服务,经过严格测试后把服务发布到公共的服务注册表上,服务请求者通过查找服务注册表获得所需要的服务,然后便可以使用所需要的服务了。
SOA架构可以抽象为如下的模型:
SOA的最佳实践
Web Services作为SOA的最佳实践具有如下特征:
标准
Web Services的规范包括SOAP、WSDL、UDDI、XML,以及其他一系列的标准,这些标准是每一个Web Services实现必须要实现的。目前绝大部分的Web Services产品都支持这些标准,尤其是各大国际IT巨头。
松散的耦合
互操作
每个Web Services产品之间的互操作在很大的程度上决定了Web Services的成败,因此国际组织WS-I为Web Services互操作制定了标准以及测试包。
基于中间件
Web Services的大部分产品都基于某个中间件产品,因此可以把遗留应用中的功能组件包装成服务。因而这在很大的程度上可以保证现有的投资不至于浪费。
APUSIC与SOA
金蝶中间件(APUSIC)作为专业的中间件公司一直专注于中间件产品的研发,其通过了Sun公司的J2EE国际认证的旗舰产品Apusic应用服务器在中国的中间件市场扮演了重要的角色。经过多年的实践,Apusic应用服务器已有广泛的用户,金蝶中间件公司不仅提供给用户高效稳定的中间件产品,而且培训用户如何正确的使用中间件产品,帮助客户对客户的应用进行架构设计,因此中间件公司对中间件的优势和局限性有深刻的体会,从而更加确认SOA对于构建将来的应用的重要性。为了更好的满足用户的需求金蝶中间件公司已在Apusic应用服务器3.0中集成了Web Services的功能,已经开始在实际应用中实施SOA。Apusic Web Services是完全基于国际标准来实现的,支持SOAP、WSDL、UDDI、JAX-RPC、SAAJ、JAXM、JAXP等等标准。在开发Web Services时Apusic一直非常注重与其他产品的交互,经过测试Apusic Web Services可以与Bea Weblogic和Microsoft .NET等产品的Web Services实现互操作。并且可以通过WS-I(www.ws-i.org)的WS Base Profile 1.0互操作性测试。