【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

使用 Flash 构建 RESTful 服务

  • 2010-08-04
  • 本文字数:1719 字

    阅读完需:约 6 分钟

Flash 已经成为众多流行站点的宠儿,但对其的批评之声依然不绝于耳。从目前来看,虽说Flash 已经得到了广泛的应用,但要想以RESTful 的方式使用Flash 似乎不是那么容易的事情。毫无疑问,Flash 浏览器只支持GET 与POST 操作,不允许通过POST 模拟PUT 与DELETE,此外还没法处理cookies(请参考这篇文章: REST 反模式)。幸运的是, OASIS SOA Reference Model TC 的联席主席与 Adobe 布道者 Duane Nickull 就这篇文章谈到了自己的一些观点

Flash 拥有良好的架构,与 OASIS Reference Model for SOA 所定义的 SOA 核心原则(该原则是个抽象模型,描述了 SOA 的核心原则,它与 Roy Fielding 关于 REST 的博士论文具有同样的抽象级别)是一致的。Flash 也与 REST 的核心原则保持一致。

Duane 等人指出: REST 并非只限定于 HTTP。我们完全可以使用其他技术设计 RESTful 服务与应用。接下来,Duane 解释了他为何认为只应该支持 GET 与 POST 的原因所在,这与基本的 SOA 需求息息相关:

以 SOA 方式架构应用的目的是在可能的情况下将数据管理从传输工作中脱离出来,同时保持前者的语义。这么做的规则其实并不难制订,与我交流过的很多架构师都相信这才是最好的构建方式。每个服务都有一个与之关联的数据模型与动作模型来处理服务调用。数据模型就是数据,处理 / 动作模型可以表达服务调用的“动词”。

在理想的情况下,架构中的每个层次都应该独立于其他层次,这也是 W3C Web Services Architecture 工作组选择在 SOAP 中只支持 GET 与 POST 的原因所在;同时,这也是 Flash 只支持有限动词的一个原因。为了证明自己的观点,Duane 引用了 Roy Fielding 的论文(参见 6.3 节),这一节开始是这样说的:

REST 所指出的 HTTP 的主要问题域包括新协议版本的部署规划、将 HTTP 语义与底层传输层(TCP)的消息解析分离开来、识别授权与非授权的响应、细粒度的缓存控制、缺乏自我描述能力的协议的方方面面等。REST 还用于模拟基于 HTTP 的 Web 应用的性能,预测持续连接与内容协商等扩展所产生的影响。最后,REST 用于将标准化 HTTP 扩展的范围限制到适合的架构模型当中,而不会让误用 HTTP 的应用影响到标准。

接下来 Duane 说,不管使用 REST 还是 SOA,架构师都希望使用 GET 与 POST。比如说,考虑 DELETE:它意味着将非常特定的语义(可能压根就不可用)公开给特定服务器的所有消费者(非认证)。

如果你希望将其公开给服务的消费者,那么我建议你再去构建一个服务以实现该目的,但要保持后端的处理语义(很多情况下指的是 SOAP 体)。

关于 PUT 与 POST 争论持续了很长时间,Duane 就此说到:

有些人认为 PUT 等价于 SQL 中的 INSERT,POST 等价于 CREATE。虽然在某种程度上这种说法没错,但在实际情况下,这两个操作所涉及的字节数都超过了现有的资源拷贝,因此它实际上相当于 CRUD 中的 UPDATE。

值得注意的是, PUT 并非是 RESTful 的必要组成部分。最后,之前有文章谈过关于 cookies 的问题。 Stefan Tilkov 介绍了一系列的 REST 反模式,cookies 就是其中之一,至少在没有正确使用好 cookies 的情况下是这样的。

如果使用了 cookies,那就说明某处一定不是 RESTful,对么?不一定。REST 的一个关键点就是无状态——这并不是说服务器不能存储任何数据,如果存在资源状态或是客户端状态也是可以的。由于可伸缩性、可靠性以及解耦等原因,不允许有会话状态。cookies 最典型的使用情况是存储键,键指向了某些位于内存中的服务器端数据结构。这意味着浏览器每次发送请求时都会携带的 cookies 是用于建立会话状态的。如果 cookie 存储了某些信息,比如认证令牌(服务器端可以不用借助于会话状态就能实现验证),那么 cookies 就完全是 RESTful 的,但有一点需要注意:他们不应该用于编码可由其他更加标准的方式(比如说在 URI 中,某些标准的头,或是在消息体当中,不过这种情况比较少见)所传输的信息。例如,从 RESTful HTTP 的视角来看,我们推荐使用 HTTP 认证。

