Enterprise Engineering Forum

企业工程论坛
Categorized as: 系统架构   Tagged as: ,, ,

SOA——通过不同的解释学习

Author: flyingrobot,  Source: 企业应用探索日志,  Published: 2007年10月

Excerpt: 从多重角度分析面向服务架构(SOA):作为企业IT应用战略、开发途径与设计风格、软件架构风格、软件技术架构,以及软件之外——作为经营理念或EA(企业架构)话题。援引了多种经典或权威机构对SOA的定义。

引言

越是基本的概念,往往越“解释不清”,而深入解读的过程,总是可以学习到许多道理——不管最终是否得出了唯一的解释。SOA就是这么一个东西。

几年前接触到这个概念时,曾经觉得无需深究,因为觉得 这是自己理解甚至自觉地应用着的东西,例如在做软件架构设计时,就已经采用了类似的思路,甚至还选择了SOAP、UDDI这些东西。那时觉得这是一种很基 本的东西,但无法看清或预料今天的这种发展。现在细想,SOA在概念出现几十年后在实践领域“咸鱼翻身”,是很有道理的。便宜、随处可得的网络,是它生存 的基础,迈向深入的互联网企业应用,是它的动力。SOA也不像它表面看起来那么简单。它的确很有可能成为IT应用进化的又一个里程碑。

在IT领域,有一种强烈的意识,就是希望把自己提出、提倡或正在推广的“理念”尽量包装、提升为“先进的企业管理理 念”。强烈的商业主使的背景,导致了对许多事实和道理的污染,但另一方面,由于信息技术独一无二的广泛性、改造力,它也确实强烈地影响甚至某种意义上引导 着这几十年管理理念与方法的发展。清楚地认识到上述两个方面会大有裨益。SOA同样如此。作为一个相对完整的讨论,下面也从这个层面开始对SOA的讨论。

软件之外——作为经营理念或EA的话题

“服务”本来是企业经营管理范畴的一个基本的概念,在应用到软件架构这样的领域时,需要更严格的解释。即使对软件架构师,从源头的、非技术层面上去充分理解它,再进一步探讨各种可能的,技术的解决方案,应该也是很有启发的吧。在上一篇文章《什么是服务》中,笔者做了这样的尝试。今天再来看“面向服务架构”()。在企业管理的领域,服务是一种被不断强调的理念,也许有足够的切合度将其称为“SOA经营理念”。例如IBM这样的企业,从上个世纪后期,就开始强调自己是一个服务型的企业,而不是制造企业或技术提供者。

另 外,从EA(企业架构,以信息系统架构为主)的角度去讨论SOA,也会是很有意思的。一方面,从企业设计的角度,强调面向服务的原则,与强调其它原则(例 如指挥 -控制)所产生的企业架构,会有着非常大的差异;另一方面,更现实的,就是当企业架构的一个基本部分:技术架构采用或能够体现为SOA时,对企业的组织或 业务模式本身 有什么样的影响(或关系)?这都是可以深入探讨的话题。

然而,不管服务对现代企业有多么 重要,“面向服务的企业”这种说法,可能不会被企业管理者所接纳。传统的企业经营管理领域,对这个方面有更加经典、完整的认识,企业永远是“面向客户” (customer-oriented)的,服务可以是“至上”的、“根本”的、“主要的”,但不是企业所“面向”的。

作为企业的IT应用战略

相对于把SOA提升到企业经营管理的层面,从企业信息技术应用战略的角度去探讨它,是一个更实在的话题。许多对SOA展开的论述中都涉及到这个方面。从现状 上看,作为信息技术的最终用户一方,它所能采取的战略与战术,是完全被供方制约的,在SOA的解决方案没有真正成熟和普及之前,用户一方不会有什么具体的 作为。但是,即使作为开发者,能够充分地站在用户立场上去讨论和认识,是非常难得和有益的。现在能看到许多涉及到这个层面的讨论,但是经常可以发现,讨论 者对于最终用户、最终用户方的IT支持/实施者、企业改造与规划者、应用规划与设计者等等不同的角色和立场划分不清,最终所提出的观点也常常含混不清。

作为开发途径与设计风格

Eric Newcomer等(2006)诠释SOA时,从开发途径入手,即“面向服务开发”(Service-Qriented Development)。这里的服务主要就是指网络服务(Web Services),这已经是现今IT企业应用领域最广泛和基本的技术(和环境)。从这个角度看,SOA是一种水到渠成的东西。沿着这个思路,从应用开发 与实施的“过程/途径”(而不是系统自身的结构)角度,Newcomer等认为SOA“是一种设计方式”,它指导着业务服务(business services)从构思、创建、使用到停止的整个生命周期的各个方面。进一步,他们指出:SOA也是一种定义和提供IT基础设施的方式,它允许不同应用 相互交换数据、参与业务过程,无论它们各自背后用什么样的操作系统或编程语言。这后一点,实际是对应着前面讨论的“作为企业的IT应用战略”话题。

