按:系列文章,將談及Google Gadget的體系結構和開發入門,后期還會有和類似技術Mozilla Prism的對比。
開始之前先澄清一件事,這里所說的Gadget實際上是指Google
Desktop Gadget,而不是指在iGoogle或者FaceBook上運行的Gadget,那個叫做Universal
Gadget。
細說起來,其實Gadget和Universal
Gadget不僅名稱不同,在實現上也完全是兩回事。從使用者的角度看,Univeral Gadget就是一個HTML的頁面,只不過在顯示的時候是實時從iGoogle之類的容器網站上下載過來并展現在一個iframe里面的。而Desktop Gadget則是一個不折不扣的桌面應用程序(雖然運行在Google Desktop這個容器中)。
從開發人員的角度看,Universal Gadget是一個JavaScript文件和XML文件的集合,由容器網站(例如iGoogle,Facebook等等)來渲染成HTML頁面并呈現給最終用戶。在一個Universal Gadget中使用的技術都是標準的Web技術,其能量也限制在瀏覽器的框架中。
而在開發一個Desktop Gadget時,雖然也使用XML文件來指定程序的UI,使用JavaScript來實現程序的邏輯,但與Web或者瀏覽器都沒有天然的聯系,說是完全的另一套程序開發體系也不為過(使用的XML語法與Universal Gadget不同,能夠使用的JavaScript的對象及功能也不同)。
但另一方面的情況導致兩者時常被人混為一談,那就是,一個Universal Gadget是可以被加載到Desktop
Gadget的面板中并正常運行的(嚴格的說只有一部分),而一部分Desktop Gadget也可以加載到iGoogle網站中運行(因而使它看上去像一個Universal Gadget,當然需要系統已安裝了Google Desktop才可以)。
書歸正傳,下面就來說Gadget到底是什么,以及它的體系結構和背后思想。
(注:以下如果沒有特別指明,提起Gadget全都是指Desktop
Gadget,而iGoogle上的Gadget會指明為Universal Gadget)