写点什么

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

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

关注

评论

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

Linux-技术专题-buffer/cache理解

码界西柚

机器学习算法之——隐马尔可夫模型原理详解及Python实现

迈微AI研发社

Python 学习 算法 隐马尔可夫模型 HMM

一个域名值百万, 现在不注册,未来价更高

华为云开发者联盟

备案 商标 DNS 域名配置 SSL证书

互联网公司建网站时最应该注意什么?

姜奋斗

互联网 网络安全 网站 网站搭建 互联网公司

200 行代码就能骗人的首个聊天机器人

程序员生活志

编程 机器人

从零开始的深度学习实用教程 | PyTorch官方推荐

迈微AI研发社

人工智能 学习 算法 教程 PyTorch

机器学习 | 卷积神经网络详解(二)——自己手写一个卷积神经网络

迈微AI研发社

Python 神经网络 学习 卷积神经网络 CNN

我一个普通程序员,光靠GitHub打赏就年入70万,要不你也试试

程序员生活志

2020中国RPA指数测评报告|T研究

人称T客

MySQL常用函数介绍

Simon

MySQL mysql常用函数

Java基础知识篇(2020最新版)准备放进收藏夹吃灰的勿进

简爱W

Java

带你认识MySQL sys schema

Simon

MySQL

InnoDB 事务加锁分析

vivo互联网技术

MySQL 数据库 innodb

必看的数据库使用规范

Simon

MySQL 技术规范

时间戳,这样用就对了

Simon

MySQL timestamp

如何优雅的备份账号相关信息

Simon

MySQL

大数据平台架构设计探究

vivo互联网技术

大数据 架构设计 数据平台

vivo web service:亿万级规模web服务引擎架构

vivo互联网技术

架构 Web 浏览器

机器学习算法之——卷积神经网络(CNN)原理讲解

迈微AI研发社

神经网络 学习 算法 CNN

区块链最激动人心的未来是什么

CECBC

大数据 区块链技术

高效程序员的45个习惯:敏捷开发修炼之道(4)

石云升

读书笔记 敏捷开发

天地玄黄,宇宙洪荒

zhoo299

随笔杂谈

获奖公布丨程序员的七夕骚话该怎么讲?留下你爱的表白~

InfoQ写作社区官方

写作平台 话题讨论 七夕 热门活动

【杭州】阿里巴巴搜索推荐事业部开发岗位招聘

iSausage

Java 阿里巴巴 推荐 搜索

给路灯按上“电话卡”,从此不仅只照明还给管理员“打电话”

华为云开发者联盟

人工智能 物联网 物联网化 华为云 路灯

浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎

Philips

牧羊少年奇幻之旅

W

读书笔记 感悟

三分钟看懂Python和Java的区别

程序员生活志

Java Python

拼多多员工小便池拉屎,网易智能马桶屏蔽信号,360、搜狐厕所被监控,互联网公司厕所那些事!

程序员生活志

互联网 职场

前端科普系列(1):前端简史

vivo互联网技术

大前端 Web

机器学习算法之——逻辑回归(Logistic Regression)原理详解及Python实现

迈微AI研发社

学习 算法 逻辑回归 正则化 梯度下降

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