AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

纯 GET 的 REST 集成模式——是同步,还是集成?

  • 2009-10-30
  • 本文字数:954 字

    阅读完需:约 3 分钟

Duncan Cragg 阐释了他关于纯粹基于 GET 的 REST 集成模式的想法,其内容与微软 FeedSync 规范的愿景极为相似。他通过与一名企业架构师的假想对话这一方式,来解释了这一模式。

这位担忧的企业架构师注意到面向服务的环境中充满这样的 REST 实践:Web 站点有“REST API”,或者有着小’s’的“Web 服务”。就算 AtomPub 也有“服务文档”!一些模式,比如 AtomPub,通过完整的 HTTP 方法集,仅提供简单的数据读 / 写服务。而另一些模式仅把这种读 / 写接口作为对更多复杂的服务功能的封装。

他不禁想到:“Web 在 REST 集成中处于什么位置?没有 PUT 和 DELETE,Web 也工作得很好:那么就使用本身 RESTful 的 GET 不就够了吗?”

他将自己的基于 GET 的集成模式称作 FOREST,一个 RESTful 的观察者同步模式,像他所解释的那样:

FOREST 是一个只有 GET 的 REST 集成模式,简单的定义为:一个资源的状态依赖于它所链接的其它资源的状态。[…] 这意味着,为了查看这些依赖,资源服务器同时也必须是客户端。

接下来他给出了一些关于这一集成场景的例子,还包括混搭…

FOREST 是由纯 GET 或 Web 轮询用例引申而来的 REST 模式,包括某些特定类型的混搭,比如 feed 聚合或筛选器,为其它网页创建摘要的站点,等等。

…以及它与企业的相关性。

FOREST 是在 ROA/WOA/SOA 环境里构建“企业混搭”的一个 REST 模式。[…] 据我所知与此最相近的是企业混搭标记语言,但 FOREST 却十分不同:它简单得多,并且是 / 纯粹 / 的 REST 模式。

就这点而言,实际上 ATOM/RSS feed 使用基于 GET 的同步已有一段时间了, FeedSync 就是这样的形式之一,这是微软的一个 feed 同步规范。

FeedSync 对于 Atom 和 RSS 的应用范围是定义一个最小的必需扩展,来支持松散协作的应用使用 Atom 和 RSS feed 来作为条目共享的基础——也就是说,在两个或多个跨订阅的 feed 之间对新的和变更的条目异步地进行同步。

在这样的集成形式中,资源表示 - 通常指的是规范的数据模型,以feed 的方式暴露出来,并可以被端点用于提取同步(pull-synchronization)。如果加上端点可以是各种能够通过使用HTTP 的GET 语义来同步资源状态的设备,服务,应用程序等等这种思想,这种模式将会更加普遍适用。

查看英文原文: GET-only REST Integration Patterns Blur The Line Between Synchronization And Integration

2009-10-30 05:512419
用户头像

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

关注

评论

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

第九期 - 模块二

wuli洋

架构师的十八般武艺:领域建模

agnostic

领域建模

【愚公系列】2022年10月 Go教学课程 019-循环结构之for

愚公搬代码

10月月更

基于BuildKit优化Dockerfile的构建

琦彦

Dockerfile 10月月更

陈宗绵|关于研发效能的理想与现实

laofo

DevOps cicd 研发效能 持续集成 持续交付

爬虫练习题(一)

张立梵

Python. 10月月更 爬虫案例

JavaScript——JS事件

胖虎不秃头

前端 js 10月月更

什么是光网络,几张图就可以很好的解释!

wljslmz

光纤 10月月更 光网络 通信网络

Docker可视化工具Portainer的安装和使用

琦彦

Docker Portainer 10月月更 可视化管理工具

如何以非root用户运行Docker容器

琦彦

Docker 10月月更 root用户

ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

矜辰所致

蓝牙 ESP32-C3 10月月更

Python应用之丑数的判断

芯动大师

Python 10月月更 丑数

【C语言难点突破】指针和数组名的爱恨情仇

Geek_65222d

10月月更

C++学习---cstdio的源码学习分析06-关闭文件函数fclose

桑榆

c++ 源码分析 10月月更

JavaScript——数据类型

胖虎不秃头

前端 js 10月月更

构建Java镜像的10个最佳实践

琦彦

Java应用 Docker 镜像 10月月更

Python应用之拉力赛求最短时间

芯动大师

10月月更 Python语法应用 函数构建

作为Android Coder,你了解注解吗?

子不语Any

后端 java; 10月月更

vue快速入门---高速版

楠羽

笔记 VUE 3.0 源码 10月月更

Docker层和虚悬镜像(dangling image)介绍

琦彦

Docker 10月月更

JVM——垃圾回收算法

琦彦

Java JVM 垃圾回收 10月月更

一文了解 CPython 中的垃圾收集器

宇宙之一粟

Python 垃圾回收算法 垃圾收集器 10月月更

《Rust for Rustaceans》读书笔记2

袁世超

rust

JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量

胖虎不秃头

前端 js 10月月更

2022 Kubernetes 批处理和HPC发展一览

琦彦

HPC 批处理 KubeCON 10月月更

Python应用之寻求两个数对之间的最大乘积

芯动大师

Python语法 10月月更 split函数

开发者有话说|以码为梦,心向远方,路在脚下

乌龟哥哥

个人成长 10月月更

2022-10-05:在一个 n x n 的整数矩阵 grid 中, 每一个方格的值 grid[i][j] 表示位置 (i, j) 的平台高度。 当开始下雨时,在时间为 t 时,水池中的水位为 t 。

福大大架构师每日一题

算法 rust 福大大

架构实战营模块 2 作业

陌生流云

架构实战营

Qt|控件的事件过滤使用与总结

中国好公民st

c++ qt 10月月更

docker-maven-plugin:自动构建Docker镜像,并推送到Docker Registry或阿里云

琦彦

Docker maven 10月月更 docker-maven-plugin

纯GET的REST集成模式——是同步,还是集成?_SOA_Dilip Krishnan_InfoQ精选文章