编译文章——理解面向服务的IT架构(一)(By AMT 张纯棣)

2006-5-24 1:41:07【作者】 AMTeam.org 【进入论坛】
本文关键字 文章交付
广告

理解面向服务的IT架构(一)

 

David SprottLawrence Wilks

CBDI Forum

20041

编译 AMT 张纯棣

介绍

很明显,大部分的软件能力最终都会作为服务被递交和使用。当然,他们可能被作为一个紧密联系的系统被实施,但使用的点——在门户网站上、设备上、另一终端点等等都会使用一个基于服务的接口。我们已经听到类似的讨论,说明架构师和设计师需要很谨慎的避免每一样事物都成为一个服务。我们认为,这样的说法是不正确的,也是一种很混乱的想法。在给定的Web服务协议和技术下,质疑是否实施Web服务时每一事物都要被作为服务实施可能有一定的道理,但这并不影响我们在设计时从服务的角度出发来考虑所有的事物。服务是主要构造,同时也应该被用到每一个重要的接口上。面向服务的架构(Service-oriented architecture)允许我们根据相关的服务或者以相关服务集合的形式管理所有事物(包括交付、获取、消费等等)。这会对我们如何管理软件生命周期带来深远影响——从服务的角度规定我们的需求、设计服务、从服务的角度考虑获取和外包业务、服务的资产管理等等。

现在,我们对于提取何级别的功能已经有了明确的规定,并且这一级别也变得越来越高。我们已经从模块(modules)过渡到了对象(objects)、成分(components),而现在则是服务(services)。然而,从许多方面来考虑,SOA的命名其实是非常不幸的。同时,虽然SOA探讨的是架构,但我们不能仅仅局限在对架构的探讨上,因为其他的环节,如业务设计和流程的交付等也都是非常重要的。一个非常有用的命名方法就是面向服务,即Service OrientationSO)。事实上,这一思想与面向对象(Object OrientationOO)或者说基于组分的开发(Component-based DevelopmentCBD)有很多平行、相似的地方:

¨          同对象和组分一样,服务代表了一个自然的building块,它允许我们按照我们熟悉的方式来组织各种能力

¨          同对象和组分一样,一个服务是一个building块的基本组成部分。

¨          联系着信息和行为

¨          将内部的工作隐藏起来,防止外界的干扰

¨          提供了一个与其他部分解后的相对简单的接口

¨          对象方法利用了抽象的数据类型和数据提取,而服务则通过面向环境提供一个同样级别的适应性

¨          对象和组分可通过继承行为被组织成类或服务层级,服务则可以单独的或者作为层级而被公开使用。

对大部分的组织来说,在研究面向服务的架构时,一个合乎逻辑的起点就是考虑Web服务。然而,Web服务不是天生就面向服务的。一个Web服务仅仅具有一定的能力与Web服务协议相一致。在本文,我们将识别出一个具有较好形式的服务应具有哪些特点,并为架构师和设计者提供一定的指导,告诉他们如何交付一个面向服务应用。

 

定义和原理

看看四周,我们发现SOA这个词面的越来越流行,但并没有太多的文字说明他该如何使用。例如,万维网联盟(Word Wide Web ConsortiumW3C)将SOA定义为“可被调用的一系列组件,他们的接口描述是公开的。”我们可以在其他地方见到类似的定义,这是从一个非常技术的角度出发给出的定义,尤其是在考虑技术实施时非常适用。这很奇怪,因为架构这一词往往更多的用于描述一种风格或一系列的实践——例如,一些事物被设计和组件的风格,如Georgian艺术时代的建筑、Art Nouveau装饰品或者Edwin LutyensGertrude Jekyll爵士的花园等等。

CBDI则认为,面向服务的架构需要一个更为广泛的定义。为了得出这一定义,让我们从一些现有的定义出发,并将W3C的一些定义与CBDI的某些建议进行对比。首先让我们看看基本的服务概念是如何定义的。

 

服务

¨          一个组成部分,他能够实现一定的任务。一个WSDL服务:一系列的终端点(W3C

¨          使用WSDL描述的一种能力(CBDI

服务的定义

¨          一种手段,通过它可以按照已达成的合同(暗示的或直接表达的)来满足消费者的需要或需求,这些合同包括服务协议、功能提供等等(CBDI

服务的履行

¨          能力杯执行的实例(CBDI

Web服务

¨          一个软件系统用来支持网络上的机对机共同操作交互。它有一个交互接口,该接口被描述成一种照机器可处理的形式(尤其是使用WSDL)。其他的系统与Web服务按照事先定义好的方式与Web服务进行交互,这些定义通常使用SOAP消息来描述,比较典型的表达了如何使用带有XMLHTTP如何与其他web相关的标准相联接。(W3C

¨          一个程序化的接口,该接口提供了与WSnn协议相交互的能力(CBDI

从这些定义我们可以看出,很明显,W3C采纳了比CBDI略为狭隘的方式来定义服务和其他的相关事务。CBDI略微的不同在于,不是所有的范围都是组分,也不是所有的服务都会执行一个任务。另外,CBDI建议,分别管理服务的类型、定义和履行是非常有用的。然而,SOA的定义显示,CBDI确实在一定程度上与W3C一致。

 

面向服务的架构

¨          一系列可以被调用的组分,这些组分之间的接口是被公开的描述的。

CBDI拒绝了这一概念,因为,首先,组分(或者说实施部分)通常不是一个集会。第二,W3C对于架构的定义只考虑了对组分的实施和引入,而没有涉及到建造架构的科学、艺术或实践。CBDI建议SOA应这样被定义:

使得应用功能作为服务被服务消费者使用的策略、实践和实施框架,并且服务消费者可以根据各自需求来设计粒度级别,公开服务集。服务可以被调用,公开,和发现,并使用一个单一的、基于标准的接口形式来从实施中分离这些服务。(CBDI

CBDISOA定义成使用了特殊策略、实践和框架后的一种风格,它能交付与某些标准一致的服务。这样的例子包括某一级别的粒度、从实施部分独立出来并与标准一致。这些定义都突出了任何一种性坏死的服务都可以被作为与Web服务的一个接口。然而,较高的命令质量如可重用性和独立性,都将通过在设计和建立流程中引入一些科学的方法,从而通过使用web服务产生出超过那些基本的相互协作能力的更大目标。

 

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
绩效管理的筐子[原创]你不是一座孤岛

我们应该从科维和德鲁克那里吸收思想,用他们的智慧启迪我们的思维,开阔我们的思路,在职场关系上更进一步……

企业信息化杂谈[原创]国内企业信息化很难回避..

国内企业信息化所面临的环境与西方企业、外资企业、或者合资企业有很大的不同,这就决定了国内企业信息化有……

吕建伟 专栏文档知多少---走出软件作坊:三..

我们也在力求能少写就少写,根据团队的、客户的磨合理解共识程度,哪个文档或哪个环节不需要写,我们就砍掉……

KM八爪鱼-萧秋水的专栏[原创]探索知识社区(CoP)

从知识社区的概念、价值、建设等角度来进行探索,希望揭示知识社区的意义,提醒企业和个人重视对知识社区的……