写点什么

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:171697
用户头像

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

关注

评论

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

Chrome不支持正则搜索?那我们自己写一个

JYeontu

前端 chrome扩展 浏览器插件 Chrome插件 Chrome Extension

什么是设计模式?

不在线第一只蜗牛

数据库 设计模式

如何快速运用iPaas与协议进行接口对接

谷云科技RestCloud

ipaas 接口对接 协议对接

探索全球加密市场:市场规模、趋势和参与者解析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

国际化物联网卡解决方案立项一周年

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

最全参赛指南!2024 年(第 17 届)中国大学生计算机设计大赛大数据主题赛现已开赛

ModelWhale

大数据 数据分析 交叉学科 中国大学生计算机设计大赛 乡村发展

Docker Kill/Pause/Unpause命令详细使用指南

霍格沃兹测试开发学社

打造安全壁垒:JWT鉴权提升应用的访问安全性

测吧(北京)科技有限公司

测试

低代码开发与数据可视化

不在线第一只蜗牛

低代码 数据可视化

干货满满丨万字超全 ElasticSearch 监控指南

腾讯云可观测平台

Elastic Search

零售饮料企业凭借精准铺货策略与动态调整,通过指标平台精准把脉,赢得线下渠道的主动权

Kyligence

Sol代币发行:探究Solana生态系统中Sol代币的发行

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

深度解析:DApp钱包燃烧质押合约挖矿系统的开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

探索ORM技术:如何轻松管理数据库并提高操作效率?

测吧(北京)科技有限公司

测试

如何快速提升你的技术能力

老张

自我提升 技术 优化体系

首次代币发行(ICO)的成功:概念化、理论和系统分析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

潮流风潮:Meme预售疯狂背后的原因和趋势分析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

守护你的在线业务!如何选择合适的服务器高防公司?

一只扑棱蛾子

高防服务器 高防服务器公司

软件测试学习笔记丨Pytest常用的异常处理方法

测试人

软件测试

连接数据,畅通协作!企业数字化管理再升级

聚道云软件连接器

案例分享

成为Flask专家:利用蓝图实现功能模块化管理的关键路径

测吧(北京)科技有限公司

测试

Python教程:生成Excel并更改表头

霍格沃兹测试开发学社

GaussDB(分布式)实例故障处理

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

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