写点什么

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

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

关注

评论

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

为了减少延迟和卡顿,我对 MySQL 查询做了这些优化处理...

Java你猿哥

MySQL sql ssm MySQL优化 优化SQL

包装了三年工作经验的我,被同事发现居然连这些Maven的操作都不懂

Java你猿哥

maven ssm 架构师 Java工程师

AI时代要用俄罗斯套娃思考模式

FN0

AIGC

一文吃透Arthas常用命令!

程序员大彬

Java JVM

Kubernetes 本地持久化存储方案 OpenEBS LocalPV 落地实践上——使用篇

江湖十年

k8s 后端 #Kubernetes# Go 语言

iOS SKAN 4.0 时代的广告追踪优化:掌握隐私友好的营销策略

37手游iOS技术运营团队

SKAdNetwork SKAN IDFA ATT App Tracking Trans

火了!阿里资深架构师总结的春招Java岗核心笔记,GitHub标星20k

Java你猿哥

Java ssm 面经 Java工程师 java核心知识

流程图哪个软件好用?10款好用的流程图软件推荐:boardmix、Visio、Miro…

彭宏豪95

效率工具 职场 工具 流程图 在线白板

谈谈现在编程行业的热门话题| 社区征文

魏铁锤

三周年征文

数字化转型困局?华为云提供多款解决方案助力制造业企业上云加速转型

与时俱进的时代

MySQL自增ID用完了怎么办?4种解决方案!

Java你猿哥

Java MySQL sql 后端 ssm

华为运动健康服务Health Kit 6.10.0版本新增功能速览!

HarmonyOS SDK

HMS Core

技术同学如何做好向上管理

老张

职场新人 向上管理

数据散、管理难和上云难,看华为云解决制造业数字化转型难题

与时俱进的时代

如何高效清洗数据?试试这款神器

博文视点Broadview

潮起风来,政企DICT “跃升”之乘风破浪篇

鲸品堂

DT IT 企业号 4 月 PK 榜 ct

Django笔记六之外键ForeignKey介绍

Hunter熊

Python django 外键 ForeignKey

“成本刺客”防不胜防,如何应用亚马逊云科技驾驭云成本

Lily

DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?

laofo

DevOps 研发效能 持续交付 infra 平台工程

多库多表场景下使用 Amazon EMR CDC 实时入湖最佳实践

亚马逊云科技 (Amazon Web Services)

Java

“程序员”即将失业 | 社区征文

六月的雨在InfoQ

程序员 ChatGPT GPT-4 三周年征文

ChatGPT会在三年内终结编程吗?| 社区征文

梦笔生花

程序员 ChatGPT 三周年征文

成立数科公司之余,央国企推进数智化转型还需要底座支撑

用友BIP

Java概述与基础知识

timerring

Java

Redis一主二从环境搭建

京茶吉鹿

nosql redis

前端工程化实战:React 的模块化开发、性能优化和组件化实践

兴科Sinco

性能优化 前端工程化 React Native 前端模块化 组件化开发

【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式

洛神灬殇

分布式 SAML SSO 单点登录

五面阿里巴巴拿offer后定级P6:分享Java面经及答案总结

Java你猿哥

Java 面试 面经 春招 Java八股文

四川农信:与先进科技融合,更好服务广大用户|客户之声

OceanBase 数据库

数据库 oceanbase

NCCL源码解析②:Bootstrap网络连接的建立

OneFlow

人工智能 深度学习

AI日课@20230409:对话式用户界面

无人之路

ChatGPT

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