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

发布于:2007 年 9 月 26 日 05:00

资深架构师 杨波,正在以案例项目驱动,原理+编程技术+工具结合落地微服务和云原生架构,立即查看 >>

在本文中,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 服务

阅读数:219 发布于:2007 年 9 月 26 日 05:00

更多 SOA、架构 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 客户端创建和调用原理

    gRPC 的客户端调用主要包括HTTP/2 客户端创建、客户端负载均衡、请求消息的发送和响应接收处理四个流程。

    2018 年 3 月 13 日

  • 持续演进,克服“REST 缺乏”

    新的API协议(如GraphQL、gRPC和Apache Kafka),作为受REST启发的HTTP API的替代品,越来越受到欢迎。

    2019 年 3 月 7 日

  • 63 | 接口设计的准则

    对于模块的使用界面,我们推崇 KISS 原则,简单自然,符合业务表达的惯例。

    2019 年 12 月 10 日

  • Converter 接口的局限性:哪种类型转换场景 Converter 无法满足?有什么应对之策?

    2020 年 5 月 28 日

  • 微软发布 Web Service Software Factory 的 Modeling Edition

    微软在上周发布了WSSF的Modeling Edition(建模版),这是Web Service Software Factory的一个主要版本。Pattern & Practices团队的产品经理Don Smith揭开了该软件工厂路线图的神秘面纱,这是一个雄心勃勃的计划,目前它完全能够集成DSL,这是Steve Cook的团队提出的愿景。

    2008 年 3 月 9 日

  • RAML 用户应遵循的 C#与 Web API 代码生成模式

    在本文中,Jonathan Allen将为读者介绍REST规格语言,例如RAML、Swagger以及API Blueprint的使用者在为C#和ASP.NET Web API生成代码时应遵循的一些设计模式。本文涵盖的主题包括model的校验、对异步的支持以及请求的撤消。

    2016 年 6 月 15 日

  • 编程范式游记(6)- 面向对象编程

    面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反。

    2018 年 1 月 30 日

  • 微观 SOA:服务设计原则及其实践方式(下篇)

    本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA,集中讨论SOA在微观实践层面中的缘起、本质和具体操作方式。本篇将对8种可操作的服务设计原则进行细化的分析,作为SOA实践的参考。

    2014 年 10 月 8 日

  • 重新考虑“代码优先”的 Web 服务

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

    2007 年 9 月 24 日

  • 基于经验的 SOA 成功原则

    在SOA领域工作多年之后, Jean-Jacques Dubray写下了他所信奉的四条促进实现成功SOA的原则。

    2013 年 4 月 15 日