BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

MIME给REST的采用带来了问题?

| 作者 Mark Little 关注 12 他的粉丝 ,译者 马国耀 关注 1 他的粉丝 发布于 2009年8月29日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

随着REST(和REST/HTTP)被人们越来越多地用于除了运行Web服务器之外的更多工作,我们看到越来越多的人将现实世界的经验带入到这一个更广阔的社区(网络和REST的世界)。在这种背景下,Benjamin Carlyle提出了MIME是否阻碍了REST的采用的问题。

我认为HTTP的一个重大缺点是它依赖于MIME标准及相关的IANA(Internet号分配机构)注册库对多媒体类型进行识别。该注册库是一个瓶颈,因为它对于那些仅限于个别企业或域的那些多媒体类型的定义无能为力。以计算机为中心的环境比以人为中心的环境对语义的依赖性更大。为使计算机有效地挖掘信息以及多媒体类型能够被个性化地标识,多媒体类型信息中的任何唯一的格式都应该标准化。随着计算机在分布式计算环境中的地位越来越重要,加上独特计算环境的数目的增长,多媒体类型的数量也随之增长。

正如Benjamin所指出的,问题是对各式各样的MIME类型的全盘采用是极其困难的,而且不能扩展。如果没能理解某多媒体类型是什么以及它怎么工作,仅仅要达成如“为什么需要某种特定类型的多媒体”这样的协议都是非常困难的。

在Web之外通过实验的方法定义和发展这些标准的能力对于健康采用REST风格以及相关的超出Web范围的风格是至关重要的。

随后Benjamin提出了一些替代方法。第一个应该是使用统一资源名称(URN,Uniform Resource Name),特别当它们现在已经提供分散的注册表。但是它又指出这个做法也有问题。 “首先是HTTP不允许它们在合适的HTTP头中使用;第二个是当URN被读取时,不能进一步被解释;第三是URN不能作为MIME类型而被参数化。” MIME类型提供了跨越不同类型进行一致性和合规性定义的强大支持,而仅用URN就很难做到这点。他继续对HTTP作一些的修改的建议,从而可能对使用URN替换MIME类型有所帮助,例如:

对HTTP进行修改可能是解决这些问题的方法,让其包含对多媒体类型的URI语法的支持,还需要一个协议使得处理器可以了解一个多媒体类型是否继承自另一类型.[ ……]可以选择在对某一个URI的GET操作的响应中使用HTTP头,也可以为多媒体类型的描述指定一个新的多媒体类型。使用链接头的显而易见的做法可能是形如这样的链接: rel=&rel="inherits"。然而,这个方法有些局限。一个实际的描述多媒体类型的多媒体类型可能使用一小段XML文档或简单的人工可读的微格式(译注:是一种对Web网页进行语义注解的方法,参考微格式),而且更加通用且经得起时间的考验。

当然,如他所言,向后兼容性在Web的世界是非常重要的,所以,要做任何修改都必须要仔细考虑这个方面。然而,Benjamin还真提供了另一种解决方法:一个遵循MIME语法分散的注册表。

URN的替代方法是仅将DNS系统作为多媒体类型标识符的一部分。比如在MIME中注册一个“dns”子树。这个子树使得企业/组织能够安全地维护一组从应用dns.com.example开始的标识符,根本不需要IANA的协作。任何出现在该DNS树下的企业/组织都可以这么做。

这样就在尽可能不影响HTTP的情况下解决了向后兼容性的问题。它似乎同时还保留了MIME语法的优势,如继承。但是它仍然存在负面影响:

也许对这种方式对强列的反驳意见就是它失去了对标准文档的发现能力。URL可以很容易地找到他所指向的规约文档,而这种混杂版的DNS和MIME还需要更多帮助才能具有这个能力。也许有必要某种机制把诸如此类的MIME标识符翻译成合适的URL,从而能够很方便地找到它(URL)所引用的文档(如robots.txt)及企业URL结构。

Benjamin还提出了这些方法的一些变体,不过他总结到:

它伤透了我的心。我不想每次在公司里发布一种多媒体类型时都要联系IANA。我喜欢URL,但是它需要一个直接明了的方式去发现重要的继承关系。我不喜欢破坏HTTP的向后兼容性,而且没有更好的协议去支持REST的工作。该何去何从呢?

因此,就像文章中说的那样,目前的MIME的方式是有限制的?或者有其他可用的替代方法吗?或许MIME使用的问题还没有MIME协议作为新类型控制的方式时的问题那么多。


查看英文原文:Is MIME a problem for REST?
 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT