技术开发 频道

SOA的反思:SOA架构的本质

【IT168分析评论】

  IT界出现的最新术语SOA,是服务型架构(service oriented architecture)的缩写。它是如今IT经理、系统集成商和IT供应商的最常挂在嘴边的词,然而只有很少的经理、集成商或供应商知道它到底是什么。SOA其实不是一种产品,技术或者体系结构,它只是一种应用软件一体化的概念。这一点制造业的专业人士应该知道,因为他们常常被要求将他们的系统与其它系统界面通过ESB(企业服务总线)主干网,以SOA 模式连接起来。ESB是软件、路由信息、缓冲请求和回应的连接通道,而SOA则限定了通过这条通道的内容。

  最早的SOA概念是希望任何应用软件的界面都应该具备一定的商业用途,比如可以处理一个购货订单或者进行库存的实物清算。只要开始服务就可以自动完成整套相关的商业流程。举一个例子,有一项可以提供“为到达的货物分配一个库存容器号码”的服务。这项服务用物质化的ID标签,为库存的容器分配一个号码。因此,它的SOA界面可能就是被称为“AssignStorageContainerID(分配库存容器ID)”的服务。它通过那个分配号码的应用软件与ESB相连。当分配ID时,程序有可能同时执行其他的工作,例如记录任务;专项储存库存号码资料以备货物到达时能及时调用;以及将容器的状态标记为“使用中”。

  SOA的设立基于6个假设的前提:系统是松散耦合的;界面交换是非物质的;程序具有RPC(remote procedure call远程功能呼叫)功能;界面基于消息;消息使用XML 数据;以及界面支持同步或不同步两种数据传输形式。

  当一个系统工作时不会对另一系统产生较大程度,而同时服务的实施在幕后进行时,系统被认为是松散耦合的。而非物质的界面并没有固定的形式,每次使用的其实只是被交换的数据,而不是隐藏在背后的服务提供商的知识和经验。RPC 功能就是程序运行起来就像一个本地函数或者子程序调用那般简单,使用者完全不必理会界面信息的任何细节。一个基于信息的界面通过ESB在程序间传送消息;这些消息基于XML 数据,而非可展开的文件或某种专用的二进制语言。服务可能是同步的,即发送请求然后等待即时回应。同样的,当服务请求发出后,程序继续处理另一个过程,稍后再做出回应,这时服务是不同步的。

  这些简单的SOA 概念很难在现有的系统里实现。关键是为系统提供的服务确定适当的程度和类型。服务可以是精细型的,也就是执行诸如改变某一数据要素;也可以是粗放型的,即可处理重要复杂的商务过程的服务。可以想见,粗放型的服务是比较受欢迎的SOA 应用类型;当然,在很多情况下,精细型服务也是不可或缺的。

  制造团队应该帮助企业认清他们的系统需要实现的服务是粗放型还是精细型的,以方便其做出决定。通常会使用到SOA模式的商业流程主要集中在物质管理、物流控制,包括原材料、设备和人员的运转等。粗放型服务主要针对生产、测试、维护等主要流程,而精细型服务则主要处理与材料、设备和人员相关的具体信息。必须强调一点:SOA不是一个随处可用的解决办法;要实现SOA必须要很好地理解生产制造在企业供应链里所起的作用。

  在任何领域中,语义都非常重要,而在SOA中更是如此。由于 SOA涉及多个团队和组织,因此就相关术语达成一致至关重要。

  在任何领域中,语义都非常重要,而在SOA中更是如此。由于 SOA涉及多个团队和组织,因此就相关术语达成一致至关重要。本系列将带着您开始SOA之旅,为您定义各种基础术语和它们背后的重要概念。您将了解 SOA领域中需要理解并用于沟通的各个词汇。对于每个术语,将说明它在 SOA领域中有何重要性、在这种情况下的含义、相关的标准有哪些以及与其他术语的区别如何。

  在文中,您将探索各种术语和技术,它们有的与在高抽象级别(分析)下设计SOA有关,另一些则涉及如何推进到较低的抽象级别(设计),后一种级别的下面紧接着代码级。

  关于组织方式的说明

  以下列出的术语并不是按照字母顺序排列的,同时也未按照其重要性进行排列。相反,我们将按照构建块的方式对其进行组织。本文是以服务概念为基础的,为了定义其他术语,它们对与特定原则有关的概念进行分组,如本文中的分析 和设计。

  分析和设计

  分析和设计的内容包括若干活动,通过这些活动,可根据功能和非功能需求集来指定初始的 IT 体系结构。其他一些活动也可作为分析和设计的基础,这些活动对初始的体系结构加以细化,使抽象级别由分析级进入设计级,这一细化程度足以让开发人员生成和编写出实现代码。

  SOA分析和设计也可以指以下术语中的一个或多个:

  服务建模

  面向服务的分析和设计

  面向服务的建模和体系结构 (SOMA)

  Rational Unified Process for Service-Oriented Modeling and Architecture (RUP SOMA)

  分析会在较高的(概念级)抽象级别上对将要构建的系统进行描述。分析的输入是一组需求和现有的资产(或是应用程序或系统)。输出则是对需要构建的各个方面的描述。分析对 SOA来说是至关重要的,因为通过分析,可以在服务标识期间使 IT 与业务保持一致。分析结果将作为输入在设计中使用。

  设计会描述将要构建的系统,更重要的是,它还会对如何构建加以描述。

  大多数体系结构工作是在分析和设计的工作流中、在项目的细化阶段执行的。

  面向服务的分析和设计利用了分析和设计原则(如面向对象的开发或基于组件的开发中的原则)。例如,您也许还记得所谓的面向对象的分析和设计 (OOAD)。不过,必须注意的是,SOA的工作重点始终在于服务(而不是对象或组件)。

  注意:分析级模型常会发展为设计级模型,所以对于分析和设计而言只有一套 RUP 原则。

  面向服务的分析和设计工作的主要输出是一个服务模型(即先前所说的服务规范)和一个设计模型,服务模型记录了面向服务的系统中所有重要的体系结构部件,而设计模型则进一步阐述了服务模型应如何实现的细节。这两个模型对 SOA设计进行了全面说明,开发者可以据此明白无误地执行这一实现。

  在下列各部分中将描述相关任务,为您介绍面向服务的分析和设计的相关术语。

  注意:术语标识 和规范 适用于基于组件的开发中,而术语规范 和实现 则是由通用建模语言 (Unified Modeling Language, UML) 定义的。这三个术语构成了 RUP SOMA 的核心活动(术语的含义未变)。

  服务标识

  服务标识是核心的面向服务的分析活动。服务标识的目的是将各个分组的概念化服务及其操作标识出来。

  这些经过标识的服务对于业务而言是有意义的,业务需要这些服务。事实上,业务分析师会帮助软件架构师进行这项工作。下一部分将介绍服务设计原则,您会了解到对服务逻辑分组的需求、对服务及其操作的业务命名的需求。这些都是在服务标识期间决定的,其间使用了多种技术,RUP SOMA中描述的那些技术也包括在内。

  我们来深入了解一下:

  自顶向下方法

  业务体系结构工作从一组业务目标开始,标识出一个或多个应予关注的业务流程,这在 SOA中是非常典型的。通过业务建模工作,可能会出现已经过设计的业务流程(即未来的流程),对于正在设计中的系统,它们可以被视为功能性的需求。

  自顶向下方法旨在分解业务元素(主要是业务流程和用例),然后将它们细化为适合服务的粒度。在使用自顶向下方法的过程中,您通常要在业务任务中标识出各种服务操作。这种做法的好处在于,您可以确保标识的服务与业务保持一致。

  自底向上方法

  自底向上方法旨在分析现有的 IT 资产(如遗留的应用程序和系统),找出可以作为服务公开的功能,以便重用它们。

  重用是 SOA的一个重要组成部分,对于 SOA的成功是极为关键的。您可能知道,遗留应用程序(即已经部署的应用程序)是您的公司最宝贵的资产,应该加以利用。例如,自底向上方法将分析现有的信息管理系统 (IMS) 事务或 COBOL 程序。

  对于自底向上的分析,有一句忠告:您必须谨慎从事,不要盲目地公开现有的 IT 功能。例如,用于创建、读取、更新、删除 (CRUD) 数据的各项服务的粒度可能太小,无法与业务保持一致。

 

0
相关文章