写点什么

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

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

关注

评论

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

如何看待游戏世界的未来:解析去中心化区块链游戏的优缺点

CECBC

2021年网易Java岗面试必问,Java开发面试准备

Java 面试 后端

2021我是如何拿到小米、京东、字节的offer,持久化数据安全RDB、AOF

Java 面试 后端

2021年抓住金三银四涨薪好时机,腾讯Java社招面试流程

Java 面试 后端

2021年阿里Java面试题及答案,多图详解CLH锁的原理与实现

Java 面试 后端

说下你可能没用过的EventBus

艾小仙

GraphQL 快速入门「3」GraphQL 架构

码语者

Rest GraphSL

2021年这些高频面试知识点最后再发一次,面试官突击一问

Java 面试 后端

40万奖池 + 顶级云服务资源,云计算大赛系列公开课正式开播

亚马逊云科技 (Amazon Web Services)

人工智能 云计算 创新大赛

2021年是意义非凡的一年,2021阿里+头条+腾讯等大厂Java笔试题分享

Java 面试 后端

QOE 驱动下的分布式实时网络构建:Agora SD-RTN 的演进

声网

Java 人工智能 分布式 网络

Flink 实时 metrics

GrowingIO技术专栏

大数据 flink Grafana 流式计算框架

区块链技术的核心、发展与未来

CECBC

“工业互联 在云之洲”丨“5G+AR”远程协助作业解决方案 赋能装备更智能

云计算,

2021年阿里Java高级面试题分享,【MySQL

Java 面试 后端

2021年阿里Java面试题及答案,Java高级进阶学习资料

Java 面试 后端

2022高频前端面试题汇总之React篇

buchila11

React

Centos7 部署 Zabbix 5.4 高可用集群

Se7en

2021年最新Java大厂面试笔试题分享,Java入门教程免费视频

Java 面试 后端

2021年最新Java面试经历,别再说自己不会了

Java 面试 后端

2021年最新腾讯Java面经,Java面试高级题目

Java 面试 后端

2021年春招Java面试题,大厂Java核心面试题出炉

Java 面试 后端

2021年最新Java面试点梳理,阿里P7大牛整理

Java 面试 后端

阿里大佬竟然真的把Java基础核心知识整理成了PDF版

Java 程序员 架构 面试 计算机

网络安全必学知识点之XSS漏洞

网络安全学海

黑客 网络安全 信息安全 WEB安全 漏洞挖掘

2021最新京东商城亿级并发架构设计!推荐每一位Java开发者学习

Java 编程 架构 后端 计算机

docker 命令备忘(qbit)

qbit

Docker 容器 存储

百度联手清华大学出版社 打造国内首套产教融合人工智能系列教材

百度大脑

人工智能

解析实现区块链互操作性的方法及现有开发项目

CECBC

2021年腾讯Java高级面试题及答案,百度笔试题百度校招面试经验

Java 面试 后端

2021我的Java路要怎么走,Java应用性能优化

Java 面试 后端

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