写点什么

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

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

关注

评论

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

空壳产品之路:直面自身的缺点

iofomo

产品 设计 工具 摸鱼 微信分身

利用官方授权API接口item_get_app,深度挖掘淘宝/天猫APP商品详情数据

代码忍者

API 接口 pinduoduo API

数据规模超 1PB !揭秘网易游戏规模化 TiDB SaaS 服务建设

TiDB 社区干货传送门

集群管理

广告行业需要用到堡垒机的几个原因分析-行云管家

行云管家

广告 等保 等保测评

基于 TiDB Vector 开发的 TiDB AI 小助手上线啦!招募 200 名试用体验官,开启高效问题解决之旅

TiDB 社区干货传送门

图文教程 | 阿里云市场 Serverless GreptimeDB 购买和使用指南

Greptime 格睿科技

数据库 阿里云 使用指南

【JIT/极态云】技术文档--Excel模板

武汉万云网络科技有限公司

深入Linux性能与统计命令:优化、监控与管理的首选工具

测试人

软件测试

架构图怎么制作?盘点10个优秀的架构图模板!

职场工具箱

职场 在线白板 架构图 绘图软件 组织架构图

下周二!白鲸开源WhaleStudio将亮相AWS数据合作伙伴荟萃周,探讨DataOps新质生产力

白鲸开源

AWS DataOps 数据集成 数据调度 白鲸开源

从 MongoDB 迁移到 TiDB

TiDB 社区干货传送门

从模型到应用,大模型产业落地进入加速期

Geek_2d6073

SaaS,PaaS,IaaS是什么意思?一文教你弄懂!

积木链小链

IaaS PaaS SaaS 平台

Vscode 远程切换Python虚拟环境

EquatorCoco

Python vscode

星辰资讯 | TiDB v7.5.4 & v8.4.0 发版

TiDB 社区干货传送门

版本升级

金字塔原理:解决问题的高效思维框架

易成研发中心

项目管理 金字塔原理

安徽等级保护测评机构名单【2025】

行云管家

等保 等保测评 安徽

【GreatSQL优化器-02】索引和Sargable谓词

GreatSQL

测试如何帮助开发同学更愉快的“修BUG”

Hi-CodeCaptain

软件质量 测试覆盖率 精准测试 bug 软件项目管理

10月回顾 | Apache DolphinScheduler社区动态与进展一览

白鲸开源

大数据 开源 Apache DolphinScheduler 工作流任务调度

我们是如何实现 TiDB Cloud Serverless 的 - 成本篇

TiDB 社区干货传送门

TiDB Cloud

百度多模态大模型内容安全解决方案获WitAwards 2024年度大奖

百度安全

智源六周年 | 矢志星海,奋楫争先

智源研究院

10月回顾 | Apache SeaTunnel社区动态与进展一览

白鲸开源

大数据 开源 数据同步 数据集成 Apache SeaTunnel

TiDB数据库的垃圾回收机制

TiDB 社区干货传送门

监控 管理与运维

鸿蒙Navigation拦截器实现页面跳转登录鉴权方案

龙儿筝

鸿蒙

万界星空科技装备制造业MES解决方案

万界星空科技

mes 万界星空科技mes 装配行业 装配制造业 装配行业MES

【JIT/极态云】技术文档--日期字段任务

武汉万云网络科技有限公司

【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键

云起无垠

我手搓了个“自动生成标书”的开源大模型工具

白鲸开源

人工智能 机器学习 GAN 大模型

虚拟化技术:新能源汽车空调控制系统的智能新突破

DevOps和数字孪生

汽车

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