一) 什么是SOA?
面向服务的架构SOA(service-oriented architecture)是一个IT架构思维,是一个以服务组件的方式能解决信息孤岛的问题的一个方法。它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。
这些服务是自包含的,具有定义良好的接口,允许这些服务的用户——称为客户机或使用者——了解如何与其进行交互。从技术角度而言,SOA 带来了“松散耦合”的应用程序组件,在此类组件中,代码不一定绑定到某个特定的数据库(甚至不一定绑定到特定的基础设施)。正是得益于这个松散耦合特性,才使得能够将服务组合为各种应用程序。这样还大幅度提高了代码重用率,可以在增加功能的同时减少工作量。由于服务和访问服务的客户机并未彼此绑定,因此可以完全替换用于处理订单的服务,下订单的客户机-服务将永远不会知道这个更改。所有交互都是基于“服务契约”进行的;服务契约用于定义服务提供者和客户机之间的交互。通常,您将通过创建“基于消息的”系统来实现此目标。
从业务的角度来说,面向服务的体系结构的重点在于开发能帮助您完成业务任务的技术,而不是通过技术约束来规定您的行动。例如,销售过程(制造、运输和收到货款)可能会涉及数十个步骤和若干不同的数据库和计算机系统。但就其实质而言,此过程包含一系列人工活动,例如:
﹡销售人员找到潜在客户
﹡客户订购产品
﹡生产部门制造产品
﹡生产部门发出产品
﹡收款部门开具产品帐单
﹡客户支付产品货款
面向服务的体系结构基于这些实际活动或业务服务进行组织,而不是形成公司所维护的不同的信息竖井 (Silo)。通过实现 SOA,可以带来大量好处,包括以下各个方面:
﹡更高的业务和 IT 一致性
﹡基于组件的系统
﹡松散耦合的组件和系统
﹡基于网络的基础设施,允许分散于各地且采用不同技术的资源协同工作
﹡动态构建的按需应用程序
﹡更高的代码重用率
﹡更好地标准化整个企业内的流程
﹡更易于集中企业控制
二) SOA的发展
1.标准中立是SOA发展的基础
对于任何用户而言,他们都希望能有一个统一的标准,以提高“技术的经济性”,这就是标准的价值所在,在SOA领域也是一样。可以说,用户业务是随时变化的。因此基于开放标准的解决方案对他们来说至关重要,这样可以广泛兼容现有系统,并为快速响应未来的业务变化打下坚实的基础。
而最新的针对SOA的技术规范OSGi,它是一个非常成熟的Java平台技术,在该平台上,所有的技术都可以使用。OSGi在满足企业当前IT需求方面潜能巨大,它所包含的分发平台、编程模型和运行时环境,使它在构建SOA应用方面具有重大优势,可以为企业的IT系统创造一个良性的生态环境。事实上,通过OSGi可以帮助企业解决非常复杂的部署问题。目前用OSGi来做企业应用,应该说技术上的瓶颈已经不多了,只是怎么去充分的发挥OSGi的优势,这是有一定的挑战的。
此外,在分布式系统上,SCA虽是一种选择,但它只能解决SOA的部分问题。事实上,SCA规范是于2007年3月被正式提交至OASIS的一项以标准的形式进行推动SOA技术规范,虽然与OSGi一样,SCA规范是中立的,但在帮助企业更轻松地创建新IT资产,以及改造现有的IT资产方面它只能部分地解决SOA面临的问题。
2.分布式是SOA的发展方向
在部署和使用可共享和重复使用服务方面,分布式SOA架构是最为简单、易行的途径。CIO要想对SOA建立正确的认识,首先必须认识到,从概念上讲SOA是一种分布式的架构。
很长一段时间以来,我们都把IT认为是一个集中式的体系,如大型主机和C/S、B/S时代,但是这种模式是有局限性的。实际上,分布式的IT系统更高效。这一点上,我们可以参考一下互联网,由于采用了分布式的体系,互联网效率非常高,可扩展性也非常好。
SOA在本质上就是一种分布式架构。作为SOA的核心要素之一,服务的目的是要实现与另一项服务的远程通信,尤其是要实现数据互享。用户部署SOA架构的目的也是要改变IT系统的构建方式,由原来建立专有的单一应用变为建立更为高级和整合的应用,这种应用的显著特点就是充分利用已有的、可以共享和重复使用的功能,也就是服务。
与集中式的SOA架构相比,分布式SOA架构能更好地应对不断变化的技术和业务环境。比如,与过去流行的EAI(企业应用集成)方式相似,集中式的SOA由于在项目建设之初,需要先建立一个集中的控制点(如消息总线),哪怕是再小的项目也是如此,这往往会提高项目门槛,抑制用户部署SOA的积极性,特别是中小企业用户。
而分布式SOA没有集中的控制点,允许客户按照自己的计划渐进地部署服务,比如一次部署一两个服务,在未来根据具体的业务需要,再为系统扩容。
在部署和使用可共享和重复使用的服务方面,分布式SOA架构更简单易行,从而对目前业界普遍认同的渐进式的部署提供了更好的支持,同时,具备更强的部署灵活性、适应性和可维护性。
现在很多成功案例都是通过分步式、基于标准的途径实现的。其中,瑞士信贷集团是全球最早成功实施SOA的企业之一,他们就选择了渐进的分布式演进方法。该集团根据应用系统的发展情况,不断调整SOA的使用规模,从非常小的局部开始,最后再扩展到整个系统的应用,不断向大规模SOA演进,从而获得了很大的灵活性。如今,瑞士信贷的生产环境中有1500多个服务,日处理量达到500万笔。由于采用了SOA的技术架构,使系统的总开发和集成成本下降了73%,同时实现了70%的服务重用。渐进式实施的目的很明显,就是要降低客户实现SOA的成本。
对于分布式 SOA 在中国的应用前景,由于中国市场中存在大批新兴的企业,因此,在企业内部建立新的体系,中国企业更有能力转到分布式架构方面。