AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

Web 服务契约的版本控制

  • 2009-12-08
  • 本文字数:1143 字

    阅读完需:约 4 分钟

今天,我们介绍这本由 Thomas Erl、Anish Karmarkar、Priscilla Walmsley、Hugo Haas、L. Umit Yalcinalp、Canyang Kevin Liu、David Orchard、Andre Tost 和 James Pasley 编著的“《针对 SOA 的 Web 服务契约设计和版本控制》”。更确切的说,是这本书的第 20、21 和 22 章,它们说明了跟服务契约版本控制相关的问题。

下载地址《针对 SOA 的 Web 服务契约设计和版本控制》——第 20、21 和 22 章——服务契约的版本控制(PDF)

在基于 SOA 的解决方案中,Web 服务需要详细的技术契约,它们清楚地指出了每个服务的功能和使用方式。由于服务会随着时间而变化,契约的设计者需要确保服务消费者使用合适的契约变种,该问题可以通过版本控制来解决。

第 20 章:版本控制的基础

在本章中,作者叙述了版本控制中使用的基本概念和术语,要解决的兼容性问题,如何使用版本标识符,以及几个可供选择的版本控制策略。

由于 Web 服务契约可以由多个文档(WSDL 定义、XML 模式定义、WS-Policy 定义)构成,版本控制应该适用于在契约改变时改变的所有文件。通常情况下,WSDL 的版本控制会被考虑,但是变更也可能出现在 XML 模式定义中,因而它们同样需要版本控制。

有四种需要考虑的基本变更类型:向后兼容、向前兼容、兼容和不兼容。这部分通过实例对每种变更类型进行了解释。

接下来的章节介绍了最常用的版本控制标识符和版本控制策略。这三个策略是:

  • 严格:任何兼容或不兼容的变更都会产生一个新的服务契约版本。这种方式不支持向后兼容和向前兼容。
  • 灵活:任何不兼容的变更会产生一个新的服务契约版本,契约被设计成支持向后兼容,但不支持向前兼容。
  • 宽松:任何不兼容的变更会产生一个新的服务契约版本,契约被设计成同时支持向后兼容和向前兼容。

第 21 章:对 WSDL 定义进行版本控制

在这一章中,作者使用“变更的意义”和documentation元素来解决 WSDL 定义文件的版本控制。除了对整个文档进行版本控制,这本书中还包含了对操作定义、端口类型定义和具体描述(concrete descriptions)进行版本控制的实例。

第 22 章:对消息模式进行版本控制

服务契约包含的 XML 模式定义描述了在服务使用时交换的基本输入、输出和错误消息。因此,作者认为,XML 模式定义最有可能经常变更,需要版本控制。

本章解释了,什么是 XML 模式组件,它们的内容集,增加 / 删除 / 重命名 / 修改组件的影响,以及它们跟版本控制的关系。作者还解释了变更 XML 模式的目标命名空间会如何影响 WSDL 的目标命名空间,以及在这种情况下,如何应用严格、灵活、宽松的版本控制策略。


关于此书的详细信息,请浏览: informit.com/soa soabooks.com

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-12-08 03:062573
用户头像

发布了 255 篇内容, 共 57.2 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

陌陌应用性能持续剖析产品化实践

童子龙

APM javaagent 应用性能监控产品

神经网络大模型的智慧之源

百度开发者中心

人工智能 nlp 大模型

从React Hooks看React的本质

canonical

前端 低代码 React

5.5V 至 36V 输入 3A 500kHz 降压转换器

梦笔生花

免费的!十大数据可视化工具软件盘点

2D3D前端可视化开发

数据可视化 可视化软件 可视化工具 信息可视化 可视化设计

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

EquatorCoco

.net 后端 性能测试 asp

客户案例 | 博睿数据全面保障昆仑银行业务稳定性

博睿数据

C 语言入门:如何编写 Hello World

小万哥

c 编程 程序员 后端 软件开发

需求测试的实践与思考

老张

工程实践 质量保障 需求评审

web组态(BY组态)接入流程

Geek_195e67

物联网 工业互联网 web组态 组态 by组态

软件测试/人工智能|Python数据可视化神器pyecharts教程(二)

霍格沃兹测试开发学社

如何写好一份架构设计评审文档

童子龙

基础架构

世界第一!蚂蚁图计算TuGraph打破LDBC SNB-BI世界纪录

TuGraphAnalytics

请不要再把String或Style直接传递给自定义的组件了!

编程的平行世界

flutter android

软件测试/人工智能|Python数据可视化神器pyecharts教程(一)

霍格沃兹测试开发学社

数据驱动构建企业动态全面预算管理架构

智达方通

数据驱动 全面预算管理

如何用ChatGPT来提高独立站博客的生产力

九凌网络

DAPP代币质押铸币挖矿系统开发(详情开发)

l8l259l3365

英特尔锐炫A750:性能持续提升,主流玩家高性价比之选

E科讯

基于多维数据库的全面预算软件,实现企业管理数字孪生

智达方通

企业管理 多维数据库 全面预算 全面预算软件

Kafka Broker开小差了~

腾讯云混沌演练平台

kafka 混沌工程

软件测试/人工智能丨如何自学人工智能软件测试

测试人

人工智能 软件测试

低代码开发平台通常提供哪些功能?发挥什么作用?

树上有只程序猿

软件开发 低代码 JNPF

11 月 NFT 动态:交易量增长,Blur 地位加强

Footprint Analytics

区块链游戏 NFT

企业业务场景如何实现自动化连接?

RestCloud

APPlink

2023年,梦想实现的一年!

SAP虾客

年终总结 2023年

软件测试/人工智能丨人工智能会替代软件测试工程师吗

测试人

人工智能 软件测试

软件测试/人工智能|Python数据可视化神器pyecharts教程(三)

霍格沃兹测试开发学社

软件测试/人工智能|Java Edit Plus 安装与配置指南

霍格沃兹测试开发学社

火山引擎边缘计算用硬核助力赛事直播

火山引擎边缘云

边缘计算 直播 边缘云 边缘云原生

Web服务契约的版本控制_SOA_Thomas Erl_InfoQ精选文章