知识卡片
CORBA错失统一RPC良机败于设计过度复杂
内容
CORBA本来握有统一RPC领域的最好机会:它是国际标准组织牵头制定的规范,同时 支持跨系统、跨语言(末代3.0版本支持C/C++/Java/Python等主流语言,还覆盖 Lisp/Smalltalk/COBOL等非主流语言),当时唯一能与之抗衡的只有受限于操作 系统的微软DCOM。但CORBA最终没能统一RPC,败因不是生态弱,而是设计本身 过度复杂:写一个核心概念”对象请求代理”(ORB)大概要200行代码,其中约170 行是纯粹无用的模板代码;同时规范制定者逐渐脱离工程实践,导致各厂商对同 一份规范的实现互不兼容——一个号称”支持众多异构语言”的标准,实现层面却 连自己的多个实现都无法互通,这是对它自身卖点最大的讽刺。这揭示了一个可 迁移的教训:一个标准/协议要真正统一某个领域,光有权威背书和理论完备性 不够,实现成本和规范的可操作性同样是决定性因素——过度复杂的规范会在 “落地一致性”这个环节反噬掉理论上的优势。
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第2章"访问远程服务"2.1.4节
"统一的RPC"(源文件:_epub-src对应OEBPS/Text/chapter17.xhtml)
- 结论依据:原文引用CORBA首席科学家Michi Henning对"200行代码170行废话"的
批评,并指出规范专家脱离实际导致各家实现互不兼容,最终与DCOM一同被扫进
历史博物馆,直接支撑"设计过度复杂导致CORBA错失统一良机"这一结论。
- 原始内容:写一个对象请求代理(ORB,这是CORBA中的核心概念)大概要200行
代码,其中大概有170行都是纯粹无用的废话……为CORBA制定规范的专家逐渐脱离
实际,使得CORBA规范晦涩难懂,各家语言的厂商都有自己的解读,导致CORBA
实现互不兼容。