InfoQ

新闻

RESTful世界里的Cool URI

作者 Thomas Bandholtz 译者 王锐 发布于 2008年4月16日 上午6时51分

社区
SOA
主题
语义网,
REST
标签
W3C,
Web 2.0,
Mashup,
协作技术,
RDF,
标准化
假想一下,如果要以最小的集成代价实现一个分布在全世界范围的信息空间,用它来共享机器可识别的数据,会怎么样?这是关于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

.

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。