- 作者:xiaoxiao
- 发表时间:2020-12-23 11:01
- 来源:未知
面向服务的分析与设计原理
撰文/ Olaf Zimmermann, Pal Krogdahl, Clive Gee
最初的面向服务体系结构(Service-Oriented Architecture,SOA)的实现项目的经验表明,诸如面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构(Enterprise Architecture,EA)框架和业务流程建模(Business Process Modeling,BPM)这样的现有开发流程和表示法仅仅涵盖了支持目前出现在SOA中的体系结构模式所需的部分要求。在Info World最近的访谈中,Grady Booch宣称“像对问题的良好抽象和良好的分离这样的工程基础决不会过时”,不过,他也指出:还是有现实的机会提升抽象的级别。过去的经验表明,必须将抽象的级别提升到公司处理的业务领域,从而将整个企业IT前景都纳入考虑的范畴。正如Mark Colan在文章《面向服务体系结构扩展Web服务的前景》中介绍的,SOA是一种新兴的企业结构形式,可以用于设计下一代企业应用程序。SOA方法在有力地加强已经制定的良好通用软件体系结构原则(如信息隐藏、模块化和问题分离)的同时,还增添了一些其他的主题,例如服务编排、服务库和服务总线中间件模式。需要结构化方法或分析与设计方法来设计高质量的SOA。因为现有的方法中没有一种能够满足程序设计人员对最新的SOA项目的要求,所以他们建议将已经形成的良好实践(如OOAD、EA和BPM)中的原理组合起来,并且使用根据需要创新的原理来对其加以补充。
引言面向服务体系结构(SOA)和Web服务的基本观念将成为我们日常语言的一部分,并可看作是适于设计现代企业应用程序的体系结构形式。在这种背景下,什么构成好的服务这个基本问题就成为确保成功实现SOA的关键。像面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构(Enterprise Architecture,EA)框架和业务流程建模(Business Process Modeling,BPM)这样的现有建模规则为我们提供了高质量的实践,可以长期帮助标识和定义体系结构内的适当抽象。然而经验表明,这些实践各自单独应用时达不到要求。在本文中,我们将研究OOAD、EA和BPM中的适当原理。我们还将推动对混合方法的需求,这种方法把所有这些规则中的原理与许多独特的新原理组合起来。这样得到的交叉学科OOAD方法使成功地进行SOA开发更容易,我们称之为面向服务的分析与设计(Service-Oriented Analysis and Design,SOAD),它还有待正式定义。我们还只是刚刚跨入SOAD的殿堂。
面向服务的概念在发现新的商机或威胁的预期下,SOA体系结构形式旨在提供企业业务解决方案,这些业务解决方案可以按需扩展或改变。SOA解决方案由可重用的服务组成,带有定义良好且符合标准的已发布接口。SOA提供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们的平台或语言。从概念上讲,SOA中有三个主要的抽象级别:l 操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA操作可以直接与面向对象(OO)的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。l 服务:代表操作的逻辑分组。例如,如果我们将CustomerProfiling视为服务,则按照电话号码查找客户、按照名称和邮政编码列出顾客和保存新客户的数据就代表相关的操作。l 业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。业务流程的例子有:接纳新员工、出售产品或服务和完成订单。在SOA术语中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排服务来响应业务事件。从建模的观点来看,由此带来的挑战是如何描述设计良好的操作、服务和流程抽象的特征以及如何系统地构造它们。这些相关问题都是当前行业内和学术界最常讨论的问题。据我们所知,最近几乎所有的SOA项目或专题研讨会都将这样的服务建模方面作为重要的主题,并引起了许多的争论。因此,让我们更近地作一番审视。