| 探索 SOA 体系结构和服务的基本原则,第 1 部分: 使用体系结构和抽象级别来创建更好的 SOA |
|
| 作者是 Administrator | |||||||||||||||||||||
| 2007-12-28 05:42:26 | |||||||||||||||||||||
|
您的软件开发团队决定采用面向服务的体系结构 (SOA),并使得您的企业能够充分利用它的优点,包括增强的响应能力、IT 和业务活动更好的一致性、通过重用现有的资产和更简单的集成实现更低的整体 IT 成本。 当采用 SOA 方法的时候,体系结构甚至变得更加关键,毕竟 SOA 中的“A”表示的就是体系结构。尽管很久以来我们都鼓吹软件体系结构是成功地构建 IT 系统和应用程序的最重要的方面,但不幸的是,许多软件开发项目团队通常只是空谈有关体系结构的想法,而不是真正地去实践它。 让我们首先来分析软件体系结构之所以占有重要的地位,以及 SOA 使它变得更加重要的原因。
在本文以及本系列文章后续的部分中,将深入地研究这些概念。
软件体系结构是软件架构师的职责,他们使用体系结构与干系人进行沟通,提供可说明性,并为不同的团队分配工作。 一个特定的体系结构可以提供不同的视图,每个视图都有其重点,并且每个视图用于处理相关的、特定的干系人可以理解的关注事项。服务协作视图是使用 SOA 的一个示例,该视图描述了一个环境中的服务与其他服务之间的行为。这个视图用于与设计人员(他们负责指定应该如何理解这个交互)和实现人员(他们负责指定应该如何实现这个交互)进行沟通。体系结构还用于与干系人进行沟通,无论这些干系人处于开发流程中的什么位置。例如,软件架构师使用体系结构概述向用户、管理人员、项目赞助商或者项目管理人员展示解决方案。 软件体系结构还可以作为决策制定的记录。例如,通过在结构和行为上制定体系结构上的决策,软件架构师可以处理系统的功能性和非功能性需求,通常使用特定的体系结构模式。体系结构描述包括所作出的选择背后的基本原理、设计的备选方法,以及在体系结构中如何处理各个需求的记录。软件架构师负责(有责任)处理所有的需求。同样,设计人员和实现人员都应该遵守体系结构,并处理分配给他们的体系结构中的某些部分。 最后,当软件架构师与项目管理人员紧密地协同工作时,将根据体系结构的结构为不同的团队分配相应的工作。例如,该结构可能是基于包或者组件的。然后可以通过购买软件包、外包给提供者,或者内部开发(由各个独立的团队完成)的方式来处理体系结构中特定部分的理解(设计)和实现(编码)工作。 在“哪些人使用体系结构?”部分中,您了解了体系结构之所以很重要,是因为它有助于对将来(或者当前)系统进行抽象。在这个部分中,我们定义了“抽象级别”,并介绍了对 SOA 来说最关键的抽象级别。 抽象提供了简化的软件视图(在隐藏无关细节的同时,可以在视图中进行完整描述和理解),允许您仅仅显示与给定的上下文相关的信息。抽象允许在具有不同目的和技能的人之间进行交流,使用他们能够理解的术语,并降低底层的复杂性。 您或许曾多次听说过这样的短语“更高/更低的抽象级别”或者“抽象层”。抽象级别的目的是为了降低复杂性。抽象级别越高,细节信息越少;级别越低,细节信息越多。 与抽象级别类似的是黑箱视图(不显示实现细节的较高级别)和白箱视图(显示事物工作方式的内部视图)。例如,概念分析模型的抽象级别比详细设计模型的抽象级别更高,因为它忽略了设计组件和元素(它们显示如何实现体系结构)方面的细节。当您降低抽象级别的时候,表现相同的事物则需要使用更多的元素。 很重要的一点是,特定的抽象级别与特定的人员组相关(例如,设计级别是面向设计人员的,而实现级别则是面向开发人员的)。 请注意,SOA 抽象级别并不仅仅包含下面四种抽象级别。通过列出 SOA 上下文中的重要抽象级别,这个部分描述了抽象的含义,以及它如何与 SOA 相关联。另外请注意,它着眼于 SOA 开发项目(例如,从业务流程建模到编码实现),而不是生产应用程序的部署或者管理。 在 SOA 环境中,并没有给出抽象级别的正式列表。然而,在设计面向服务的解决方案的时候,需要考虑到下面列出的抽象级别(按从高到低进行排序): 图 1. 重要的 SOA 抽象级别
RUP 对软件架构师的解释如下:“软件架构师从整体上负责实现主要的技术决策,这些决策使用软件体系结构进行表示。这通常包括标识和说明系统在体系结构上的重要方面,包括系统需求、设计、实现和部署视图。”需求和体系结构是非常重要的两个方面,它们跨越了多个抽象级别,而不是局限于某一个特定的抽象级别。例如,可以在较高的抽象级别上用业务术语来描述一项需求,但是另一项需求则可能需要进行非常详细的技术描述。 需求,无论是功能性的(所需的性能)还是非功能性的(质量和约束),都对体系结构有着直接的影响。架构师需要对它们进行全面地指定和理解,并且应该在收集和分析它们时,对其进行验证。例如,需要通过确认来确保某个业务目标(在业务体系结构中)的所有需求都是可跟踪的,确保不存在冲突的需求,确保所有的需求都是“可实现的”。有时候,人们所讨论的是体系结构上重要的需求;架构师还应该记住,SOA 解决方案(与可重用资产)及其需求将会随着时间的推移而发生变化。这意味着,他或者她需要特别注意可维护性和可伸缩性。请注意,对于 SOA 项目来说,典型的情况是,最初由建模业务流程发现功能性需求(位于业务抽象级别);然后,RUP 推荐通过各种用例来形式化这些需求(位于分析抽象级别)。 大多数与需求或者体系结构相关的工作都发生在项目的特定阶段,下面的部分将对此进行描述。 现在,我们已经标识了重要的抽象级别,让我们更深入地研究它们之间的关系。 如果您查看这些抽象级别,那么您将会发现,在这些级别中都指定了相同的“决策”种类:也就是,关于如何从局部的角度来组织软件、这些局部看起来是什么样子、它们如何组合起来,以及它们如何运转的细节。这些决策递归嵌套,并在较低的抽象级别中不断地添加细节。另外,如前所述,在较高的抽象级别中所指定的决策将约束那些在较低的抽象级别中所指定的决策。 “体系结构上的重要决策”指出某个在详细体系结构级别上很重要的决策。抽象的设计级别包含所有最重要的决策(关于软件结构、打包、接口,以及在实现级别中约束所有较低级别决策的连接)。最重要的是,我们指的是使用某种结构(在很长一段时间内保持有效的)提供整体体系结构的那些决策。例如,我们可以选定一些体系结构部分(组件),以及一些最不容易随时间的推移而更改的接口。不必要的体系结构的更改可能是,仅仅因为持久性机制发生了更改而更改某个接口。应该将这类更改的影响限制于实现中的更改(从而将其限制于抽象的实现级别)。 正如您所看到的,体系结构概括了关于软件(和硬件)的最重要的决策,并且将它们限制于能够经受住时间考验的决策。决定哪些内容是或者不是体系结构中的一部分,看上去有明确的界线,但是这种分离是很重要的,它允许我们管理软件模型的复杂性。它还可以生成这些区别(这是经验丰富的软件架构师的最重要的技能之一)。 通过抽象重要概念和分离关注的事项,软件体系结构可以降低复杂性。对于面向服务的领域,SOA 解决方案堆栈提供了 9 个层次(分离关注的事项),以及它们的逻辑体系结构构建块(抽象),这些构建块可以用于在较高的抽象级别上表现面向服务的体系结构。 图 2. SOA 解决方案堆栈
要获得关于 SOA 解决方案堆栈的更详细的信息,请阅读文章“Design an SOA solution using a reference architecture”*(请参见参考资料部分)。本文的目的在于,说明可以将 SOA 解决方案的关注事项分离为五个功能层和四个非功能层。这五个功能层分别是:
请注意,提供者更加关注底层功能层,然而,服务使用者则更多地关注于顶层功能层。 四个非功能层分别是:
UML 2 Profile for Software Services Rational Unified Process for Service-Oriented Modeling and Architecture (RUP SOMA) 提供了 RUP 过程和方法中所包含的 SOA 指导。(有关更多信息,请参见参考资料部分。)在 RUP SOMA 中,面向服务的体系结构表现在服务模型工作产品中。与服务模型紧密相关的是 Unified Modeling Language (UML) 2.0 Profile for Software Services,它定义了一种公共语言,用以在较高的抽象级别上描述面向服务的体系结构。可以将这个概要看作定义 SOA 解决方案堆栈的构建块。所有的服务模型工作产品构件(包含匹配的服务概要原型),对于体系结构来说都是非常重要的,包括:
要获得关于服务模型元素,以及与创建它们相关的技术详细信息,请参见参考资料。 体系结构是软件架构师的职责,正如我们所描述的,它跨越了多个抽象级别。那么,体系结构活动在什么时候发生呢? 图 3 显示了 RUP、它的规程、阶段和迭代。 图 3. Rational Unified Process
在这张图中并没有显示体系结构,那么它在什么时候发生呢?软件架构师在什么时候执行他的大多数任务呢?四个 RUP 阶段分别是:
构建良好的软件体系结构活动将完成下面的工作:
正如您所看到的,在项目的细化阶段中执行大多数体系结构工作。 在本文中,您了解了如何使用抽象为复杂的设计实现更加清楚、更加容易的表达,从而加速整体开发过程。您研究了在设计 SOA 解决方案和构件(可以用于建模服务体系结构)时的一些相关抽象级别。最后,您分析了体系结构和架构师的角色在软件开发流程中所处的位置。
作者希望感谢他们的架构师同事,特别感谢 Franco Potepan 和 John Catlin,他们对本文进行了审阅。 学习
获得产品和技术
讨论
|
|||||||||||||||||||||
| 最近更新 ( 2007-12-28 05:42:26 ) | |||||||||||||||||||||

