《SOA Web Service合约设计与版本化》—第1章1.1节关于本书

简介:

本节书摘来自异步社区《SOA Web Service合约设计与版本化》一书中的第1章1.1节关于本书,作者【美】Thomas Erl , 等,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 概述
1.1 关于本书
SOA Web Service合约设计与版本化
对于我们大多数人来说,都非常熟悉合约(contract)1这个概念。它是在双方之间的一个约定,包括一系列条款来监管某些东西的交换。如果没有合约,这个世界(特别是商业世界)就没法以今天这样的方式来运转。双方遵守的每个合约保证了每次交换都会按计划、以可以预期的方式来实施。

当我们在技术环境中建立合约时,我们非常感兴趣的正是这种类型的可预测性。当我们设计两个软件程序来交换信息时,我们想要保证他们双方每次都会遵守由技术合约所建立的条款。事实上,这样会使得可预测性不仅仅是一种优先选择,而且还成为了软件设计的一种需求。

但是,我们想要以某种形式固定下来的不只是交换的条款;我们还需要建立用来执行这些交换的接口。同合约一样,接口也是日常生活中的一部分。

遥控器、汽车仪表盘、计算器、计算机键盘——这些东西中的每一个都代表与另外一种东西之间的一种接口。它们是设计来给人使用的接口,用来向一台机器或者一个设备发送命令。在这种情况下,他们就建立了一种预先定义的、标准化的手段来发送这些命令。

它们还代表和表示了我们必须遵循的合约,以便我们可以从所交互的对象得到我们想要的东西。例如,如果你没有选择遥控器上的正确按钮,那么你就没法获得你想要看的节目。类似地,如果你不向正确的方向转动汽车方向盘的话,那么汽车也就不可能到你想要去的地方。

接口以及它们所表示的合约,对于我们在这个社会中要做的几乎任何事情来说都是至关重要的。而在面向服务计算的世界中,它们对于软件程序设计来说也正是同样的重要。尽管很多老的系统可能是被设计成了自包含的、单块式的程序,因而它们并不需要暴露任何接口,然而面向服务解决方案却都很自然地被划分为一系列的软件程序(被称为“服务”)的集合,从而这些程序之间必须进行交互。

然而,我们需要的并不只是这些。当应用面向服务来把软件程序设计为服务的时候,大多数服务合约都需要能够支持同不止是一个程序之间的交互,而是要同许多潜在的程序进行交互。为了在实际中能够在一个技术接口中实现这种级别的灵活性,就意味着它的设计会要求额外的关注。

类似这样的需求并不是全新的。前面所提到遥控器和汽车仪表盘几乎无一例外地都是制造来适应形形色色的使用者的。这些接口的设计越好,就会有更多的人能够有效地使用它们,从而就会建立更加一致和可预测的使用体验。

在为SOA构建Web服务的时候,这恰恰是我们需要达到的目标。服务必须拥有稳定的、有效的技术合约,这样才能允许各种各样的程序可以使用(以及重复使用)这些服务所提供的功能。

但是这还不够。交付一个设计良好的服务合约只是在一个服务生命周期内的第一个重要步骤,而一个服务的生命周期可能会跨越很多年。在这样长的时间中,变化是不可避免的。尽管常用的SOA方法会有助于建立更长生命期限的服务合约,但是在多数情况下,它们的寿命仍然是极其有限的。

因此,我们还需要准备好如何来应付这种不测事件,通过建立可靠的治理实践方法,帮助服务为了应对变化的到来而进行演化。这样做就可以延长服务自身的生命期限,不受其合约生命期限的限制。

本书专门关注Web服务合约的设计和演化。下面的各章都是由各个领域中最顶级的专家所撰写的,这些领域包括了SOA、Web服务技术、服务合约设计,以及服务版本化和治理。

1译者注:contract也就是我们日常生活中使用的合同或者契约。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
51 2
|
1月前
|
存储 缓存 算法
关于 Service Worker 和 Web 应用对应关系的讨论
关于 Service Worker 和 Web 应用对应关系的讨论
12 0
|
2月前
|
Java API Apache
Apache CXF生成WebService的客户端
Apache CXF生成WebService的客户端
|
2月前
|
XML 网络架构 数据格式
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 2
Ruby Web Service 应用 - SOAP4R
23 5
|
2月前
|
XML Linux 网络架构
Ruby 教程 之 Ruby Web Service 应用 - SOAP4R 1
Ruby Web Service 应用 - SOAP4R
22 3
|
4月前
|
jenkins Java 应用服务中间件
Jenkins【部署 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
Jenkins【部署 01】两种方式+两种环境部署最新版本 Jenkins v2.303.2 WAR包(直接使用 java -jar+使用Tomcat的Web端部署)
67 0
|
4月前
|
应用服务中间件 数据安全/隐私保护
Tomcat【部署 02】Web端403 Access Denied You are not authorized to view this page解决方法(Tomcat 10.2.12 版本)
Tomcat【部署 02】Web端403 Access Denied You are not authorized to view this page解决方法(Tomcat 10.2.12 版本)
112 0
|
4月前
|
Java 数据库连接 Apache
SpringBoot整合CXF实现WebService
SpringBoot整合CXF实现WebService
115 0
|
12天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
23天前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
25 7