写点什么

文章:重新考虑“代码优先”的 Web 服务

2007 年 9 月 26 日

在本文中,Dennis Sosnoski 质疑了 Web 服务开发的至理名言——“契约优先(contract first)”,即“由 WSDL 开始(start-from-WSDL)”优于“由代码开始”。他展示了如何使用 JiBX 框架来实践“由代码开始(start-from-code)”的开发,且规避了其缺点,尤其是没有将实现和接口耦合得过于紧密。

如果你现在在使用 SOAP Web 服务的话,那么你有两种开发风格可选择。第一种被称为“由 WSDL 开始(start-from-WSDL)”,或是“契约优先(contract first)”,牵涉构建一个 WSDL 服务描述,并直接关联用于数据交换的 XML 模式。第二种被称为“由代码开始(start-from-code)”,或是“代码优先(code first)”,牵涉将例子服务代码插入你选择的框架,并由那个代码产生 WSDL+ 模式(schema)。

“由代码开始”开发 Web 服务的想法被许多 Web 服务和 SOA 领域的权威人士反对。他们觉得“由代码开始”将 XML 消息结构绑定到了一个特定的实现,这废弃了使用 WSDL 和模式的整个目的。对于“由代码开始”的最初形式——SOAP 编码模式(SOAP encoding scheme)——的确是这样,它被广泛使用以支持 rpc/encoded。使用 SOAP 编码,XML 模式直接由服务提供者应用数据结构产生,客户端代码使用这些产生的数据结构副本进行工作。这种数据模型和 XML 之间自动转换的特性使得 rpc/encoded 在早期的 SOAP 中流行——但是它也是这种风格后来被废止的一个重要原因。

但选择使用契约优先的方式就一定是正确的吗?作者提出了自己的不同见解,因为选择契约优先要求一个高层的投资,包括对 WSDL 和模式的学习,以及支持这些格式的工具等。而“由代码开始”虽然自身有很多毛病,但因为现代数据绑定框架允许你从实际的 XML 表示中隔离数据模型,从实用的角度看,开发者使用代码工作要较使用 WSDL 和模式工作更具生产力。

阅读全文:重新考虑“代码优先”的 Web 服务

2007 年 9 月 26 日 05:00278
用户头像

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

关注

评论

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

区块链农产品溯源系统开发解决方案,区块链底层平台搭建

WX13823153201

关于GaussDB(DWS)的正则表达式知多少?人人都能看得懂的详解来了!

华为云开发者社区

正则表达式 GaussDB

产业实践推动科技创新,京东科技集团3篇论文入选ICASSP 2021

京东科技开发者

人工智能 机器学习 信号 语音识别

工业互联网助力数字中国建设(新论)

浪潮云

工业互联网

《第一财经(月刊2021年02期)》

石云升

读书笔记 28天写作 2月春节不断更 第一财经

基于simhash的文本去重原理

行者AI

Python hash

【LeetCode】爱生气的书店老板Java题解

HQ数字卡

算法 LeetCode 28天写作 2月春节不断更

go get下载包失败问题

happlyfox

golang 28天写作 2月春节不断更

Java lambda表达式人类使用指南

ES_her0

28天写作

西北大学研发猴脸识别技术,金丝猴可刷脸打卡;IJCAI 2020丨基于学习实例隐空间的文本风格转换

京东科技开发者

人脸识别 IT 量子通讯

Selenium 常用方法与属性、鼠标悬停与 Select 操作

梦想橡皮擦

Python 28天写作 2月春节不断更

一篇学会RSA JavaScript加密,涉及OpenSSL

梁龙先森

JavaScript 前端 28天写作 2月春节不断更

趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

百度Geek说

前端 测试 哈希表 hash 研发工具

产品经理训练营第四周总结

产品经理训练营

读书笔记-MySQL

crush

MySQL

「产品经理训练营」第五章作业

Sòrγy_じò ぴé

产品经理训练营

使用 RxJS 设计实现一个下载中心功能

laoergege

前端 RXJS

山东情指行一体化平台搭建,源中瑞重点人员管理解决方案

源中瑞-龙先生

山东公安厅 情指行一体化 源中瑞 大数据分析

线程池面试必考

叫练

面试 线程池 线程池工作原理

Fast AI人工智能审图平台-建筑图纸设计效率的倍增器

滴普科技2048实验室

AI AI审图

解决dyld: Library not loaded icu4c

一个大红包

brew icu4c

LiteOS:盘点那些重要的数据结构

华为云开发者社区

源码 数据结构 LiteOS LOS_DL_LIST Priority Queue

教你如何优雅的改写“if-else”

华为云开发者社区

代码

话题讨论 | 技术人员的职业发展困惑,你也有么?

架构精进之路

职业规划 话题讨论 28天写作 技术人员

IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码

不脱发的程序猿

28天写作 二月春节不断更 IAR 软件故障 DLL库

从磁盘读取成本分析两种 100% 遍历思路:按格子遍历 & 按线遍历

宫水三叶的刷题日记

LeetCode 数据结构与算法 面试数据结构与算法

诊所数字化:最大的数据资产-患者数字档案内容

boshi

电子病历 数字化医疗 七日更 28天写作

前端面试常考题:JS垃圾回收机制

华为云开发者社区

JavaScript Vue 前端 js 垃圾回收

用例的流程图

李钊悌

Java训练营第一周习题:01字节码分析

现实中游走

Java 字节码

互联网员工下班时间曝光:所有的光鲜,都有加班的味道

不脱发的程序猿

996 28天写作 二月春节不断更 加班文化 互联网企业

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

文章:重新考虑“代码优先”的Web服务-InfoQ