Apache Abdera是Atom联合协议(Atom Syndication)和Atom发布(Atom Publication)协议的开源实现,目前尚处于“孵化”阶段。最近,Abdera到达了0.40里程碑版,朝着成功孵化迈出了重要一步。InfoQ借此机会就Abdera,Atom和AtomPub采访了该项目的两位核心开发者,IBM的James Snell和MuleSource的Dan Diephouse。
InfoQ:每个人都知道Atom和AtomPub是用于网络日志的,对吧?在这个领域之外还有什么人会在乎它呢?
James Snell:虽然Atom和AtomPub一开始只是为聚合和发布日志内容而设计的,但在各个领域内的广泛使用已经证明了它的价值。我曾经见过Atom被应用于社交联络,日程安排,文件管理,论坛讨论,档案管理,书签标记,维基网站,照片共享,播客网站,发布基于公共警报协议(Common Alerting Protocol)的通告等许许多多方面。对于任何需要发布和管理各种格式内容集合的应用,Atom都有一定的适用性。
Dan Diephouse:我们只需要看看现在的各种公共服务就知道了。Google的大部分API都是基于AtomPub的,微软也将AtomPub作为其Web API的未来方向,这些服务都已大大超出网络日志的范围。甚至,AtomPub也不再只是一个公共Web API——我已经注意到许许多多的企业开始实施建立基于AtomPub的企业内部服务。
InfoQ:AtomPub将会是一个新的SOAP吗?
James Snell:我相信有些人会这么想,但我以为没必要这样去想。
Dan Diephouse:我也同意这样的类比其实并不十分恰当,SOAP主要是作为传送数据的一种方式。也许再加上WSDL会看起来更合理一些。AtomPub和SOAP/WSDL两者都提供给你编写服务以供他人使用的能力,但AtomPub采取了一种完全不同的途径来帮助用户实现他们的服务。它实现了一些能令用户更自由的约束。因为数据受限于统一格式——每个条目都包括title,entry,id,和content/summary——这使得我能从一条Atom feed中得到有用的信息,而不管这条feed来自哪一类型的应用。对我来说,解析日历数据就像我解析一个雇员目录或者是阅读网络日志一样的简单。我不需要任何特殊的工具或者更多的信息,仅仅只需了解这是基于AtomPub的服务。但从另一方面,这种约束也限制了AtomPub的适用性——它绝不是一个万能的协议。很多信息用AtomPub来建模会显得过于笨拙。事实上,当你的数据是有时序的列表时,AtomPub是其自然的选择。
InfoQ:给我们说说Abdera这个项目吧。
James Snell:Abdera是Atom联合格式(Atom Syndication Format)和Atom发布协议(Atom Publishing Protocol)的一个开源实现。它源于IBM WebAhead部门的一个内部项目,并于2006年6月捐献给了Apache基金会的孵化器。从那时起,Abdera逐步发展成为了最全面的Atom标准的Java开源实现。
Dan Diephouse:它的功能已经开始多得难以一下子全部说上来了。这么说吧,它包括了对开发/消费AtomPub服务的支持,一个IRI库,一个URI模板库,支持unicode的规范化,还扩展支持诸如XML签名/XML加密,GData,GeoRSS,OAuth,JSON等多种数据和格式。很cool的是,最新发布的版本里还包括了一系列的“适配器”,这些适配器能让你为存储在JDBC,JCR,或者文件系统中的条目生成AtomPub服务而无需任何编码。
InfoQ:能给我们简单描述下Abdera架构中的一些关键设计方针吗?
James Snell:Abdera一开始是围绕以下三个原则进行设计的:
InfoQ:那么你们俩平时都用Abdera做些什么呢?
James Snell:在IBM,Lotus Connections和Lotus Quickr套件的组件使用Abdera来支持Atom发布协议。Abdera同时也是WebSphere Web 2.0 Feature Pack的一部分。在内部,Abdera还被广泛使用于不同的应用程序中。
查看Dan Diephouse的博客和James Snell的博客,同时请参阅Abdera的主页。
查看英文原文: Apache Abdera: Atom, AtomPub, and Java 译者简介:黄璜,毕业于重庆邮电大学计算机学院。现从事软件开发工作,供职于成都ISSC,主要负责Java Web开发,熟悉struts,spring,ibatis,关注语义网,SOA,云计算等领域。联系方式 [email protected]。参与InfoQ中文站内容建设,请邮件至 [email protected]。