Eclipse Ganymede:深入 ECF(Eclipse Communication Framework)

  • Alex Blewitt
  • 宋玮

2008 年 6 月 25 日

话题:Java语言 & 开发

作为预定 6 月 25 日发布的Eclipse Ganymede的一部分,Infoq 将推出一系列 Eclipse 子项目的相关报道。今天,我们将探讨的子项目是Eclipse 通讯框架(Eclipse Communication Framework——ECF)。Infoq 采访了 EFC 的项目领导人及Composent 咨询公司的主要负责人——Scott Lewis,以了解更多关于 ECF 及其功用的信息。

Lewis 把 ECF 描述为给开发者提供的两个特性:

  • 给使用 Eclipse 的团队提供了实时通讯和协作特性,比如 P2P(peer-to-peer)文件共享、远程打开 Eclipse 视图、屏幕截图共享、以及实时共享编辑。
  • 一套通讯 API 和框架,建立在已有协议(如 Google Talk、XMPP、SSH、HTTP/HTTPS、Rendevous、IRC 及其它协议)之上,使得开发者可以给自己的基于 Equinox 的插件增加通讯和消息传递功能,或者自定义及扩展 ECF 应用。其 API 支持 P2P、客户 - 服务器和多点消息传递,而且 API 主要集中在特定类型的通讯上,如 P2P 文件传递、presence/IM/chat、动态服务发现、远程 OSGi 服务、消息传递信道等等。

Ganymede 的新特性包括抓取屏幕快照并发送给联系人,以及实时共享编辑,它允许文本编辑器(Java、XML 等)通过 ECF 与其它用户共享。本地开发者编辑器内容的变化会同步给远程开发者,反之亦然。

Lewis 解释了 ECF API 和与不同通信服务“提供者”个体之间的关系:

ECF 拥有创建 API 的通用方法,这些 API 的焦点在于满足高层次编程的需要(比如,传递文件、发现服务或发送文本信息等等),而不是完成这些功能所需的协议(bittorrent、skype、xmpp 等等)。打个比方,我们已经创建了一个文件传输 API,它曝露了发送、接收以及浏览远程文件系统的功能。bittorrent、XMPP、http、ftp 和 scp/ssh 也实现了同一可扩展 API。每个实现都被称作“提供者”,这些提供者知道相关协议的细节。

用来为新版 Eclipse Ganymede 安装 / 更新提供文件传输服务的 ECF 文件传输 API 被称之为 p2(InfoQ报道过)。这样,除了 http/https 协议之外,文件传输协议也被用到了 Eclipse 安装 / 更新上。

可是,ECF 不只是文件传输。通用的发现 API(Discovery API)在如SLP(通过jSLP)或Zeroconf(通过JmDNS)这样的发现协议之上提供了一个抽象。另外,ECF 还配备了R-OSGi,将其作为允许远程通讯(同步或异步)的提供者的一部分,并且参与到了OSGi 企业专家组(OSGi Enterprise Expert Group)中。

要获取更多的信息,可以看一下ECF webinar或者听一下podcast,后者是通过集成在 Eclipse 中的 SkyPE 和Jingle录制下来的。作为一个社区驱动的项目,ECF 一直在寻找贡献者

最后,当问到 ECF 如何集成到 E4 中,或者会受到 E4 怎样的影响时,Lewis 说道:

至于实时共享编辑工作,我们已经开始着手将分布式和进程间通讯(ECF)与建模模型(例如,EMF、DOM 或其它模型)进行集成。真正发生在实时共享编辑上的问题是文档模型被复制到了多个系统上,修改是实时、分布式(通过 ECF)进行的。只要你分发了一个模型,允许多个人编辑 / 操作这个模型,你就必须处理同步复制数据的难题。如果数据偏离了同步,那么在这个时候,对用户来说软件是不能有效工作的。

我们期望 ECF 能够 / 将能够给 E4 的一部分内容提供帮助,E4 正在关注在多个进程间分发和操纵模型,比如一个 Web 客户端访问服务器上的 Eclipse E4。我们很希望 ECF 和作为其基础的异步消息传递结构能够在这些领域帮上 E4 很大的忙。ECF 提供了一套轻量级的 API,可以用来构建分布式应用并保持分布式状态同步。

查看英文原文:Eclipse Ganymede: An in-depth look at ECF (Eclipse Communication Framework)

Java语言 & 开发