InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

RESTful世界里的Cool URI

作者 Thomas Bandholtz 译者 王锐 发布于 2008年4月16日

领域
架构 & 设计,
企业架构
主题
语义网 ,
REST ,
SOA
标签
RDF ,
W3C ,
标准化 ,
协作技术 ,
Web 2.0 ,
Mashup
假想一下,如果要以最小的集成代价实现一个分布在全世界范围的信息空间,用它来共享机器可识别的数据,会怎么样?这是关于REST的吗?不是的。根据 SWEO 的说法,这跟语义网有关。那些Cool URI有助于实现这种方式。所以,去看看RESTful SOA URI是不是也很“酷”可能是值得的。

语义网教育和拓展兴趣组织(Semantic Web Education and Outreach ,简称SWEO)在3月底执照到期。它的最后一个产品是一个W3C的关于Cool URIs for the Semantic Web的备忘录。URI能很酷吗?这里引用Tim Berners-Lee从1998年开始发表的一篇早期文章 (当时他还没有‘Sir’这一头衔)
“什么使URI很酷?
一个很酷的URI是一个不会变的URI。
URI会怎么变?
URI本身不变:是人改变了它们。”
现在Cool URI没有那么简单了。2005年,经过旷日持久的对“HTTP解除引用(dereference)功能范围”(httpRange-14)的辩论之后,W3C技术体系架构组(Technical Architecture Group ,简称TAG)最后决定“如果得到的HTTP响应代码是200(成功获取),这表示这个URI的确是标识了一个信息资源,但是如果没有得到这个响应,或者得到了一个不同的代码,就不能做这样的假设”,这与2005年的TBL总结一致。目前的SWEO备忘录参考了一个更详细的、由Roy T. Fielding发表的文章
a)如果一个“http”资源对一个GET请求的响应码是2xx,那么被那个URI标识的资源是一个信息资源;
b)如果一个“http”资源对一个GET请求的响应码是303(See Other),那么被那个URI标识的资源是任何资源;
c)如果一个“http”资源对一个GET请求的响应码是4xx(错误),那么这个资源被认为是未知的。

Fielding几乎是REST体系架构的同义词。然而在RESTful SOA中几乎很难看出httpRange-14的决定。例如,无论是在Mark Bakers的“hypermedia constraint”,还是在Anne Thomas Manes的“REST is about Resources”中都没有。

RDF表示资源描述框架(Resource Description Framework),它“允许使用者以一种计算机可处理的方式来描述现实世界的Web文档和概念--人、组织、话题、事物。在Web上发布这些描述,创建语义网。” 同时出现人类可读的Web文档--也可以叫做“信息资源”--与计算机可处理的描述符或者语义概念引起了与HTTP URI代表什么有关的二义性问题。http://www.example.com/people/alice 是代表Alice的设计完美的主页,还是代表一些RDF编码的Alice元数据?它能否也像一个vCard、一个FOAF记录、或者一些HR数据集一样后跟任何公司特定模式(schema)?

这种问题已经超出了协议无关的URI语法的范围,这得由HTTP协议提供内容协商作 为解决方案。HTTP客户端可以用自己喜欢的数据格式和语言,在请求的头部追加目标URI来传送。内容提供者应该提供这些设置服务。SWEO备忘录提供了 一个解决方案,这个解决方案为每一种数据格式实现了一个独立的URI,另外还有一个“通用的”URI。尽管通用URI可以重定向到其中的一个,但是如果必 要,它还允许根据运行时HTTP请求中的‘Accept’设置,直接从多种格式中选择中意的格式。同时,一份更详细的Apache HTTP Server 最佳实践也已发布了。

RESTful SOA可能会认为,这主要适合那些固定文档。一个动态的SOA服务器能够很容易的实现这个“通用”URI概念而无需任何重定向,它只需把请求格式的内容按需提供即可。这个观点对于内容提供来说是正确的,但是重定向体系架构对链接和引用支持更好。这也利用了资源管理和治理,语义网中是这样,RESTful SOA中也是这样。或许,这两个应用领域根本就不能泾渭分明的划清界限。

查看英文原文Cool URIs in a RESTful World

.

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。