速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Apache Abdera:Atom,AtomPub 和 Java

  • 2008-04-17
  • 本文字数:2364 字

    阅读完需:约 8 分钟

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 一开始是围绕以下三个原则进行设计的:

  1. 它必须功能完备,支持 Atom 开发的每一个方面和标准所容许的每一个选项。Abdera 支持诸如 IRI,Unicode 规范化,XML 数字签名,XML 加密等特性,以及范围广泛的扩展就是对这一原则的践行和验证。
  2. 它必须具有良好的性能,能快速地解析和序列化 Atom 文档。
  3. 它必须是模块化的,使得开发者可以选择那些必要的功能来实现一些特定的需求,同时方便地交换和插入组件。

InfoQ:那么你们俩平时都用 Abdera 做些什么呢?

James Snell:在 IBM,Lotus Connections 和 Lotus Quickr 套件的组件使用 Abdera 来支持 Atom 发布协议。Abdera 同时也是 WebSphere Web 2.0 Feature Pack 的一部分。在内部,Abdera 还被广泛使用于不同的应用程序中。

Dan Diephouse:在 MuleSource 我们正在一系列领域使用 Abdera。我们在 Galaxy——一个开源的注册中心 / 存储仓库(repository)——使用它作为 API 。它充许用户管理存储仓库中的部件和元数据。我们避免使用类似 UDDI 等方式,因为它过于复杂。AtomPub 使得我们能以简单的 Restful API 来操纵注册中心,同时联合存储仓库中的数据。我们也为 Mule(开源 ESB)开发了一个 Abdera 组件,它使得你能轻松地整合 AtomPub 服务和 Mule 支持的各种连接器。AtomPub 在很多集成场景中显得特别关键——比如消息队列,日志记录,事件处理——任何一个你需要有时序的内容集合的场景。我们希望它能帮助人们以一种 Web 友好的方式获取数据。
InfoQ:路线图的下一步将会是什么?
James Snell:成功孵化。Abdera 作为 Apache 基金会孵化器项目已经足够长了。虽然仍有一些细节上的问题需要去解决,我将非常高兴看到 Abdera 成功孵化并升级成独立的 Apache 顶级项目,并为更多的基于 Atom 的应用提供支持。
Dan Diephouse:我想我们将专注于短期内 1.0 版本的发布(这也是来自社区的期望)。我也想借此机会宣传我们的项目——参与进来!任何形式的反馈或者补丁向来都是受欢迎的。请加入邮件讨论列表或者报告问题。查看 Dan Diephouse的博客和 James Snell的博客,同时请参阅 Abdera的主页。

查看英文原文 Apache Abdera: Atom, AtomPub, and Java - - - - - -

译者简介:黄璜,毕业于重庆邮电大学计算机学院。现从事软件开发工作,供职于成都 ISSC, 主要负责 Java Web 开发,熟悉 struts,spring,ibatis,关注语义网,SOA,云计算等领域。联系方式 huangh@cn.ibm.com 。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2008-04-17 22:061548
用户头像

发布了 133 篇内容, 共 37.3 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

华为,告别大陆军时代

脑极体

【死磕Java并发】-----J.U.C之AQS:同步状态的获取与释放

chenssy

11月日更 死磕 Java 死磕 Java 并发

Golang Gin 框架之分组路由(五)

liuzhen007

11月日更

【高并发】由InterruptedException异常引发的思考

冰河

Java 并发编程 多线程 高并发 异步编程

被Chrome坑惨了!

Jackpop

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

2021RSAC -- 网络韧性

Tom(⊙o⊙)

Windows 11再出杀手锏....

Jackpop

清华元宇宙深度报告!理论框架产业真相一文看懂

CECBC

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPullConsumer的实现原理及源码分析

洛神灬殇

阿里巴巴 RocketMQ 消息队列 11月日更 Apache RocketMQ

Spring Bean生命周期你除了会背八股文面试,真的会用了吗?

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

在线文本行固定长度填充工具

入门小站

工具

23 K8S之Secret资源配置

穿过生命散发芬芳

k8s 11月日更

分析23个赛季NBA数据,我发现10条难以置信的信息!

Jackpop

Java 项目中使用 Resilience4j 框架实现客户端 API 调用的限速/节流机制

码语者

Java 限速 节流 Resilience4j RateLimit

[Pulsar] 消息生命历程(三)——客户端发送消息

Zike Yang

Apache Pulsar 11月日更

模块四作业:设计千万级学生系统的试卷存储方案

Geek_99eefd

模块四 「架构实战营」

什么是元宇宙?为何要关注它?

CECBC

EF Core如何处理多对多关系

喵叔

11月日更

2018年世界杯德国竟然输给韩国?终于找到原因了!

Jackpop

一次搞懂SpringBoot核心原理:自动配置、事件驱动、Condition

热爱java的分享家

Java 程序人生 Spring Boot 编程语言 经验分享

华为顶级安全专家分享出来这份‘典藏版’Linux开发实战笔记

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

CWE 4.6 和 OWASP TOP10(2021)

Tom(⊙o⊙)

linux之strings命令

入门小站

Linux

这次不怕撕坏了,区块链电子公告来了

CECBC

Spring中的Controller和Service是线程安全的吗?我有点懵

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

App 端自动化的最佳方案,完全解放双手!

星安果

Python 自动化 爬虫

分布式系统的架构演进过程(一)

卢卡多多

分布式, 11月日更

贪心:柠檬水找零、跳跃游戏🍋

空城机

JavaScript 贪心算法 11月日更

一个对标VSCode的IDE---Fleet

IT蜗壳-Tango

11月日更

Prometheus Exporter (八)kube-state-metrics

耳东@Erdong

Kubernetes Prometheus exporter 11月日更 kube-state-metrics

Apache Abdera:Atom,AtomPub和Java_SOA_Stefan Tilkov_InfoQ精选文章