我眼中的SOA
SOA(Services Oriented Architecture,面向服务架构),它不仅是一种信息技术或模型架构,更是一种构造复杂信息系统的方法或思想。
目前,各个单位/部门都建立了信息系统,这些系统建设时,仅考虑了本单位/部分的需求,未充分考虑与其他单位/部门信息系统的接口,导致各个信息系统之间难以互联互通,形成了许多“信息孤岛”。而另一方面,随着信息化程度的不断深入,日益需要跨越单位/部门边界来实现更大范围(整个行业,甚至多个行业间)信息的整合和共享。满足这种需求的信息系统复杂度显著提高。没有任何人或组织能预先清楚该系统当前及未来的全部需求,随着系统的建设,会出现新的需求。对于这种复杂度高、需求不断扩展的系统,已不能用传统的软件工程(其要求系统需求必须完整且固定,才能基于需求进行设计、开发)方法建设,于是SOA应运而生。SOA要求从全局(整个单位、行业、行业间)着眼,来设计系统互操作方案,即将各个系统的功能以服务形式提供出来并建立服务间互操作的标准。SOA使得可以增量的方式来建立复杂的信息系统,它首先设计面向全局的系统架构,定义服务接入规范;然后根据现有需求建立服务,接入全局系统,并随着新需求的出现,不断补充新的服务,从而使系统不断扩展完善。SOA蕴含的思想并不是新东西,其实在现实生活中很多复杂系统的建设都采用了类似的思想。例如城市的供水、供电系统,城市是在不断扩展的,相应的供水、供电系统也需要不断扩展。这类系统正是先确定系统架构和接入规范, 各类水、电设备只需要遵循接入规范/接口即可。再比如,Internet是一个覆盖全球的复杂系统,它预先定义了多个协议和规范,各类终端只要符合相应接入规范/接口,即可通过网络设备连入Internet。
基于SOA的系统需解决两个问题:一是从业务角度来划分服务;二是建立服务间互操作标准。传统信息系统建设中,首先是业务人员把需求告诉IT人员,然后IT人员从技术层面划分模块并实现,这些模块只能被程序员理解和复用,业务人员是不理解和无法复用的。SOA则不同,它要求按业务而不是技术来划分模块,因此应由业务人员根据业务运作流程来划分模块。模块虽仍由IT人员实现,但业务人员清楚每个模块的业务含义,从而能够理解并复用模块。为了区分两种模块,前一种称为程序模块,后一种成为业务模块。多个模块可组合到一起,形成流程。相应的,有程序流程和业务流程。业务人员可以自主的配置业务模块参数、并组合业务模型形成业务流程(为了简化业务人员操作,提供图形化工具,辅助组合)。这样在系统需要提供新功能时,业务人员可通过组合现有业务模块实现(无需程序员参与),从而使新功能可以很快被实现,实现整个系统的随需而动;只有当所需的业务模块尚未实现,程序员才需要参与进来实现。随着系统的不断发展、成熟,系统中会积累大量的业务模块、业务流程,这都将成为很有价值的企业资产。相对的,程序模块、程序流程只对程序员有意义,对于业务人员没有意义,它是IT开发者的资产,却不是企业资产。为了实现服务跨组织/行业的互操作,需建立服务间互操作标准,它包含两个方面:制定行业统一信息模型和信息交换协议,统一信息模型定义了服务间交换信息的格式,信息交换协议则定义服务间交换信息的方法。统一信息模型的制订,需要国家引导,由标准化组织、科研院所、企业、行业用户共同参与制订,其中行业标准化组织和行业用户起主导作用。信息交换协议主要是信息技术,需要由信息领域的标准化组织、科研院所,企业参与制订。无论是统一信息模型,还是信息交换协议,都应是基于开放标准的,而不能是基于某个公司私有的标准。唯有如此,才能实现最广范围的互操作,也才能实现各个模块的插拔和替换,而无须关心它是由哪个公司生产的。
SOA项目的实施需要行业从业人员和IT从业人员的共同参与,尤其是行业从业人员应转换观念,从项目系统实施的配角转为主角,在项目实施中发挥更大的作用。例如在物流领域,业务模块的划分、行业统一信息模型的建立都需要物流专业人员参与,而信息交换协议及系统的实现则需要IT人员参与。在SOA中,业务是第一位的,技术是第二位的。可以预见,未来信息系统的建设重要的不是采用何种技术,选用哪家IT公司,重要的是对业务的认识和规划。未来的系统设计人员不仅要懂IT技术,更要精通业务。
从上面的分析,我们可总结出SOA的关键词“全局、业务、标准、开放”。这些特点使SOA在电子政务/商务、物流等需要跨系统、跨行业进行信息资源整合的领域将会大显身手。SOA是信息化发展的必然趋势,将带来信息化的第二个浪潮。
上面从思想和实施谈了SOA,下面从技术角度简单介绍一下。SOA用到XML、Web服务等技术,并已形成多个标准集如XML标准簇、WS-*标准簇等,目前这些技术标准主要由W 3C 、OASIS和WS-I等标准化组织维护。SOA是面向对象技术和面向构件技术的发展。SOA是一种组件模型,它为服务这一组件的设计、开发、部署、运行、管理、治理提供模型和工具。SOA也是一种分布式计算模型,它允许服务跨防火墙调用和组合,并提供分布环境下元数据交换、安全、性能、事务、计费等模型。