写点什么

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

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

关注

评论

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

文件打开标识O_CLOEXEC简介

SkyFire

Linux 文件描述符

CleanMyMac4.12.4最新中文版本下载

茶色酒

CleanMyMac X

2023最新H5前端阅读书单推荐

kcodez

前端 H5 React

架构实战营第10期模块六

刘博

微博系统中”微博评论“的高性能高可用计算架构

Geek_e5f2e5

IntelliJ IDEA 的 Code Coverage 测试

HoneyMoose

SpringBoot实现电子文件签字+合同系统

程序员大彬

springboot

OKR之剑·实战篇05:OKR致胜法宝-氛围&业绩双轮驱动(上)

vivo互联网技术

团队管理 OKR

现实中的量子计算机有望进化成《流量地球2》中的MOSS吗?

博文视点Broadview

linux 磁盘挂载

平凡人生

成为海上霸总,全靠5G?

脑极体

5G

在 Asp.Net Core 中什么是认证和授权

newbe36524

C# Kubernetes

架构训练营第10期模块6作业

Geek_4db2d5

统一观测丨如何使用 Prometheus 监控 MySQL

阿里巴巴云原生

MySQL 阿里云 云原生 #Prometheus

来看一个 ChatGPT 有关程序员的笑话

HoneyMoose

低代码实现探索(五十五)后台服务设计

零道云-混合式低代码平台

使用 ChatGPT 轻松创建用户注册页面

devpoint

人工智能 AI ChatGPT

富士康CDO史喆:数字化和智能化为何要打造开放系统,引入外部合作?

B Impact

阿里云PAI-Diffusion功能再升级,全链路支持模型调优,平均推理速度提升75%以上

阿里云大数据AI技术

人工智能 模型优化 企业号 2 月 PK 榜

全球化安全生产 & 质量保障体系建设探索

阿里技术

质量保障 安全生产 全球化技术能力

智能合约佛萨奇系统开发,佛萨奇2.0源码搭建

薇電13242772558

Guitar Pro8和谐版安装包下载教程

茶色酒

Guitar Pro8

内存数据库如何发挥内存优势?

陈橘又青

数据库

数据可视化大屏项目,我是如何实现多屏间的数据通信

梁木由

程序员 前端 前端开发

Java高手速成 | JSP的MVC模式

TiAmo

mvc jsp

易观千帆 | 12月用户体验GX评测:国有行及股份行持续领跑,农信社用户体验关注提升

易观分析

金融 手机银行

订单流量录制与回放探索实践

得物技术

Java 运维 后端 稳定生产

linux 查看操作系统版本

平凡人生

四点聚焦亚马逊2022财报,AWS收入801亿美元,同比增长20%,年度增长率29%

B Impact

单体应用、SOA架构、微服务架构有哪些优劣势?

FN0

微服务架构 组件化 SOA

FL水果软件2023最新中文版本在哪里下载?

茶色酒

FL Studio21

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