【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

REST 的业务用例

  • 2009-09-09
  • 本文字数:1464 字

    阅读完需:约 5 分钟

Justin Cormack 的一篇博文引发了关于 RESTful 架构在企业里的采用或缺失的热烈讨论

…或多或少总会听见 CTO 说:“把它做成 SOAP 的 API,谁有什么支持或反对的意见吗?”就像在婚礼上出现的那种场景一样,没有人作声。但我坚决反对。SOAP 不会是一个良好架构的主干,然而现在我们还没有说不的能力。

在他解释了资源在企业里所扮演的角色之后,他拿出这一数据 20 位开发者中有 9 位更愿意于使用 REST 因为它生产性更高。他暗示使用基于 REST 的 API 所带来的简洁性压倒了从服务契约或者服务模式 (wsdl,xsd) 所生成的代理,这些代理可以构建于 WS-* 标准之上,也可能基于其它标准。

这并非牵涉到生成一大堆无用代码的程序。它牵涉到的是超文本 (HATEOS),而不是映射数据库模型的晦涩文档。

接着他解释了企业里的资源这一概念,并以如何在 CRM 系统里对一个典型的客户进行建模作为例子进行了说明。

企业里的资源是什么?从客户开始。一个 CRM 系统很明显就是需要被建模的资源。你需要 API,通过调用它,来找出客户购买的产品,支持票据,你构建一个客户服务门户所必须的所有核心数据,以及内部的支持系统。

根据这一篇讲述 ROE(Resource oriented enterprise) 的文章所说,每个企业都有数据筒仓 (silo);比如满足不同业务功能的筒仓,工资系统,人事系统等等。而把这些筒仓所表示的数据当作是可访问的资源来考虑,是有其好处的。这些好处表现在成本方面,同时也表现在你打开了这些数据的孤岛,然后可以用它们来驱动以作出有根据的业务决策。

…ROE 所要求的,就是它们必须更加开放它们本身。并不仅仅主要在技术方面,同时也要提供一种更好的对它们信息内容的抽象。在一个面向资源的企业里面,这明显是通过将它们集成到一个基于 URI 的访问模式来实现的。

根据 Justin 的说法,要做到这一点不难。

构建这一框架可以是循序渐进的。你要么需要已经提供了 REST API 的工具,这会让事情更简易,要么需要一个 web 应用开发框架。这是应用架构与 web 内容管理的一个交汇点

除了他在他的博文里提到的企业迈向 ROE 的好处以外,他同时还汇集了一些来自 REST邮件列表的回应。

[它] 使得事物是人可浏览的,而声明使用它们是机器可浏览的 […] 业务逻辑变成了内容而不是数据,这里存在的再不是业务逻辑要像黑箱一样填充的参数表格,而是它们的状态变成了可发现,可访问,并且可推理的资源。

把 REST 引入企业 […] 帮助企业利用了 web 架构的灵活性,并且使得构建新的企业应用更加便宜和方便。

REST 的应用将 web 分散化的方面带入了企业的世界,并且支持一个网络的系统里的设计者和开发者可以创建并发展他们的组件,而不需要承担把他们聚到一个房间里来讨论 API 所消耗的资源与时间成本。[ Jan Algermissen 在 rest-discuss 邮件列表里写到。]

我相信 REST 对于超媒体的运用 […] 使得维护,部署与版本控制更加的容易,这一点在一个应用的维护阶段就转化成了业务上更低的成本。[ Darrel Miller 在 rest-discuss 邮件列表里谈到]。

同时,[…] 互操作性通过 REST 可以更容易的达到,这是由于 HTTP 的普遍性。同时这对于集成来说也有着极大的正面的副作用。我发自肺腑觉得 SOA 治理也能够真正的从 RESTful 架构的好处中得到收获,但我现在并没有什么细节的东西。[ Bill Burke 在 rest-discuss 邮件列表写到]。

Justin 着重强调了 Benjamin Carlyle 的观察,那就是你可以将 REST 视为 SOA 的一个演化,可以更好并且更容易的消费服务。我们正在见证企业里焦点从面向服务转移到对 RESTful 方案的采用吗?或者说像 Benjamin 所指出的那样,这是一种自然的演化?

查看英文原文: Business Case For REST

2009-09-09 22:512265
用户头像

发布了 133 篇内容, 共 34.7 次阅读, 收获喜欢 1 次。

关注

评论

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

给,你们想要的内存溢出MAT排查工具

田维常

内存溢出

第五周-笔记

leo

极客大学架构师训练营

32核打赢AMD64核 英特尔Ice Lake为HPC提供强劲性能

E科讯

【得物技术】浅谈分布式事务中间件Seata

得物技术

开源 分布式事务 中间件 解决方案 seata

释放数字化活力 高质量建设数字中国

CECBC

数字经济

消灭微服务的坏味道 之 循环依赖

码猿外

微服务 循环依赖 坏味道

Nacos实战及其源码分析

Fox

Spring Cloud nacos spring cloud alibaba

架构师系列之6: python实现一致性hash

桃花原记

DataOps系列丨数据的「资产负债表」与「现状」

DataPipeline数见科技

大数据

区块链+供应链,双链融合开启新时代

CECBC

区块链 供应链物流

Appium常用操作之「Toast提示信息获取」

清菡软件测试

大专学历Java开发7年,从年初被裁到四面美团点评成功上岸,闭关七个月,入职那一天我哭了!

Java架构追梦

Java 阿里巴巴 面试 美团 java架构

五、一致性哈希算法

Geek_28b526

DataOps系列丨DataOps的组织架构与挑战

DataPipeline数见科技

大数据

石、火、水:从OriginOS透视移动系统进化论

脑极体

实现2nm工艺突破,台积电为何能给“摩尔定律”续命?

脑极体

git使用与原理剖析及其私服搭建

Fox

git

《迅雷链精品课》第六课:主流区块链数据存储分析(一)

迅雷链

区块链

架构师训练营 W05 作业

Geek_f06ede

DataOps系列丨DataOps理念与设计原则

DataPipeline数见科技

大数据

JVM运行时数据区,你真得好好学一学

Simon郎

JVM Java 分布式

阿里大牛八年打造,编程宝典,从初学到编程进阶—深入学习—实战

Java~~~

Java 阿里巴巴 程序员 架构 编程语言

Spring Cloud Config 实现分布式配置中心

AI乔治

Java 架构 微服务 Spring Cloud

微服务手册:高速查询?除了Redis我们还有另外的选择

互联网应用架构

redis 微服务 springboot Caffeine 高速缓存

《使用C ++的数据结构和程序设计》限时免费下载

计算机与AI

c++

用 Python 实现定时自动化收取蚂蚁森林能量

Python小二

Python

数字人民币究竟是什么

CECBC

数字货币

结合实战和源码来聊聊Java中的SPI机制?

冰河

Java spi 服务发现

Maven-技术专题-Setting文件结构解析

洛神灬殇

输入法B端市场转化:百度推动产业智能化的新路径

脑极体

《ZooKeeper分布式过程协同技术详解》.pdf

田维常

电子书

REST的业务用例_SOA_Dilip Krishnan_InfoQ精选文章