50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

SOA 执行者应该首先定义标准

  • 2010-02-07
  • 本文字数:1579 字

    阅读完需:约 5 分钟

近些年在一些与标准相关的活动中我们已经有了非常多 SOA Web 服务 以及 REST 方面的文章演示材料。大多数人都同意标准对于防止厂商锁定和保证异构实现间的互操作性是非常重要的。然而,最近 Steve Jones 提出了一个重要的问题,这个问题是标准该用在 SOA 生命周期中的何处?正如他所言,开发者和业务所有者们在(SOA)最开始需要标准的时候并未定义标准的做法让他很惊讶。对于技术标准(如 WS-*)而言,Steve 认为实在没有什么好的理由支持在开始时就不去定义标准。尽管这篇文章适用于很多技术,Steve 在文章的开头就集中在 REST 上,他说:

说“但这是 REST”(译者注:言外之意是这不是 SOA)并声称所有的事情将是动态的,这样的说法就是一种借口,而实际上只能说明你懒。

进而他向使用 REST 的开发者们阐述了这句话的含义。

  1. 认同你如何发布资源的规范,如何描述“GET”和“POST”是做什么的? 2. 创建一些“服务”和资源的示范以及相关级别的文档供人们使用。

3. 认同围绕 Mocking/Proxying 的流程,使得人们能够在不需要等到最终解决方案完成之前就可以验证和测试他们的解决方案。

4. 认同对资源的测试流程以及你如何及时地确认这些资源符合了既定的系统需求。

Steve 通过一个个人的例子(去年,有些没脑子的人曾对我说,因为这是 REST,所以资源本身就是能够描述它的行为的规范)阐述了他对 REST 的观点,该观点相似于 Bill Burke 在的宣布 REST-* 时所提出的观点

大部分关于 REST 的描述都是使用人类网络作为例子的,我这里的人类网络指的是浏览器和使用这些浏览器的人。在我看来基于机器的客户端与 REST 架构的交互,在(REST)初生时就有了。企业 IT 通常使用特定的中间件技术来实现他们的分布式应用。REST 的发明给我们带来重新审视企业 IT 开发与中间件如何交叉使用的机会。

因此,REST 中方法(标准)的缺失是那种仔细考虑并逐步迭代的方法形成的可能的原因之一,Steve 曾提到并且讨论过该方法。然而,如Steve 在本文中提出的,如果你选择了Web 服务作为实现方式,那么你就实在没有理由忽视过年10 年间发展出的那些标准。 WS-I Basic Profile 1.1 以及 SOAP 1.1 是必需,而 WSDL 的版本(1.1 还是 2.0)则取决于你的服务所使用的交互模式:

现在如果你需要回调,WSDL2.0 中提供了这种机制而且它具有很多技术优势。但是,当你要和不遵循 WS-I 的平台交互时,你会碰到一些很粗糙的 XML 编组和消息头冲突。你可以根据 WSDL2.0 去定义你本地的 WS-I 合规版本,但是大多数情况下你最好不要把资金浪费在寻找一种像样的设计和简单的方法之上——如针对某些特定的流程元素有标准的匹配的格式,通过传递要调用的服务名字就能通过某注册库解析出要进行回调的正确服务。

拿 WS-* 中的各种标准来说,Steve 认为只有少数几个才是核心的:WS-Security 和 WS-Reliable Messaging(大概 WS-Addresssing 是缺省的核心成员,因为现在 OASIS 正需要它)。如他所言,即便是对这些标准的选择还仅仅是第一步,因为在实施时,如果真正要做的话,同样重要的还有选择标准的版本。一些 Web 服务栈声称的合规性实际上是基于规范在标准化之前的发布,或者是面向旧标准的,这可能会致使它们益处甚少。最后,Steve 想对那些抱怨 HTTP 的性能的人说:

