Slingshot 开源加速离线 / 在线混合应用

  • 田乐

2007 年 7 月 17 日

话题:RubyRuby on Rails语言 & 开发

13 日,Joyent宣布基于 GPL v2 将SlingshotConnector开源。Joyent Slingshot 允许开发者将 Rails 应用程序部署为与桌面应用行为一致,可以在线或者离线(保持同步),可以拖拽,与所有其它桌面应用程序交互等。另外,Joyent 还提供了 Connector 产品和一组可以与 Joyent Slingshot 协同工作的第三方应用程序。

Slingshot 计划在今年 4 月份发布一个可以在 Windows 和 Mac OS X 上基本可以工作的版本(但是,似乎目前还没有发布)。Joyent 称 Slingshot 让游戏换一种玩法。

Slingshot 框架是轻量级且可自定义的,它让 Ruby on Rails 应用可以通过透明的数据同步离线运行。它不限制你如何运行应用程序及同步哪些数据,这些由开发者自己决定。这样,Slingshot 可以让 Rails 脱离浏览器。它可以打破 Web 应用和桌面应用的(通讯)壕沟,同时它没有失去 Web 应用在快速开发、部署和更新上的优势。最近 Google Gears 和 Dojo offline 也提供了这种能力,它们离线工作的方式虽然不同,但是希望给用户带来的体验是殊途同归的,这些技术希望用户能够将在线应用当作桌面应用来使用,让用户忘记“线”的存在。虽然 David Heinemeier Hanson 曾经开玩笑地认为离线只有在飞机上才有必要使用,但是从目前的技术走向上来看,这门技术无疑会被更多地开发和使用。Slingshot 以此作为一个出发点,希望进一步消除离线/在线应用的区别,所以它提供了协同工作的机制,希望帮助开发者更轻松地开发混合应用程序。近期在平台竞争上火爆的 Adobe 的 AIR、MS 的 Silverlight、Sun 的 JavaFX 无不希望提供这样的方案,这片市场被称为 RIA 市场,其竞争已经如火如荼,而传统的 HTML/CSS/Javascript 方式也依然保持强劲的发展势头,此时看到 Slingshot 这样的产品开发人员应该更加感觉兴奋,因为 RIA 的思路似乎依然在被不断扩展。

Slingshot 这个产品关注的是数据的交换和同步。这其实和 RIA 技术中的异步通讯一样扮演者传输的重任,因为目前的 RIA 应用大都是以数据为中心的,所以在消除离线/在线应用时首先需要解决数据同步问题。Joyent 在其 Blog 上介绍了Slingshot 提供的数据同步的使用方法

Joyent Slingshot 是一个简洁的同步在线和离线数据的轻量级方案。作为一个开发者你可以提供一个透明的 ActiveRecord 传输层,允许简单的定义你的应用程序中哪些数据什么时候需要用什么方式进行同步。仅需要增加三十行左右的代码,你的 Rails 应用程序就可以从客户端向服务器同步数据。加上另外三十行代码你就可以使用基于文件的数据同步了。

框架提供了可以扩展的拖拽抽象层。可以挂入到应用程序已有的导入/导出机制中,而不需要修改任何应用程序的代码。

最后,它允许开发者方便的部署更新和迁移(migrations),无论用户离线了多久。

Slingshot 让开发者可以开发一种异步的 CS 应用程序,通过拖拽的方式同步数据,也可以通过文件的方式同步。并且从工作环境上 Slingshot 也提供了比较宽松的平台,Joyent 在他的 Blog 中这样描述它的运行方式

Slingshot 如何工作呢?我们已经从 Slingshot 中移除了对操作系统二进制文件的依赖和冲突。进一步说,Slingshot 允许开发者自己定义运行环境,安装 gems、plugins、二进制库或者其它,我们都可以处理。Slingshot 就像一个让 Rails 应用程序运行的虚拟机。

总而言之,使用 Joyent Slingshot 你可以:

  • 创建混合的 Web/ 桌面应用程序
  • 同步在线和离线数据
  • 在线和离线应用程序中使用相同的代码
  • 轻松的部署和更新你的应用程序
  • 在应用程序中拖拽导入/导出

Rubyinside 在报道 Slingshot 开源的时候,将其比喻为 37signals 将 BaseCamp 产品开源,可见其重要程度。Slingshot 的创新性在未来肯定会激发一些混合 RIA 应用的产生,让我们一起关注这个未来的技术吧。

RubyRuby on Rails语言 & 开发