Atom包括一对协议,Atom Syndication Format和Atom Publishing Protocol (简称AtomPub)。说起Atom可能有点陌生,可以把它看作RSS2.0的替代品,它是 一种基于XML的超媒体格式标准。Atom详细规范参考RFC 4287,下面是一Atom格式实例:
- <?xml version="1.0" encoding="utf-8"?>
- <feed xmlns="http://www.w3.org/2005/Atom">
- <title type="text">dive into mark</title>
- <subtitle type="html">
- A <em>lot</em> of effort
- went into making this effortless
- </subtitle>
- <updated>2005-07-31T12:29:29Z</updated>
- <id>tag:example.org,2003:3</id>
- <link rel="alternate" type="text/html"
- hreflang="en" href="http://example.org/"/>
- <link rel="self" type="application/atom+xml"
- href="http://example.org/feed.atom"/>
- <rights>Copyright (c) 2003, Mark Pilgrim</rights>
- <generator uri="http://www.example.com/" version="1.0">
- Example Toolkit
- </generator>
- <entry>
- <title>Atom draft-07 snapshot</title>
- <link rel="alternate" type="text/html"
- href="http://example.org/2005/04/02/atom"/>
- <link rel="enclosure" type="audio/mpeg" length="1337"
- href="http://example.org/audio/ph34r_my_podcast.mp3"/>
- <id>tag:example.org,2003:3.2397</id>
- <updated>2005-07-31T12:29:29Z</updated>
- <published>2003-12-13T08:29:29-04:00</published>
- <author>
- <name>Mark Pilgrim</name>
- <uri>http://example.org/</uri>
- <email>f8dy@example.com</email>
- </author>
- <contributor>
- <name>Sam Ruby</name>
- </contributor>
- <contributor>
- <name>Joe Gregorio</name>
- </contributor>
- <content type="xhtml" xml:lang="en"
- xml:base="http://diveintomark.org/">
- <div xmlns="http://www.w3.org/1999/xhtml">
- <p><i>[Update: The Atom draft is finished.]</i></p>
- </div>
- </content>
- </entry>
- </feed>
atom的用途
虽然Atom和AtomPub一开始只是为聚合和发布日志内容而设计的,但在各个领域内的广泛使用已经证明了它的价值。Atom可以被应用于社交联络,日程安排,文件管理,论坛讨论,档案管理,书签标记,维基网站,照片共享,播客网站,发布基于公共警报协议(Common Alerting Protocol)的通告等许许多多方面。对于任何需要发布和管理各种格式内容集合的应用,Atom都有一定的适用性。
REST架构风格中最核心本的要素之一是超媒体格式。虽然超媒体格式有很有用,如能被浏览器很好解析的HTML。但是HTML也不是万能的。如我们在AJAX应用中,使用JSON表述格式很显然比HTML要好。再者,我们为了实现某一特定领域而采用自定义的超媒体格式,如果消费者只需要处理表述中的一小部分,虽然我们可以通过获取资源的表述,然后过滤出我们需要处理的资源,但这显然不是一种好的方式。Atom社区所制定了一条深受欢迎的惯例。
Atom vs SOAP
SOAP主要是作为传送数据的一种方式。加上WSDL会看起来更合理一些。AtomPub和SOAP/WSDL两者都提供给你编写服务以供他人使用的能力,但AtomPub采取了一种完全不同的途径来帮助用户实现他们的服务。它实现了一些能令用户更自由的约束。
因为数据受限于统一格式——每个条目都包括title,entry,id,和content/summary——这使得我能从一条Atom feed中得到有用的信息,而不管 这条feed来自哪一类型的应用。比如解析日历数据就像我解析一个雇员目录或者是阅读网络日志一样的简单。我不需要任何特殊的工具或者更多的信息,仅仅只需了解这是基于AtomPub的服务。但从另一方面,这种约束也限制了AtomPub的适用性——它绝不是一个万能的协议。很多信息用AtomPub来建模会显得过于笨拙。事实上,当你的数据是有时序的列表时,AtomPub是其自然的选择。
AtomPub
AtomPub是一种基于Atom Syndication Format和HTTP的应用协议,HTTP头和有效载荷都包含业务逻辑,不同于soap把http降级为传输协议。用于发布和编辑Web资源。它采用一种标准化的机制来创建和编辑Web资源,并能解决任何可能发生的冲突,如对Web资源操作时的并发等问题。
参考:
http://www.cnblogs.com/tyb1222/archive/2011/12/16/2290053.html