速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

PrecisionFDA:多组学样本错标校正挑战赛

INSVAST

数据分析 PrecisionFDA

大家都在用哪些测试用例管理平台?分析不同类型团队下的4类测试管理工具

爱吃小舅的鱼

产品经理 测试管理

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

轶天下事

茶桁的AI秘籍 - 人工智能数学基础篇 导言

茶桁

人工智能 数学 math

面部表情识别技术的神经科学基础

来自四九城儿

Apache Dubbo 和 Apache RocketMQ 邀您参与,ASF 亚洲峰会 5 张门票免费送

阿里巴巴云原生

阿里云 云原生

Go语言协程池实现第二弹

FunTester

虚拟币商城数字货币交易分红模式系统开发[流程框架]

V\TG【ch3nguang】

数字货币交易平台开发 虚拟货币

学习Python文件备份和恢复技术,让您的数据永不丢失!

高端章鱼哥

Python Linux

富士胶片公司完成阿里云 PolarDB 数据库开源产品兼容适配

阿里云数据库开源

polarDB PolarDB for PostgreSQL 阿里云PolarDB

从孤勇者到边缘云行业翘楚,网心科技做对了什么?

网心科技

2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续的K个数全修改成任意一个值, 请你计算如何修改可以使修改后的数 列的最长不下降子序列最长。 请输出

福大大架构师每日一题

福大大架构师每日一题

Sentieon软件应用之公共卫生机构

INSVAST

公共卫生 基因数据分析

如何构建 Sidecarless 模式的高性能服务网格

阿里巴巴云原生

阿里云 云原生 asm

Sentieon发布RNAseq加速分析方案

INSVAST

数据分析 基因测序 RNAseq

08.25 北京站|阿里云 Serverless 技术实践营( AI 专场)开放报名

阿里巴巴云原生

阿里云 Serverless 云原生

八月更新 | CI 构建计划触发机制升级、制品扫描 SBOM 分析功能上线!

CODING DevOps

华为云828企业节:助力精细化运营,提升开发效率

mecchi

小程序 云主机 云服务器 网站建设 云电脑

小灯塔系列-中小企业数字化转型系列研究——协同OA测评报告

向量智库

面部表情识别的技术挑战与解决方案

来自四九城儿

Grafana可观测性grpc长链接处理

盈米基金

gRPC 可观测性 Grafana

C++类成员的访问权限以及类的封装

梦笔生花

虚拟币锁仓数字货币usdt投资理财系统开发合约代码

V\TG【ch3nguang】

虚拟货币 区块链技术开发

提升UMI分析精度和计算效率:Sentieon UMI分子标记处理模块

INSVAST

umi 基因数据分析 技术服务

What's new in Pika v3.5.0

apache/dubbo-go

数据库 redis kv Redis 7 KV存储

Programming abstractions in C阅读笔记:p127-p129

codists

Sentieon数据质控QC模块介绍

INSVAST

数据分析 QC 质控工具

微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

阿里巴巴云原生

阿里云 微服务 云原生

面部表情识别技术在社交互动中的应用

来自四九城儿

绘出「星辰大海」:华为云Astro轻应用新手指南Ⅰ

轶天下事

绘出「星辰大海」:华为云Astro轻应用新手指南Ⅱ

轶天下事

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