QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Microsoft 应放弃四项 SOA 信条?

  • 2007-08-22
  • 本文字数:1236 字

    阅读完需:约 4 分钟

Microsoft 的 Harry Pierson(网名 DevHawk)建议 Microsoft 应该放弃他们的四项 SOA 信条,因为 Harry 认为它们是无用的,至少已经不再有用。

我认为这些信条的使命已经完成。一旦你接受了面向服务的范型,这些信条还能起到什么指导作用吗?基本不能。

这些 SOA 信条最早要追溯到 2004 年 Don Box 在 MSDN 上发表的《 A Guide to Developing and Running Connected Systems with Indigo 》(Indigo 即现今的 Windows Communication Foundation,WCF)。Don Box 在文章中说 WCF 是以 SOA 的原则为基础,这跟其他方式,特别是面向对象不同,SOA 有另外一组前提:

在 Indigo 中,服务即指靠消息交换与之交互的一个程序。一组被部署的服务即为一个系统。一个服务是以存续为前提构建的——服务的可用性和稳定性是其关键。服务聚合而成的系统天生就允许改变——即便是在初始的服务与客户部署之后很久,系统也必须适应新加入的服务,而且不能破坏任何功能。
面向服务的开发必须以下面四项基本信条为基础:

Don 随后解释了下面四项信条:

  • 边界是明确的。
  • 服务是自治的。
  • 服务共享数据定义与契约,而非类。
  • 服务兼容性根据策略来确定。

如前所述,Harry 认为这些信条不太有用。John Heintz 也认为 SOA 信条并不能真正约束实现方案。Harry 根据他与 John Heintz 的讨论作出了总结:

信条 1:边界是明确的。(当然了,有什么不是边界明确的?好吧,基于 SQL 的集成策略不满足这条。那么我要怎样才能划分出好的边界?怎样才更容易版本化?怎样才对 Mashup/ 集成更友好?)信条 2:服务是自治的。(没错。这是一个伟大的目标,但对如何达成目标完全没有任何指导和范围。)

信条 3:服务共享数据定义与契约,而非类。(我所有的采用接口与类的 OO 程序都满足这条。到底有什么不同之处可以用来区分 SOA 与 OO 设计?)

信条 4:服务兼容性根据策略来确定。(这条还算不错:策略的类型和范围可以塑造一个架构。策略即是系统中的约束条件。不过还是没有定义是怎样的策略,只是说应该要有策略。)

Hartmut Wilms 不太同意 Harry 的主张,他认为这些主张在完美的 SOA 世界中可能成立,但在现实中则行不通。特别是考虑到 WCF 最终成了一个更通用通信框架,其适用范围已经不限于 SOA:

John 和 Harry,你们真的认为每个开发者都接受了面向消息的范型吗?真的觉得“面向服务已经是主流”?我恐怕不同意。除非把 CLR/JVM/……摆在第一位的方式能被厂商们禁止,而群众又能听从,否则还远没到让这四项信条退休的时候!

Don Box 这位最初提出这些信条的作者,也对此作了评论。Don 说发表这些信条的原意是为了解释 WCF 的构建原则(或者至少是 Indigo 的最初目标)。

目标仅仅局限于在相当抽象的层次上说明“我们希望你这样用它”。

抛开最初的意图不谈,这四项信条支配了 Microsoft 在过去四年中对 SOA 的观点。你认为这些信条有任何功劳吗?还是 Harry 说得对,是时候抛弃它们了?最后,我不得不说,有什么不做 Microsoft 开发的人关心它们该不该退休吗?

查看英文原文: Retire Microsoft’s Four SOA tenets?

2007-08-22 04:54782
用户头像

发布了 225 篇内容, 共 65.2 次阅读, 收获喜欢 50 次。

关注

评论

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

LCN基本原理

平凡人生

拍乐云基于AV1的实时视频系统技术实践 | 2021 LiveVideoStackCon 演讲回顾

拍乐云Pano

音视频 WebRTC RTC

lims实验室信息监控管理系统解决方案

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 LIMS系统 信息管理系统

公司刚来的阿里p8,看完我构建的springboot框架,甩给我一份文档

Java 编程 程序员 Spring Boot

MRS HetuEgine的数据虚拟化实践

华为云开发者联盟

大数据 数据湖 云原生 华为云 数据虚拟化

拥有3000多万用户的录屏软件,到底强在哪儿?

淋雨

Camtasia

网易智企斩获“2021全球新经济卓越成就奖”两项大奖

网易云信

大数据 云通信 通信云

云小课|三大灵魂拷问GaussDB(DWS)数据落盘安全问题

华为云开发者联盟

安全 云小课 GaussDB(DWS) 数据仓库服务 数据落盘安全

APP与小程序,相爱相杀

Speedoooo

容器 ios开发 APP开发 Andriod开发

如何在 Spring 中使用事件

码语者

Spring Boot Event 事件

Android技术分享| Android WebRTC 开启H264软件编解码教程

anyRTC开发者

android 音视频 WebRTC ffmpeg H264

03 K8S之网络互联通信

穿过生命散发芬芳

k8s 11月日更

CANN5.0黑科技解密 | 别眨眼!缩小隧道,让你的AI模型“身轻如燕”!

华为云开发者联盟

AI CANN 昇腾 模型压缩 模型缩小隧道

APP上跑小程序,一箭双雕

Speedoooo

ios开发 APP开发 Andriod开发

WeTest六周年 | 匠心不改 初心不变

WeTest

架构实战营 - 毕业总结

燕燕 yen yen

架构训练营

毕业总结

面向对象的猫

毕业总结

【Redis技术专题】分析一下Redission实现分布式锁的点点滴滴

洛神灬殇

redis redission redisson 分布式锁 11月日更

当你在跑步时在想什麽? 这个是村上春树的,当你在骑摩托车时在想什麽? 这个是波西格的

叶小鍵

增量编译:让小程序包编译速度提升11倍!

Speedoooo

容器 ios开发 APP开发 Andriod开发

Linux 系统资源查看及硬件故障排查(qbit)

qbit

操作系统 故障 资源

30K成功入职京东:拿到京东offer经验分享「面试经历+面试真题」

Java redis spring 程序员 JVM

漏洞深入分析-2021

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

不懂乐理和五线谱也能快速入门电子音乐制作!用FL Studio 搞音乐创作有时候就是这么简单!

懒得勤快

实现连续测试,要做的事情【译】

FunTester

敏捷 自动化 持续集成 FunTester 连续测试

我凭借这份pdf,最终拿到了阿里,腾讯,京东等八家大厂offer

Java 编程 程序员 面试

OCR的工作原理和应用场景

澳鹏Appen

人工智能 机器学习 OCR 训练数据 文本识别

惊艳11月!日更挑战你准备好了么!?

InfoQ写作社区官方

11月日更 热门活动

pygame 中的图形绘制函数、帧速率和文字相关知识,简单的的不得了

梦想橡皮擦

11月日更

极客 - 大数据 - 作业 Flink

西伯利亚鼯鼠

闻香识代码,什么是衡量代码质量的终极标准?

Zilliz

Java 代码质量 JavaScrip

Microsoft应放弃四项SOA信条?_SOA_Arnon Rotem-Gal-Oz_InfoQ精选文章