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

相关文章
|
7月前
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
|
4月前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
7月前
|
关系型数据库 MySQL Linux
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App
|
7月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
7月前
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
|
5天前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
43 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
13天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
5月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
313 3
|
4月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
127 63
|
4月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
184 62

热门文章

最新文章