13日,Joyent宣布基于GPL v2將Slingshot和Connector開源。Joyent Slingshot允許開發(fā)者將Rails應(yīng)用程序部署為與桌面應(yīng)用行為一致,可以在線或者離線(保持同步),可以拖拽,與所有其它桌面應(yīng)用程序交互等。另外,Joyent還提供了Connector產(chǎn)品和一組可以與Joyent Slingshot協(xié)同工作的第三方應(yīng)用程序。
Slingshot計(jì)劃在今年4月份發(fā)布一個(gè)可以在Windows和Mac OS X上基本可以工作的版本(但是,似乎目前還沒有發(fā)布)。Joyent稱Slingshot讓游戲換一種玩法。
Slingshot框架是輕量級(jí)且可自定義的,它讓Ruby on Rails應(yīng)用可以通過透明的數(shù)據(jù)同步離線運(yùn)行。它不限制你如何運(yùn)行應(yīng)用程序及同步哪些數(shù)據(jù),這些由開發(fā)者自己決定。這樣,Slingshot可以讓 Rails脫離瀏覽器。它可以打破Web應(yīng)用和桌面應(yīng)用的(通訊)壕溝,同時(shí)它沒有失去Web應(yīng)用在快速開發(fā)、部署和更新上的優(yōu)勢(shì)。最近Google Gears和Dojo offline也提供了這種能力,它們離線工作的方式雖然不同,但是希望給用戶帶來的體驗(yàn)是殊途同歸的,這些技術(shù)希望用戶能夠?qū)⒃诰€應(yīng)用當(dāng)作桌面應(yīng)用來使用,讓用戶忘記“線”的存在。雖然David Heinemeier Hanson曾經(jīng)開玩笑地認(rèn)為離線只有在飛機(jī)上才有必要使用,但是從目前的技術(shù)走向上來看,這門技術(shù)無疑會(huì)被更多地開發(fā)和使用。Slingshot以此作為一個(gè)出發(fā)點(diǎn),希望進(jìn)一步消除離線/在線應(yīng)用的區(qū)別,所以它提供了協(xié)同工作的機(jī)制,希望幫助開發(fā)者更輕松地開發(fā)混合應(yīng)用程序。近期在平臺(tái)競(jìng)爭(zhēng)上火爆的Adobe的AIR、MS的Silverlight、Sun的JavaFX無不希望提供這樣的方案,這片市場(chǎng)被稱為RIA市場(chǎng),其競(jìng)爭(zhēng)已經(jīng)如火如荼,而傳統(tǒng)的HTML/CSS/Javascript方式也依然保持強(qiáng)勁的發(fā)展勢(shì)頭,此時(shí)看到Slingshot這樣的產(chǎn)品開發(fā)人員應(yīng)該更加感覺興奮,因?yàn)镽IA的思路似乎依然在被不斷擴(kuò)展。
Slingshot這個(gè)產(chǎn)品關(guān)注的是數(shù)據(jù)的交換和同步。這其實(shí)和RIA技術(shù)中的異步通訊一樣扮演者傳輸?shù)闹厝危驗(yàn)槟壳暗腞IA應(yīng)用大都是以數(shù)據(jù)為中心的,所以在消除離線/在線應(yīng)用時(shí)首先需要解決數(shù)據(jù)同步問題。Joyent在其Blog上介紹了Slingshot提供的數(shù)據(jù)同步的使用方法:
Joyent Slingshot是一個(gè)簡(jiǎn)潔的同步在線和離線數(shù)據(jù)的輕量級(jí)方案。作為一個(gè)開發(fā)者你可以提供一個(gè)透明的ActiveRecord傳輸層,允許簡(jiǎn)單的定義你的應(yīng)用程序中哪些數(shù)據(jù)什么時(shí)候需要用什么方式進(jìn)行同步。僅需要增加三十行左右的代碼,你的Rails應(yīng)用程序就可以從客戶端向服務(wù)器同步數(shù)據(jù)。加上另外三十行代碼你就可以使用基于文件的數(shù)據(jù)同步了。框架提供了可以擴(kuò)展的拖拽抽象層。可以掛入到應(yīng)用程序已有的導(dǎo)入/導(dǎo)出機(jī)制中,而不需要修改任何應(yīng)用程序的代碼。
最后,它允許開發(fā)者方便的部署更新和遷移(migrations),無論用戶離線了多久。
Slingshot讓開發(fā)者可以開發(fā)一種異步的CS應(yīng)用程序,通過拖拽的方式同步數(shù)據(jù),也可以通過文件的方式同步。并且從工作環(huán)境上Slingshot也提供了比較寬松的平臺(tái),Joyent在他的Blog中這樣描述它的運(yùn)行方式:
Slingshot如何工作呢?我們已經(jīng)從Slingshot中移除了對(duì)操作系統(tǒng)二進(jìn)制文件的依賴和沖突。進(jìn)一步說,Slingshot允許開發(fā)者自己定義運(yùn)行環(huán)境,安裝gems、plugins、二進(jìn)制庫或者其它,我們都可以處理。Slingshot就像一個(gè)讓Rails應(yīng)用程序運(yùn)行的虛擬機(jī)。
總而言之,使用Joyent Slingshot你可以:
- 創(chuàng)建混合的Web/桌面應(yīng)用程序
- 同步在線和離線數(shù)據(jù)
- 在線和離線應(yīng)用程序中使用相同的代碼
- 輕松的部署和更新你的應(yīng)用程序
- 在應(yīng)用程序中拖拽導(dǎo)入/導(dǎo)出
Rubyinside在報(bào)道Slingshot開源的時(shí)候,將其比喻為37signals將BaseCamp產(chǎn)品開源,可見其重要程度。Slingshot的創(chuàng)新性在未來肯定會(huì)激發(fā)一些混合RIA應(yīng)用的產(chǎn)生,讓我們一起關(guān)注這個(gè)未來的技術(shù)吧。