作为开发途径或设计风格这种诠释,与后面讨论的作为软件架构风格的诠释实际上是互补的,一个强调了过程方面,一个强调了对象(应用系统)方面,要得到一种有特定结构特征的对象,其设计、开发、实施的过程自然是需要与之相适应和配合的。

作为软件架构风格

回到软件这个范围,首先看比较笼统或基本的解读:SOA是一种架构的风格而非架构本身。例如,Open Group的定义:

“SOA是一种架构风格,它支持面向服务面向服务是按照服务、基于服务的开发和服务的结果进行思考的方式。”

OMG看来也是倾向于采用架构风格的比较宽泛的理解(以下文字出自OMG网站链接的SOA定义讨论Wiki页面,2006-10,文中的黑体是引用时加的):

“SOA是一种架构风格,用以为服务的供应者与消费者群体(community)达成共同价值,它可以

  • 令群体参与者以最小的协同依赖或技术依赖共同工作;
  • 对参与到群体中的组织、人和技术规定必须依照的契约;
  • 供群体实现业务价值和业务过程;
  • 便于多种技术在群体内的交互作用;”

更早的,Hao He(2003-9)有一个我认为很值得重视的论述:

“SOA 是一种架构风格,旨在互相影响的软件代理(software agents)之间保持松散耦合。服务是由供应者执行的工作单元,服务供应者执行它来达成服务消费者期望的最终结果。供应者与消费者,都是由代表其所有者 的软件代理(software agents)担当的角色。”

这个表述还包含了一个相当有趣的概念——代理(agent)。在字面 上理解它(就像许多表述所用的“代表”on behalf of 一样)也是可以的,但用出自人工智能领域的那个agent去理解,也是意味深长的,笔者也曾对此也一些思考。

所谓的风格(style,或类型),就是说可以有许多不同的体现形式。看起来,实际的情形也正是如此在发展着,如此而言,在更具操作性、技术性的SOA定义上出现“一个缩写,各自表述”,也是自然而然的事。

作为软件技术架构

务实的技术专家们不愿意玩虚的,因此会倾向于用技术的语言,甚至具体的技术来诠释。例如Systinet资深副总裁Gregg Bjork这样解释:

“SOA就是以XML接口的形式发布服务的架构”。

无疑,以当今的软件技术,建构Soa方案,不可能舍弃XML。

但我们应当能够理解到,从原理上,一个真正的SOA,是跟任何具体软件开发、支撑技术无关的。在SearchWebService.com提供的定义,虽然也强调了技术角度的要求,但并没哟约定具体的技术:

“面 向服务架构(SOA)是一种支持服务之间通讯的底层结构。在这个上下文中,服务被定义为一种工作单元,它可代表某种运算处理实体(例如人类用户或其它程 序)执行。SOA定义两个运算实体(比如程序)之间怎样相互作用,使其中之一能够执行代表另一个的工作单元。服务相互作用用描述语言定义。每个交互作用是 自主的和松散耦合的,故每个交互作用独立于任何其它的交互作用。”

在类似的许多强调技术操作性的界定中,“松散耦合”(loose coupled )和“代表,做代理”(on behalf of)是两个典型的要点,但从对服务本来意义的思考出发,在这两个方面都是可以进一步探讨的。

结语

即 使作为一名软件架构设计者或工程师,尝试一下软件之外的理解,对把握到SOA的实质也有很大的好处,最起码你就不容易被各种常常隐藏着很深的商业企图的 SOA方言所操纵或挟持。在软件领域,将SOA作为软件架构风格的理解是比较中肯的,在此基础上进一步去分析形形色色的SOA实现方案,就比较有谱了。

参考链接

Copyright

  本发布物版权归原作者所有,经原作者许可在企业工程论坛(EE-Forum.org)公开发布,并允许个人及公益性机构非牟利性使用及传播。传播中需保持从标题、署名到各项内容及此声明包括链接地址等完整内容不变。引用或摘编文中内容或观点应符合公认准则。其它机构,或牟利性使用,请预先取得作者许可。保留一切未说明的权利。
  详细说明见: http://www.ee-forum.org/about/copyright ,管理者电子邮箱:admin(at)ee-forum(.)org

Cite Style

GB7714 style: flyingrobot. SOA——通过不同的解释学习[EB/OL]. 企业应用探索日志, http://blog.vsharing.com/flyingrobot/A590491.html, 2007年10月[2017-11-22 01:23]

Chicago style: flyingrobot, "SOA——通过不同的解释学习", 企业应用探索日志, http://blog.vsharing.com/flyingrobot/A590491.html(accessed 2017-11-22 01:23)

Posted by   2010-01-06(转载)   Hits 3985   Modified 2010-01-06(Locked)
Prev Post: 
Next Post: 

Related Entries:

以数据库为中心与面向数据库
模型驱动机制与模型驱动系统(MDM&MDS)
数据库和面向对象本来是两股道上跑的车
计算机领域的Ontologies:本体、本体论与本体模型
企业应用与信息系统架构及模型驱动系统MDS(三)

Leave a Response

You must be logged in to post a comment.