AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

奥雅的数字化新版图:用 NocoBase 探索精细化管理新可能

NocoBase

开源 低代码 数字化转型 客户案例 内部工具

AI生成高并发Java代码实战:秒杀系统优化方案

飞算JavaAI开发助手

AI 重构 Java 遗留系统:从静态方法到 Spring Bean 注入的自动化升级

飞算JavaAI开发助手

人工智能如何重塑软件测试开发?这几个方向将决定你的职业天花板

测试人

人工智能

深入研究:淘宝天猫图片搜索商品 API 接口详解

tbapi

淘宝图片搜索接口 淘宝拍立淘接口 淘宝图搜API

喜讯!白鲸开源入选智联联盟2024年度软件研发优秀案例

白鲸开源

白鲸开源

IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程

阿里云云效

云计算 AI IDEA

远程控制软件怎么选?简单分析四款国产远控软件长短

科技热闻

区块链智能合约的开发

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

Apache SeaTunnel & Amazon Bedrock 助力生成式AI 应用规模化生产实践

Apache SeaTunnel

AI营销大模型数据工程的"三体"架构:质量、多模态、思维链协同进化论

东信营销科技

AI AI大模型 AI营销大模型 AI营销

MySQL 开发的智能助手:通义灵码在 IntelliJ IDEA 中的应用

阿里巴巴云原生

MySQL 8.0

深入研究:淘宝天猫店铺所有商品 API 接口详解

tbapi

淘宝API 淘宝店铺所有商品接口 淘宝商品采集

【HarmonyOS 5】鸿蒙的装饰器原理和自定义装饰器

GeorgeGcs

华为 鸿蒙 原理 HarmonyOS 自定义装饰器

《一文讲透》第6期:揭秘 KWDB 的多模核心技术

KaiwuDB

数据库 KWDB 开源

如何使用通义灵码提高ECharts使用效率

阿里云云效

eCharts

从片段到完整逻辑:AI生成Spring Boot微服务代码的深度对比

飞算JavaAI开发助手

TimechoDB v2.0.1/2.0.2 发布 | 支持时序表模型,表模型中新增嵌套查询、权限管理、UDF 等功能

Apache IoTDB

PeptideBERT:基于Transformer用于肽性质预测的语言模型

Splendid2025

如何使用通义灵码提高ECharts使用效率

阿里巴巴云原生

eCharts

MySQL 开发的智能助手:通义灵码在 IntelliJ IDEA 中的应用

阿里云云效

MySQL 5.7 MySQL 8.0

Apipost自定义函数深度实战:灵活处理参数值秘籍

数据追梦人

什么是用于 REST API 的 Bearer Token以及如何通过代码和工具进行调试

数据追梦人

【HarmonyOS 5】鸿蒙中@State的原理详解

GeorgeGcs

装饰器 声明式 @State ArkUI框架

AI代码生成工具如何突破Java单元测试效能天花板?

飞算JavaAI开发助手

即刻体验!文心大模型X1现面向企业用户全面开放!

百度Geek说

模型

IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程

阿里巴巴云原生

IDEA

修改DNS服务器会影响DNS解析生效吗?(国科云)

国科云

复杂业务逻辑的AI生成代码调试技巧

飞算JavaAI开发助手

【重磅来袭】DeepSeek-R1昇腾满血版入驻华为开发者空间!互动体验,瓜分福利!

华为云开发者联盟

昇腾 DeepSeek 华为开发者空间

区块链智能合约的开发架构

北京木奇移动技术有限公司

区块链技术 智能合约开发 软件外包公司

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