写点什么

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

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

关注

评论

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

凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer

不收藏你就后悔吧!费了三天才从GitHub上扒下的阿里Java优化笔记

Java架构师迁哥

完美收官!字节4面斩下2-2Offer,入职就是30K16薪,全凭这套“面试+架构进阶知识点”pdf

Java 程序员 架构 面试

三面遭SpringCloudAlibaba暴锤,含恨吃透大佬的手抄本笔记(听说Github都没有),终入阿里

Java 编程 架构 面试 微服务

web messaging与Woker分类:漫谈postMessage跨线程跨页面通信

zhoulujun

Service Worker

啥,Vue又出新单曲?

wzx

Vue 大前端

毕业两年就拿到腾讯,字节offer,原来是看了这份BAT总结的面试核心知识点

Java架构师迁哥

Redisson 分布式锁源码 02:看门狗

程序员小航

Java redis 源码 分布式锁 redisson

Git点赞82K!阿里量产的保姆级Spring Security笔记,一眼望穿干货满满!

Java 编程 架构 面试

如何预防一个服务故障崩掉整个系统?【熔断】

我爱娃哈哈😍

微服务 架构设计 熔断

【架构设计模块一】:微信业务架构图 & 学生管理系统

Ryoma

架构实战营

微信业务架构图和“学生管理系统”毕业架构设计

NewBranSTONE

#架构实战营

IPFS矿机怎么挖矿IPFS矿机工作原理

【LeetCode】根据字符出现频率排序Java题解

Albert

算法 LeetCode 7月日更

公开吧!腾讯技术专家手撸“Redis技术笔记”,下载量已突破30W

redis 编程 架构 面试

Java线程映射到操作系统线程原理浅析

CodeWithBuff

Java JVM

Hive解析Json数组超全讲解

五分钟学大数据

hive 7月日更

免费分享Java高并发与多线程的优秀图书

Java入门到架构

Java 推荐书籍

杀进腾讯你知道多难吗?6个小时,4 轮技术面+1 轮 HR面,面到吐才斩获40k*16 薪offer!

Java架构师迁哥

成功拿到饿了么offer后!我总结 5月上半月大厂面试真题,押题命中率高达 95%以上

Java 程序员 架构 面试

比收费软件还良心的软件,这回藏不住了 | OBS

彭宏豪95

效率 软件 App 录屏软件

Reactor响应式编程,你只差这个!

CodeWithBuff

Java reactor

先到先得先学!Spring Cloud Alibaba第三版耀世升级全彩PDF版

Java架构追梦

Java 阿里巴巴 架构 面试 SpringCloud

🐬【MySQL技术导航】「索引技术」体验前所未有的技术探险,看穿索引的本质和技术体系(上篇)

码界西柚

MySQL 索引结构 7月日更 索引原理

足足13万字,腾讯架构师纯手肝“JDK源码笔记”带你从入门到实战!

Java架构师迁哥

《持之以恒的从事运动》一

Changing Lin

ServiceWorker工作机制与生命周期:资源缓存与协作通信处理

zhoulujun

Service Worker

WebFlux 操作 MySQL 是种什么体验?

排序——冒泡排序

若尘

排序 冒泡排序 冒泡

整整奋战6个月,入职字节跳动那一天,我泪目了

Java架构师迁哥

MySQL开篇

卢卡多多

架构 MySQL 数据库 7月日更

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