面向服务架构与SAVVY-WS方法的深度剖析
立即解锁
发布时间: 2025-10-27 00:21:07 阅读量: 8 订阅数: 20 AIGC 

软件工程的本质与实践
# 面向服务架构与SAVVY - WS方法的深度剖析
## 1. 面向服务架构(SOA)的现状与挑战
### 1.1 SOA集成优势
当前,面向服务架构(SOA)的实现方法在通信、数据和业务逻辑层面显著简化了集成工作。通过提出框架、抽象概念以及标准化工作,增加了通信协议和数据交换格式的一致性和统一性机会。例如,在通信层面,标准化的协议使得不同服务之间的交互更加顺畅;在数据层面,统一的数据格式便于数据的交换和共享;在业务逻辑层面,框架的提出让业务流程的整合更加高效。
### 1.2 终端用户(展示)层面集成的不足
然而,终端用户(展示)层面的集成尚未得到应有的关注。在RESTful服务和mashups等各种SOA方法,以及WS - *规范系列中,终端用户将成为下一波研究和开发工作的重点。以RESTful服务为例,其展示层面的集成尚未提供全面成熟的集成方法,而WS - *方法在这方面也缺乏相应的努力。
### 1.3 未来方向探索
- **采用“服务”概念进行展示层面集成**:一种可能的未来方向是将“服务”概念作为展示层面集成的抽象,使展示组件(和图形用户界面,GUIs)具有可轻松集成和组合的发布接口。例如,Google Map APIs就是这方面的一个尝试,但目前这种实践涉及大量底层脚本编写和编码,对终端用户来说不太方便,还需要进一步提供终端用户层面的支持。
- **终端用户驱动的集成趋势**:新的概念如Gartner提出的“个人流程(process of me)”和“互联网服务总线(Internet service bus)”的引入,体现了终端用户驱动的集成趋势。“个人流程”强调重新定义企业流程,将重点放在人身上,让个人能够理解和控制自己参与的流程,包括将即时通讯、电子表格、线程讨论等终端用户工具与业务流程应用以及基于Web 2.0的其他互联网技术集成。实现“个人流程”概念需要框架和工具支持,让用户能够使用自己喜欢的面向终端用户的工具来定义企业流程执行的视图。“互联网服务总线”则将终端用户的参与提升到了一个新的水平,它提倡在Web上创建终端用户Web应用,并将Web作为终端用户应用和其他软件及服务的执行平台,就像SCA(以及一般的企业服务总线)为专业集成开发者提供服务和应用组合功能一样,为终端用户提供类似的支持,同时需要在终端用户查找现有服务并进行集成的过程中提供支持。
### 1.4 集成中的其他需求
虽然SOA和“服务”抽象显著简化了各个层面的集成,但仍然需要桥梁、中介、适配器和不匹配解决方案框架(如数据中介、业务协议适配器和策略解决方案框架)。在较高的抽象层面(如业务级接口、业务协议和策略),WS - *系列提供了定义服务接口、业务协议和策略的语言。尽管在识别和分类服务规范之间的不匹配以及解决这些问题方面已经有了相当多的研发工作,但这些方法仍然需要开发者进行许多手动步骤。特别是在构建mashup应用程序和电子表格环境(这是数据集成和操作最常用的工具)时,终端用户端需要自动化的(简单)数据中介方法。
## 2. SAVVY - WS方法介绍
### 2.1 背景与目标
软件系统正从静态、封闭和集中式架构向动态演变的分布式和分散式架构发展。在这些架构中,服务作为提供特定功能的软件组件,可被许多客户端动态发现和访问。服务由独立方开发、部署和运行,服务聚合器还可以通过组合第三方服务提供新的增值服务。这种新兴场景具有开放性、动态性和分散性的特点。
面向服务架构(SOA)被提出以支持这种新环境下的应用开发,相关研究也在积极进行。为了开发现代动态服务型应用,需要一种全面的方法,SAVVY - WS(Web服务的服务分析、验证和验证方法,Service Analysis, Verification, and Validation methodologY for Web Services)就是为此做出的首次尝试,它专注于服务组合的终身验证,包括设计时和运行时验证。SAVVY - WS针对Web服务技术,因为尽管SOA原则上与技术无关,但Web服务是实现SOA最常用的技术,众多正在进行的标准化工作也证明了这一点。
### 2.2 相关语言基础
#### 2.2.1 BPEL语言
BPEL(Web服务业务流程执行语言,Business Process Execution Language for Web Services)是一种基于XML的高级语言,用于定义和执行业务流程。它支持通过编排外部Web服务来定义工作流,工作流定义包含一组全局变量,其逻辑通过活动的组合来表达。变量和活动可以使用作用域(scope)构造在流程内的不同可见性级别进行定义。
- **活动类型**:包括与其他服务通信的原语(如receive、invoke、reply)、变量赋值(assign)、故障信号(throw)、暂停(wait)和停止流程执行(terminate)等。此外,还有常规的控制结构,如sequence、while和switch用于排序活动、定义循环和分支。pick构造使流程等待多个可能的传入消息之一或超时发生,然后执行与该事件关联的活动。
- **并发执行与同步**:语言通过flow构造支持活动的并发执行,活动之间的同步可以使用link构造表达,link可以有一个称为transitionCondition的守卫。由于
0
0
复制全文


