《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也就是我们日常生活中使用的合同或者契约。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
下一代响应式Web设计:组件驱动式Web设计 自从著名设计师 Ethan Marcotte(@beep)在 A List Apart上发表了一篇名为《 Responsive Web Design》的文章之后,响应式网页设计(RWD,即 Responsive Web Design)的身影就出现在了公众面前。自此就有了响应式 Web 设计这个概念。从提出这个概念到今天已经有十多年的时间了。在这十多年来,CSS 也发生了巨大的变化,新增了很多新的特
推荐这几个流程图设计器web开发方案 前沿:一个流程图设计器需要什么?一个是图的绘制能力、基于svg或者canvas来绘制各种形状的节点(矩形、圆形、多边形)以及线,一个是图与图之间的交互包括拖拽,节点之间的连线等,最后是画布面板的便捷性,其中包括:比如ps中的网格功能、对其线、步骤回撤、画布的可伸缩、快捷按钮等等,那前端社区有啥开源解决方案,方便我们快速开发一个属于自己的流程图设计器?
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 云集,让 web app 像 native app 那样运行(雄起吧,Web 开发者)
- ASP.NET的Web网页如何进行分页操作(Demo举例)
- Web用户的身份验证及WebApi权限验证流程的设计和实现
- [Web component] Using Custom Events as a web component API
- Nikto是一款Web安全扫描工具,可以扫描指定主机的web类型,主机名,特定目录,cookie,特定CGI漏洞,XSS漏洞,SQL注入漏洞等,非常强大滴说。。。
- 移动WEB应用开发框架moible-web-app开源
- web服务器http.server 【python】
- 分享下之前做的STM32嵌入式Web完整设计教程和案例html,Ajax,Javacript,XML,cgi等
- 我所理解的RESTful Web API [设计篇]
- ABAP SOAMANAGER暴露的函数function module,以web service方式执行的运行时细节
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- Atitit.跨语言标准化 web cgi api v2 saa CGI (通用网关接口) 编辑 CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CG
- Atitit 部署了个webdav服务 as root 目录 1.1. WEB-INF copy to root dir only a web.xml use...1 1.2. Java.ba
- iOS原生(swift5)和web(js javascript)相互调用 WKWebView
- 搭建Dynamic Web Project(动态web项目)的springmvc工程1
- 用Flask开发Web版日历应用
- 8个很实用的在线工具来提高你的Web设计和开发能力
- Servlet(五岁以下儿童)web.xml一些常用的配置
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- go语言web开发系列之十一:gin框架通过casbin实现rbac权限设计(csv存储)
- WEB漏洞攻防 - 文件上传漏洞 - CTF比赛类应用场景 - [RoarCTF 2019]Simple Upload
- WEB渗透扫描与加固
- Web自动化——介绍与安装以及第一个web自动化程序(一)