14.2 SOA和云计算

前面介绍Web Service时已经提到了SOA的概念,SOA是Service Oriented Architecture(即面向服务的架构)3个单词首字母的缩写。一般说来,SOA代表一种新的软件结构,在SOA架构风格中,软件供应商通过提供服务赢利,而不是通过提供软件产品赢利。

近来新出现的“云计算”概念,其本质和SOA、SaaS是相同的。从消费者的角度来看,SaaS其实也是云计算的一种。简而言之,云计算就是SOA、SaaS的升级版。实际上,云计算依然是将以前那些需要大量软硬件投资以及专业技术能力的应用,以基于Web服务的方式提供给用户。云计算把硬件资源、软件资源和数据资源等各种资源集中起来,统一向消费者提供“云计算”服务,而服务消费者只需要一台可以联网的计算机,甚至只要一台可以联网的小型智能设备,就可以使用“云计算”服务。

14.2.1 SOA和Web Service

SOA更多地是一种软件架构风格,它将应用程序划分为一系列粗粒度的功能单元(称为服务),不同的服务被分离成各自独立的部分,再通过良好的接口和协议将这些服务联系起来。

服务之间的接口是采用中立方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在不同系统中的服务能以统一的、通用的方式进行交互。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。

松耦合系统的好处有两点:一点是它适应变化的灵活性;另一点是当组成整个应用的某个服务的内部结构和实现发生改变时,它能够继续存在,不会对其他服务产生影响。而紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要应用程序的某个部分进行某种形式的更改时,将会导致应用程序的其他部分或整体发生更改,因此显得非常脆弱。

SOA不是一个新鲜事物,但它却是传统面向对象的模型的替代产物,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于SOA 的系统并不排除使用面向对象模型来构建单个服务,但其整体设计却是面向服务的。由于它考虑到了系统内的对象,因此虽然SOA 是基于对象的,但是作为一个整体,它却不是面向对象的,而是面向服务本身的。

SOA系统原型的一个典型例子是CORBA(Common Object Request Broker Architecture,即通用对象请求代理架构),它已经出现很长时间了,其定义的概念与SOA 相似。

对于SOA而言,除了服务的提供者和使用者之外,还必须有第三方作为中介,它负责管理服务的注册登记和查询。在这种情况下,SOA体系架构中同样涉及3种角色:

alt 服务使用者:服务使用者是一个应用程序、一个软件模块或需要该服务的另一个服务。它向注册中心查询所需要的服务。一旦查询到所需服务,将直接绑定到指定服务提供者,并且调用服务功能。服务使用者根据接口来调用服务。

alt 服务提供者:服务提供者是一个可通过网络寻址的实体,它接受并执行来自服务使用者的请求。它将自己的服务和接口发布到服务注册中心,以便服务使用者可以找到该服务。

alt 服务注册中心:服务注册中心是发布服务的支持者。它包含一个可用服务的数据库,允许感兴趣的服务使用者查找服务提供者的相关信息。

这3个角色和图14.1所示的3个角色非常相似,也就是说,SOA和Web Service具有极大的相似性,以至于在很多公司、很多技术人员心中,一旦使用了Web Service,就等同于采用了SOA。

诚然,SOA并不等同于Web Service,因为SOA属于架构风格方面的概念,而Web Service更多地侧重于一种具体的实现技术。实际上,Web Service通常作为SOA的实现技术出现。

14.2.2 云计算和Web Service

云计算是一个更加“前卫”的概念,它的基本思想是:充分利用互联网上的硬件资源、软件资源和信息资源,而不是利用本地计算机进行数据计算和数据存储。在云计算这种商业模式下,软件使用者不再需要购买、安装软件,不再需要维护数据存储的安全,甚至连硬件设备都可以省略——可能100MB的硬盘空间永远也用不完,因为所有数据都保存在互联网上。

云计算提供了一种革命性的思考方式,它把互联网的信息、计算能力和数据存储能力都作为一种商品进行流通,就像煤气和水、电一样,需要使用时就“打开”它们,按需付费。从用户的角度来看,云计算取用方便,费用低廉。与传统的煤气和水、电等资源唯一不同的是:煤气和水电等资源是通过管道和电网传输的,而云计算资源则通过互联网进行传输。

如果云计算成为现实,普通用户可能只需要一台笔记本或者一部手机,就可以通过网络服务来实现所需要的一切,甚至包括进行超级计算这样的任务。从这个角度来看,最终用户才是云计算的真正受益者。

如果云计算成为现实,普通用户将不再需要购买整台PC设备,也无须为频繁地升级PC硬件而花费大量金钱,因为普通用户使用的“计算机”只要能发送请求,并显示云计算的处理结果即可。云计算的模型示意图如图14.2所示。

alt

图14.2 云计算模型示意图

虽然云计算并未直接与Web Service发生任何关系,但实现云计算有一个必需的前提——云计算以何种方式提供?很显然,云计算必须用一种平台无关、编程语言无关、厂商无关的方式来提供,否则用户就需要为A厂商的云计算购买一套设备,再为B厂商的云计算购买一套设备……这显然背离了云计算的原则。

由此可见,实现云计算必然需要一种成熟的实现技术,从现有的各种技术来看,Web Service可以说是一个不错的选择。这是因为Web Service的特征恰好能满足云计算的需要:

alt Web Service是与平台无关、与编程语言无关的技术,而且不属于任何软件供应商。

alt Web Service是基于开放的Web平台的,只要有互联网,就可以调用Web Service提供的服务。

alt Web Service的用户无须购买复杂的硬件设备,只需一台简单的接入互联网的“哑终端”,并可调用Web Service即可。

目前云计算依然处于商业推广阶段,现在说Web Service就是云计算的实现技术还为时过早。但无论如何,云计算都需要一种类似Web Service的技术来实现,这种技术可能就是Web Service,也可能比Web Service更先进。