【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

SOA 设计关乎契约还是服务实现?

  • 2010-02-11
  • 本文字数:924 字

    阅读完需:约 3 分钟

大量的出版物都在描述 SOA 实现的设计,但却对接口(契约)设计鲜有关注,这让人不由得产生一种“实现的设计更重要而且更值得关注”的感觉。对此的一个常见理由是契约会随着时间改变,预先把过多的时间花在它们的定义上跟敏捷开发方法相抵触。

Steve Jones 在他最近的贴子里对这一普遍误解提出了异议,说道:

在我看来,这种看法就像那种不愿意写文档的伪敏捷人士,他们根本就是狗屁不通,而不是因为他们已经开发出了具备自描述能力的质量极高的组件。这基本上就是在说任何人都要等到系统可运行了之后你才能知道它的功能。这等于让需求改变适应实现。我现在并不是说需求不能改变,也不是鼓吹瀑布模型,而想说明 SOA 编程中的时间分配问题:在确定规格说明和设计过程中,大部分时间应该花在服务间的契约和交互上,至于关注如何设计这些服务满足契约,则可以少花些时间。

为什么契约是 SOA 实现中的最重要部分,Steve 列举了以下原因:

  1. 其他组件依赖的是契约而不是设计。因其错误而导致的成本跟提供者的数量成指数关系。一旦契约正确就位,那么人们就可以并行开发,这可以大大加速交付时间,减少风险。
  2. 测试是围绕契约而不是设计进行的。契约是正式的规格说明,设计必须满足它,而且各种形式的测试也都应该使用它。
  3. 设计可以在契约的边界内悄悄地改变。

契约的重要性这一概念并不是新鲜事物。按照 Dimuthu Leelarathne 的说法:

如果你没有首先设计服务间的契约,服务间复杂的集成问题就会出现。

实际上,创建好的服务契约并不是件易事,要求很好地理解契约核心业务。虽然已有一些服务接口设计的公认方法,但是更多的时候它还是艺术而非科学。结果,开发者和软件厂商都典型地把注意力放在了他们受到的培训(和要卖的东西)上——服务实现的设计和编码。在 Steve 看来:

……IT 的重点……太少地放在了确保外部接口至少在一段时间内保持正确的上面。契约可以演变,我有意地使用了这个术语,但大多数时候,旧的契约在人们迁移到新版本的过程中还要被支持。这意味着契约比设计拥有的生命跨度要长得多……契约是大事,设计则微不足道。

随着我们继续提倡将 SOA 用于业务/IT 对齐,与业务需求对齐的服务契约的作用会越来越明显。

查看英文原文: SOA Design: Is it about Contracts or Service Implementation?

2010-02-11 02:171158
用户头像

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

关注

评论

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

在线办公时代,企业如何选择一款合适的文档管理系统

小炮

飞腾与百度发布云智一体机,金融领域AI场景成功落地“江苏银行”

百度开发者中心

30倍加速,3毫秒极速识别,人、车、OCR等9大识别任务一网打尽

百度开发者中心

化工产业业态数字升级案例,看摩贝如何快速打通全场景互融互通?

数商云

数字化转型 企业数字化

华为云云原生2.0全景图再升级,一切皆服务共创新价值

Geek_2d6073

前后端的爱恨情仇

Liam

前端 后端 Postman 开发工具 swagger

企业级Web应用系统权限设计

BigBang!

权限 权限架构 权限设计

焱融科技加入多家行业协会与产业联盟,加速产业互联生态跃迁

焱融科技

【堡垒机】常见的堡垒机部署模式有哪些?

行云管家

等保 堡垒机 等保2.0

如何使用物联网低代码平台进行事件管理?

AIRIOT

物联网 低代码开发

集成测试时 MockMvc 无法注入

程序员小航

Java 后端 单元测试

架构实战营6期,毕业总结

本人法海

「架构实战营」

我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景

bin的技术小屋

Java 网络编程 Netty TCP/IP 6月月更

模块九:毕业设计

本人法海

「架构实战营」

OpenHarmony开源开发者成长计划 | 知识赋能第六期预告—从零上手OpenHarmony智能家居项目

OpenHarmony开发者

OpenHarmony

易观分析《机器学习平台市场研究,2022》研究报告正式启动

易观分析

机器学习 AI软件

大数据相关名称解释看这里!简单通俗理解大数据!

行云管家

云计算 大数据 数据安全

经期管理APP的开发解决方案

开源直播系统源码

软件开发

盲盒APP开发:如何抓住消费者的心?

WDL22119

盲盒商城 盲盒APP开发 盲盒源码 盲盒H5开发 盲盒小程序

web前端培训JS 运行机制的梳理

@零度

JavaScript 前端开发

Java—线程池

武师叔

6月月更

阻塞与非阻塞客户端

Damon

微服务 6月月更

敏捷需求管理篇|如何从0-1写好一个用户故事

云智慧AIOps社区

需求管理 编程效率 用户故事 敏捷管理 需求迭代

研发效能管理如何建立闭环?

思码逸研发效能

研发效能

JDBC连接MySQL数据库,访问数据库信息完成登录功能——保姆级详细教程(附所有java和jsp源代码)

写代码两年半

数据库 JDBC Java EE 6月月更

对抗软件复杂度的战争

阿里技术

软件架构 复杂度

感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

Apache DolphinScheduler

Apache 大数据 开源 DolphinScheduler workflow

虎符交易所Hoo推出挂单活动 未成交订单最高可得 200%APY

区块链前沿News

Hoo 虎符交易所

ABAP 程序间传递数据

桥下本有油菜花

【大厂面试题精选】UDP 和 TCP 核心知识总结

C++后台开发

面试题 udp TCP/IP 校招 大厂面经

中国信通院、清华大学、腾讯安全,云原生安全产学研用强强联合!

腾讯安全云鼎实验室

云原生 云原生安全

SOA设计关乎契约还是服务实现?_SOA_Boris Lublinsky_InfoQ精选文章