如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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:063030
用户头像

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

关注

评论

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

产品 0 期 - 第九周作业

vipyinzhiwei

图论--网络流最大流问题

风骨散人

产品经理训练营 - 第八章作业

joelhy

产品经理训练营

推荐几本 Go 相关书籍

roseduan

书籍推荐 Go Concurrency Patterns Go web 书籍 Go 语言

『C++』我想学C++,C++太难了,那我想入门,给我10分钟我带你入门

风骨散人

墨迹天气成长中心页用户路径分析(模拟)

🙈🙈🙈

极客大学产品经理训练营

能进BAT、TMD的C++学习过程大分享

阿霜

c++ 字节跳动 计算机 BATJMD

如何判断自己是否适合当前公司?

石云升

离职 28天写作 职场经验 3月日更

第八章作业

流浪猫

如何提高Flutter应用程序的性能

老孟Flutter

flutter

文档是给未来自己的珍贵礼物

steve_lee

文档

C++后台开发必看,这个学习路线必须收藏

赖猫

c++ Linux 后台开发 服务器开发

『计算机组成原理』 计算机系统概述(考研、面试必备)

风骨散人

操作系统--死锁避免(银行家算法)

风骨散人

银行家算法

一份百投百中的计算机校招简历是如何迭代足足26版的?

阿霜

c++ 字节跳动 计算机 简历 校招

【Axure9百例NO.46】中继器多条件判断的优雅处理

zhuchuanming

原型设计 Axure 交互原型

第八章作业 - 用户路径

Au revoir

产品经理面试常见问题总结 3

lenka

3月日更

Python救救我!如何连接串口实现一个报警灯报警器

ucsheep

Python websocket 串口 报警器 报警灯

作业 - 第九周

eva

双非渣硕的我是如何拿到字节跳动研发岗SP

阿霜

c++ 字节跳动 互联网 计算机 校园招聘

华为与开发者的“情谊”,在HDC.Cloud 2021上书写智能时代新篇

脑极体

再推荐一款小众且好用的 Python 爬虫库 - MechanicalSoup

星安果

Python 自动化 爬虫 MechanicalSoup 小众

JavaEE知识体系梳理

空城机

Java Java介绍 Java EE 大学作业

软件工程是否可以指导小团队的建设

风翱

软件工程 3月日更

[老孟Flutter] Stateful 组件的生命周期

老孟Flutter

flutter

数据分析(第八章作业)

Deborah

ARTS-Week-0

绝影

ARTS 打卡计划 ARTS活动

计算机组成原理--主存储器

风骨散人

Flutter 中与平台相关的生命周期

老孟Flutter

flutter

互联网HR黑话指南

这就是编程

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