Python 还能承担下一个时代的发展重任吗?Mojo 语言的横空出世对 AI 研发生态有什么影响? 了解详情
写点什么

我们真的需要服务描述吗?

  • 2010-10-25
  • 本文字数:1243 字

    阅读完需:约 4 分钟

普遍认为,基于 SOAP 的 Web 服务的主要复杂点之一是使用 Web 服务描述语言(WSDL)进行服务接口的描述。 William Vambenepe 指出 WSDL 的另一问题是,WSDL 和随之诞生的 stub 生成工具创建的分布式应用程序之间是紧密耦合的。人们开始意识到的是服务描述的问题,而不是如何改进它。

……所以,他们完全抛弃服务描述的想法。在当今 API 的时代,从描述应用程序契约的角度看,我们没有比 15 年前好到哪里去。这是个悲剧。

Vambenepe 在博文中探讨了支持其观点的两个(关于服务描述的)重大误区。

  • 试图为服务寻找到真正的服务描述。Vambenepe 认为,找不到这样的服务描述。 > 对服务描述进行优化,使之满足特定的需求而不是自动着重于语法校验,这绝对是很好的。服务契约的所有客户并一定使用相同的服务描述。对于不同用户和 / 或用途,完全可以使用不同的服务描述。

    尽管 Vambenepe 在其博文中谈论的主要是既定服务的不同格式,但是他的观点却有着更广的意义。作为技术人员,在很长一段时间内,我们所关注的只是面向开发人员的服务描述(API 定义),往往忽视了业务分析员的需要,而对于某个服务是否适用于特定的企业解决方案,做此决定的人却是业务分析员。通常, 除了“传统的”API 描述(服务描述)之外,他们还需要服务的其他相关信息,例如:

    • 该服务提供哪些业务功能?
    • 该服务有哪些限制?
    • 该服务能够支持的 SLA?
    • 服务请求者必须满足那些要求才能正确地调用服务?
    • 特定的执行结果在何种条件下产生?
  • 自动基于服务描述进行消息校验。Vambenepe 指出,有了服务描述并不意味着一定要对消息进行校验: > 服务描述还有许多其他用途,但都被忽视了,原因是人们过多关注在语法校验和 stub 生成之上。

    博文中列出的服务描述的其他用途有:

    • 用于附着策略和 SLA。Vambenepe 解释: > WSDL 常常用于……附着策略和 SLA。若为了该目的,你就不一定需要 XSD 消息定义……你需要的只是一种途径来标识策略和 SLA 所附着的操作。我们 可以使用一种比 WSDL 更简单的描述语言来完成该任务。但是,如果你全盘抛弃了描述语言的各个方面,这就好比把婴儿(对服务处理的请求进行分类,即操作 )和洗澡水(语法校验机制)一起倒掉。
    • 治理 / 版本控制。发现服务定义变更的能力: > 服务描述文档的一个好处是,你能知晓服务定义的变更。即便你将获取的信息降低到一个简单值(如,在我上次查看后有无变更?是 / 否) ,它仍然也是有价值的。如果你能对(服务)描述文档进行检查,进而找到那些请求受到变更的影响,那就更好了。并且,还能知道变更是否是向后兼容(backward-compatible)的。

规范的服务描述无疑是重要的。而且,WSDL 的缺点不应成为全盘抛弃它的原因。如果服务描述的下一版本能够超越今天的 WSDL 或 Web 应用描述语言(WADL)——“机器可读的”服务描述,那当然很好。服务包含的内容比 API 多得多,它是建立解决方案的基本成分。所以,服务描述比 API 定义所包含的内容也要多,它是一种能够满足服务生命周期中所有相关参与者的需要的事物。


查看英文原文: Do We Really Need Service Descriptions?

2010-10-25 09:271654
用户头像

发布了 184 篇内容, 共 74.0 次阅读, 收获喜欢 7 次。

关注

评论

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

【web 开发基础】PHP 中的默认(缺省)参数的函数 (33)

迷彩

缺省参数 函数 web开发基础 11月月更 默认参数

寒冬之下,年销售增速不降反增,这家国企做对了什么?

用友BIP

week6作业 - 拆分电商系统为微服务

in9

Jan Ozer:高清直播互动场景下的硬编码如何选型?

声网

人工智能 编码 视频

对于基于鸿蒙系统的应用支持多语言Arkui框架的线性容器类和PieChart的研究实战

恒山其若陋兮

前端 11月月更

第二章 TCP/IP-IOS七层模型

我叫于豆豆吖.

11月月更

防患未然 | AIRIOT城市管廊智能运维解决方案

AIRIOT

低代码 物联网 智慧管廊

API关键技术-日志审计技术

阿泽🧸

日志审计 11月月更

【活动回顾】Apps Everywhere 上海站圆满结束

亚马逊云科技 (Amazon Web Services)

人工智能 机器学习

基于OpenHarmony的ArkUI框架进阶对于高性能容器类和持久化和原子化的运用

恒山其若陋兮

前端 11月月更

第一章 TCP/IP协议

我叫于豆豆吖.

11月月更

Linux 忘记密码解决方法

向阳逐梦

Linux线程 11月月更 Linux系统

【web 开发基础】PHP中的伪类型参数的函数 (31)

迷彩

函数 web开发基础 11月月更 伪类型参数函数 伪类型

【web 开发基础】PHP中的引用参数的函数 (32)

迷彩

web开发基础 11月月更 引用传递 引用参数函数 值传递

web服务器

我叫于豆豆吖.

11月月更

2022年第三季度泛出行行业洞察:泛出行行业正在经历数智化升级的关键时期,用户规模保持平稳增长,行业整体良性发展

易观分析

数智化 泛出行

【个人成长】《代码的艺术》视频分享合集

非晓为骁

职业规划 开发 软件工程能力 代码的艺术

视效剧情口碑双爆棚!Netflix 现象级剧集《怪奇物语》第四季神级视效专访大揭秘!

Renderbus瑞云渲染农场

Renderbus瑞云渲染 CG动画电影 CG特效制作

helm部署mysql

程序员欣宸

Helm 11月月更 kuernetes

2022-11-23: 分数排名。输出结果和表的sql如下。请写出输出结果的sql语句? +-------+------+ | score | rank | +-------+------+ | 4.

福大大架构师每日一题

数据库 福大大

软件测试之 Contract Testing

QE_LAB

契约测试 测试技术

C++---类型萃取---std::remove_cv/std::remove_cv

桑榆

C++ STL 11月月更

如何搭建 SaaS 产品的客户服务体系

产品海豚湾

SaaS平台 B端产品 SaaS 产品 11月月更 客户成功

架构实战营模块 6 作业

陌生流云

架构实战营

Zebec开启多链布局,流支付生态持续扩张

EOSdreamer111

微信小程序开发在全局配置和资源加载优化在获取接口上的节点信息实战

恒山其若陋兮

前端 11月月更

Zebec流支付生态,开启多链布局的“两手准备”

股市老人

母亲斗情敌,羞得儿子无地容!一瓶“醉三皇”,圆了多少孝亲梦!

联营汇聚

CentOS7安装MySQL-5.7.36

蜗牛也是牛

【愚公系列】2022年11月 微信小程序-页面间通信

愚公搬代码

11月月更

什么是CI/CD

穿过生命散发芬芳

CI/CD 11月月更

  • 扫码加入 InfoQ 开发者交流群
我们真的需要服务描述吗?_SOA_Boris Lublinsky_InfoQ精选文章