摘要:Widget(微件)是近幾年新興的互聯網接入方式和展現技術,它憑借小巧、靈活、開發簡單的優勢迅速抓住人們的眼球,快速向目前主流終端擴散,從PC到手機,都有微件的影子。該文介紹了微件技術、相關標準及其簡單實現,并對微件進行了展望。
關鍵詞:Widget;微件;標準;Widget引擎
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)33-9426-03
Introduction of Widget Technology and Its Simple Implementation
LIAN Cheng, XIE Jian-guo
(Fujian Fujitsu Communication Software Co., Ltd. Fuzhou 350013 China)
Abstract: Widget is a new developed internet access method and representation technology in recent years. It spreads quickly to the main terminal devices from PC to mobile phones relies on its advantage of small, flexible, easy to programme and grab user's attention. This article introduces widget technology, related standards and its simple implementation, as well as prospect of widget.
Key words: widget; Micro; standard; widget engine
當前,互聯網和移動通信技術結合,更逢中國跨入3G時代、終端呈多樣化發展等態勢,使人們能隨時隨地以多種方式接入互聯網?;ヂ摼W以瀏覽器為主導的展現方式也逐漸成為定勢。當Widget進入公眾視線時,就以其獨特的展現魅力受到了人們的青睞。
微件憑借界面簡潔、表現力強、占用資源少、開發難度小等優勢,迅速躋身互聯網(包括移動互聯網,下文同)最具發展潛力的展現與分發技術,同時受到運營商、終端廠商和內容提供商重視。目前Nokia、Apple、Yahoo、Google、Microsoft、IBM和Netvibes等國外大廠商都積極參與W3C、WAA組織,推動其研究和開發。國內也有中國移動參加JIL組織,Sohu基于Netvibes創建Sohu Open Widget(SOW)等大公司的跟進。
1 Widget背景
1.1 產生背景
微件起源于蘋果電腦工程師為蘋果操作系統開發的小工具Konfabulator,然后有了Windows版本的跨平臺產品瘋狂流行和蔓延。其后被雅虎收購,成為目前比較流行的Desktop Widget之一。由于Widget一詞最早出現在Konfabulator,后雅虎的Yahoo! Widgets把其發揚光大。
1.2 應用前景
目前微件主要集中應用在PC桌面和網站上,也有部分應用在手機終端和人機交互終端。
PC桌面微件運行在個人電腦桌面上。除了雅虎的Yahoo! Widgets還有蘋果的Dashboard、微軟Windows Vista的sidebar和谷歌的Google Desktop。
Web微件運行在客戶端瀏覽器上,通過瀏覽器抽象了桌面操作系統。當瀏覽器打開含微件的網頁,微件被激活并運行。常見的有IGoogle、Netvibes、Facebook、OpenSocial等。
手機桌面微件運行在手機(通常為智能手機,運行Symbian、Windows Mobile、Android等操作系統)桌面上。隨著大屏幕智能手機的發展和普及,手機桌面微件將會成為移動互聯網的新生力量。例如中國移動的BAE手機桌面微件(移動微件)平臺,Opera Widgets的移動版本、諾基亞widsets、谷歌Android Widget、微軟Windows Mobile 6.5 Widget引擎等。
人機交互微件運行在人機交互終端上,例如電視機頂盒,多媒體電話,電子相框等。例如韓國廠商emTrace的WidgetSatation、桌上電子產品,Opera Widgets的電視機頂盒版本等。
可以預見,隨著終端多樣化和人們隨時隨地接入互聯網的需求,微件將得到更廣泛的應用,前景廣闊。目前上網本、MID和其他數碼產品,像Wii和PSP等都有引入微件的呼聲。
2 Widget介紹
2.1 概念定義
Widget(微件)是運行在客戶終端上的一種基于Widget引擎的應用程序,它可以從本地或者互聯網更新并顯示數據,目的是借助用戶享用各種應用程序和網絡服務。由于微件的發展帶有明顯的互聯網特征,W3C把微件稱為客戶側網頁應用(Client-Side Web Applications)并對Web Widget給出了定義:微件是一類能夠顯示和更新本地數據或Web數據的客戶側應用程序,并能夠打包成單一的下載包安裝到客戶端設備上。
2.2 標準草案
目前微件標準主要有W3C組織制定的Widget1.0標準和Netvibes發起的標準UWA。
W3C組織在WAF-WG組制定了有關Web Widget業務的一些標準和文件,Widgets 1.0主要包括:Widgets 1.0: The Widget Landscape(市場調查)、Requirements(設計目標、需求)、Packaging and Configuration(打包封裝和配置文件格式)、Digital Signatures(數字簽名)、APIs and Events(API和事件)、URI Scheme(URI體制)、Updates(版本和升級)。
所有基于UWA規范的widget,都能順暢用于iGoogle、Live.com、Apple Mac Dashboard、Windows Vista側欄、Opera、Yahoo!Widgets等widget平臺,也能用于個人網站或博客應用。
2.3 架構組成
Widget架構規范體系圖(圖1)的最底層是硬件層,包括了目前主流的互聯網接入設備,如手機智能設備、MID、上網本、PC等。該層的范圍主要取決于上層引擎層的跨平臺能力。
引擎層主要是Widget的運行環境,它負責微件展現以及同操作系統的溝通。微件引擎抽象了操作系統,而操作系統抽象了不同的硬件平臺,使微件有了跨平臺的能力。微件能夠使用的API與操作系統的接口的多少都取決于引擎的實現。
核心架構層是微件的架構組成,也是標準討論的重點,其中:
HTTP:超文本傳輸協議(Hypertext Transfer Protocol),從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它減少網絡傳輸,使瀏覽器更加高效,既保證正確、快速地傳輸超文本文檔,還能確定文檔哪部分和哪部分內容先顯示。
Unicode:也叫統一碼,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。微件使用統一碼作為文本的編碼。
URI:通用資源標志符(Universal Resource Identifier) 用于對資源(HTML文檔、圖像、視頻片段、程序等)進行定位。微件使用其對自身的資源進行定位。
Resources:資源,微件用到的資源統稱,包括圖片,聲音等。
DOM:文檔對象模型(Document Object Model),是一種與瀏覽器、平臺、語言無關的接口,使得你可以訪問頁面其他的標準組件。簡單來說就是把網頁文檔抽象為一個基于樹或基于對象的模型,并提供對其操作的方法。微件中可以使用DOM。
XML:可擴展標記語言(Extensible Markup Language)擴展標記語言XML是一種簡單的數據存儲語言,使用一系列簡單的標記描述數據,而這些標記可以用方便的方式建立。Xml是Internet環境中跨平臺的,依賴于內容的技術,是當前處理結構化文檔信息的有力工具。微件中文本文件絕大多數使用XML。
ECMAScript:ECMAScript是一種由歐洲計算機制造商協會(ECMA)通過ECMA-262標準化的腳本程序設計語言。這種語言在萬維網上應用廣泛,它往往被稱為JavaScript,但實際上后者是ECMA-262標準的擴展。微件中可以使用JavaScript處理交互和事件。
CSS:級聯樣式表(Cascading Style Sheets)是一種樣式表語言,用于為HTML文檔定義和布局。微件中可以使用CSS。
XMLHttpRequest:它是Ajax技術體系中最為核心的技術。是與服務器通信的方式,有同步方式和異步方式兩種。微件使用其從web服務器取回數據。
Widgets API:微件引擎提供的API,比如該微件的寬度和高度等。
HTML or Proprietary XML:超文本標記語言(HyperText Mark-up Language) 目前網絡上應用最為廣泛的語言,也是構成網頁文檔的主要語言。作為文檔呈現語言有HTML,XHTML等。微件使用其組織所要展現的內容。
Configuration Document:配置文件,記錄該微件的信息,包括名稱、作者、圖標、屬性等。標準就是規范其在不同廠商引擎對其的解析,提高移植性。
Media Type:媒體類型,表示微件可以支持的媒體類型。比如文字支持UTF-8等;圖片支持JPEG、GIF、PNG等;音頻視頻支持MIDI、MPEG等;動畫支持SVG、SWF等。
Packaging Format:打包格式,微件打包分發的格式。規定使用ZIP格式。
3 Widget簡單實現
現有微件引擎很多,且對標準遵從程度不一。如Yahoo! Widgets和Opera Widget引擎。
Yahoo!Widget后綴為widget,Windows環境默認存放在C:\\Documents and Settings\\[當前用戶名]\\My Documents\\My Widgets下。默認格式為Flat File(Yahoo!Widgets的特有格式,只能用Yahoo!Widgets的SDK轉換編輯),用SDK轉換為Folder格式可看到目錄結構:頂級是以微件名稱命名的文件夾,二級是Contents文件夾,第三級是主要文件和文件夾:Resources存放圖片和聲音文件;Source存放JavaScript和XML;*.kon文件是微件的展示組織文件,是一個XML;License.txt是協議說明文件;widget.xml是配置文件,對標準規范有對應的部分。打包后以widget為后綴的,SDK同樣支持規范規定的ZIP格式。
Yahoo! Widgets引擎的Windows版本,主要包括Microsoft.VC80.CRT(Windows下的C運行時)、WebKit.dll(開源的瀏覽器內核)、YahooWidgets.exe(微件的運行主程序)等文件和文件夾。可見該引擎以調用瀏覽器內核的方式實現微件展現。其運行主程序的進程數同微件激活運行的個數。即運行了幾個微件,任務管理器里就有幾個YahooWidgets.exe進程。
Opera是一款支持多頁面標簽式瀏覽的網絡瀏覽器,由于增加了大量網絡功能被定義為網絡套件。它支持多種操作系統、多語言,有手機版本,還提供微件支持功能,是微件引擎。一個Opera的微件是以wgt為后綴的ZIP格式打包。解壓后的目錄結構:頂級是以微件名稱命名的文件夾,二級是主要文件和文件夾:images存放圖片;script存放JavaScript;style存放css;index.html文件就是該微件的展示組織文件,是一個html;config.xml是配置文件,對標準規范有對應的部分。
Opera是瀏覽器,做微件引擎時也不能脫離瀏覽器狀態。即微件激活運行時瀏覽器必須開著。其微件以線程形式存在,不管運行幾個微件,任務管理器里只有Opera.exe一個進程。
4 展望
Widget目前的標準以W3C來說是1.0。其2.0的版本正在起草。而Netvibes的UWA是相對成熟的標準,但是其對網頁和桌面支持較好,對手機方面比較欠缺。在手機移動設備領域,Google、Microsoft、Apple等各自的標準,這些標準互不兼容,開發者不得不單獨為這些不同的平臺進行不同的開發??梢韵胂箅S著標準的完善,主流廠商對標準的兼容性不斷提高,加上其天生的易開發性帶來的商業模式上關注,微件將有更大的發展。
微件技術作為一種新穎的互聯網接入和展現技術,必將發揮其重要的作用。然而它不能代替現有的互聯網接入和展現技術,如B/S模式和Portal等。但可以與其相輔相成、相得益彰。微件技術,將是您不二的選擇!
參考文獻:
[1] http://en.wikipedia.org/wiki/Yahoo!_Widgets,Yahoo! Widgets History.
[2] http://www.w3.org/TR/widgets-land/,Widgets 1.0: The Widget Landscape.
[3] http://www.w3.org/TR/widgets-reqs/,Widgets 1.0: Requirements.
[4] http://www.w3.org/TR/widgets/,Widgets 1.0: Packaging and Configuration.
[5] http://www.w3.org/TR/widgets-digsig/,Widgets 1.0: Digital Signatures.
[6] http://www.w3.org/TR/widgets-apis/,Widgets 1.0: APIs and Events.
[7] http://www.w3.org/TR/widgets-uri/,Widgets 1.0: URI Scheme.
[8] http://www.w3.org/TR/widgets-updates/,Widgets 1.0: Updates.