另一方面是认同 HTTP 是你的标准传输机制。严肃地说,现在已经是 2010 了,现在是人们该停止对“性能”的嘀咕并提出新的消息传输方式的时候了。如果你实拥有性能问题的话,那么你就要裁剪信息,使用二进制,然而 99.999% 的情况下这是没有意义的,并且,你最好不要用 HTTP 或 HTTPS。

总之,Steve 提出了一些重要的观点:标准很好,但是简单地提供口头的服务无益于 SOA 开发者和业务所有者。在 SOA 生命周期开始时就选择合适的标准是非常重要的第一步,而且这一步仍然被很多执行者所忽视,也因此带来了相应的问题。


查看英文原文: SOA Practioners Should Define Standards First

2010-02-07 08:501673
用户头像

发布了 184 篇内容, 共 88.4 次阅读, 收获喜欢 8 次。

关注

评论

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

Thrift 学习笔记

U2647

Thrift 4月日更

「免费开源」基于Vue和Quasar的crudapi前端SPA项目实战—环境搭建 (一)

crudapi

Vue nodejs crudapi quasar SPA

字节跳动上亿级别秒杀系统优化,用这个方案可行吗?

Java架构师迁哥

架构实战训练营

Nick~毓

图尔兹与达梦数据库达成全面战略合作,共筑国产数据库新生态

BinTools图尔兹

数据库 数据安全 操作数据库

【LeetCode】删除有序数组中的重复项 IIJava题解

Albert

算法 LeetCode 4月日更

【架构实战营】第1模块作业

swordman

架构实战营

Baas是什么?区块链Baas平台开发解决方案带你知晓

源中瑞-龙先生

区块链 开发 解决方案 Baas

SARIF在应用过程中对深层次需求的实现

华为云开发者联盟

DevSecOps 元数据 SARIF 软件安全 规则

站在巨人的肩膀上!淘宝网Java千亿级并发系统架构设计笔记

Java架构追梦

Java 架构 亿级并发 淘宝网

「架构实战营」作业#1

高亮

Ubuntu 鼠标手势软件 -- EasyStroke

TroyLiu

Linux ubuntu 效率 快捷键 鼠标手势

“智慧旅游”:区块链能否驾驭文旅行业?

电微13828808271

智慧公安

MySQL-技术专题-Lock入门到精通

码界西柚

MySQL lock

IDEA实用快捷建

华血

Elasticsearch入门,看完又要会!慎点

比伯

Java 架构 面试 程序人生 架构师

生活中的这些难题,数据库开发者可为你解决!

华为云开发者联盟

数据库 开发者 华为云 GaussDB(for Redis) Redis Stream

尤雨溪:Vue 3 将不会支持 IE11 了

清秋

翻译 Vue 4月日更 IE

私有依赖的打包与上传

blueju

JavaScript 大前端 npm

物联网设备天线设计与选型指南

不脱发的程序猿

物联网 4月日更 物联网设备天线 天线设计与选型指南 射频

在微前端中,antd icon createFormIconfontCN 的本地化问题

blueju

大前端 antd umijs

我,第一次做项目经理,干赔了

四猿外

你的Parquet该升级了:IOException: totalValueCount==0问题定位之旅

华为云开发者联盟

sql spark ETL任务 Parquet totalValueCount

Pod 的状态

耳东@Erdong

容器 4月日更

浅谈一个优秀的 Android SDK 需要具备哪些要点

神策技术社区

android 数据采集 sdk 神策数据

WordPress中常用的8个函数

Sakura

4月日更

京东云智臻链开源两周年,JD Chain领跑国内自研区块链技术

京东科技开发者

区块链

“区块链+电子证照”,推动数字化经济建设

电微13828808271

区块链+ #区块链#

辽宁重点人员管控系统搭建,指挥调度系统搭建

MVVP:一种基于状态的架构模式的设计与实现

行者

低代码平台选型的道与术

人称T客

SOA执行者应该首先定义标准_SOA_Mark Little_InfoQ精选文章