总之,Duane认为 SOA 与 REST 通常都是合作良好的搭档。借助于运行期对正确功能级别的支持,Flash 的架构完全遵循REST 与SOA 的核心原则,也就是说,我们完全可以使用Flash 开发RESTful 服务。

查看英文原文: Building RESTful services with Flash

2010-08-04 08:541663
用户头像

发布了 88 篇内容, 共 258.1 次阅读, 收获喜欢 7 次。

关注

评论

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

Nautilus Chain:独特且纯粹的创新型 Layer3

EOSdreamer111

【1对1咨询】前端和后端,哪个更简单?转行程序员的捷径

程序员晚枫

前端 后端 转行

一种适用于大量租户大量角色的权限系统设计

Java你猿哥

Java ssm 权限管理

阿里人都在死磕的全彩版"并发编程笔记",面试大厂必备!

做梦都在改BUG

Java 并发编程 高并发

Nautilus Chain:独特且纯粹的创新型 Layer3

西柚子

raw图像处理-RAW Power中文-mac破解软件

魔仙苹果mac堡

mac软件下载 raw图像处理 RAW Power Mac破解版

mac文件比较对比工具-Beyond Compare mac最新中文破解版

魔仙苹果mac堡

Beyond Compare 4 Beyond Compare安装教程 Beyond Compare破解 mac文件对比工具

kafka消费者那些事儿

做梦都在改BUG

Java kafka 消费者

面试官问:kafka为什么如此之快?

做梦都在改BUG

Java kafka 面试

RAW Power for Mac(强大的raw图像处理软件)中文激活版

Rose

mac软件下载 Raw图像处理软件 苹果软件下载 RAW Power破解 RAW Power中文

音乐制作软件Ableton Live 11 Suite最新v11.3.3中文版下载安装教程

Rose

音乐制作软件 Live Suite 11破解 Ableton Live Suite下载 Ableton Live 安装教程 中文版Ableton Live 11

eMail Address Extractor for Mac(邮件地址提取软件)

Rose

苹果软件下载 eMail Address Extractor Mac邮件地址提取

浅析 Redis 数据结构 List 及其底层编码方式

Java你猿哥

Java redis List ssm

绝了!阿里大佬的"Redis深度核心笔记",从基础到源码,全是精华

做梦都在改BUG

Java 数据库 redis 缓存

Mac版本Photoshop ai beta爱国版安装使用-AI创意填充绘图的10 种用法

Rose

ps AI绘图 ps爱国版 Photoshop测试版下载 AI创意填充绘图功能怎么用

程序员的私人助理:Amazon CodeWhisperer

申屠鹏会

AI Codec

DiskCatalogMaker for mac(磁盘文件管理工具) v8.6.5中文注册版

魔仙苹果mac堡

Mac磁盘管理 DiskCatalogMaker 注册版 DiskCatalogMaker 中文 DiskCatalogMaker 破解

mac文本处理工具FSNotes中文版FSNOTES笔记软件

Rose

Mac笔记软件 FSNotes下载 FSNotes破解 FSNotes mac中文版 苹果电脑笔记工具

熬了一个月肝完这份阿里架构师的Java面试手册,我从20K变成了30K

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

数字化转型应该如何去做?(4A架构篇)

数字随行

数字化转型

pd虚拟机专用windows系统镜像(m1/intel)一键安装版

魔仙苹果mac堡

虚拟机 win 11镜像 win镜像 arallels Desktop

阿里资深架构师总结的春招Java岗核心笔记,GitHub标星20k

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

2023年互联网Java工程师高级面试八股文汇总(1260道题目附解析)

Java你猿哥

Java MySQL zookeeper JVM java面试

最新出炉!2023年Java初中高级面试1000问

采菊东篱下

Java 程序员 面试

面试必备,阿里巴巴最新版《Java进阶学习+面试宝典》全新上线

架构师之道

Java 面试

Nautilus Chain:独特且纯粹的创新型 Layer3

股市老人

互联网工程师Java面试八股文及答案整理(2023最新版)

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

炸了!力扣官方首发了这套1568页LeetCode算法刷题笔记(彩页版)

Java你猿哥

面试 算法 LeetCode 力扣 左程云

ps ai beta爱国版mac版安装 Photoshop AI创意填充绘图的6种应用场景

Rose

PS2023破解 PS2023最新版 Photoshop beta爱国版 创意填充

硬核!靠这套MySQL笔记轻松过了阿里二面,基础架构调优齐全了

做梦都在改BUG

Java MySQL 数据库

Java 容器详解:使用与案例

小万哥

Java 程序员 容器 面试 后端

使用Flash构建RESTful服务_SOA_Mark Little_InfoQ精选文章