自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Mobile Widget到底是個什么玩意?

移動開發(fā)
Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現(xiàn)可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發(fā)一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

Widget與移動設備

Widget是什么?

Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現(xiàn)可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發(fā)一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

從 Widget的實現(xiàn)方式上來說主要有兩種,一種是基于DHTML, JAVASCRIPT和CSS技術的Widget。另一種是基于Adobe Flash技術的Widget。目前大多數(shù)Widget實現(xiàn)還是基于前者,尤其是目前日漸流行的移動設備上的Widget技術均指Web Widget。

Widget的特點

  • 小尺寸:Widget的尺寸通常都不大,并且運行速度比較快,占用的系統(tǒng)資源也較少。
  • 形式多樣:Widget的展現(xiàn)方式可以多種多樣,可以是一個懸浮在窗口里的小圖標,可以是占用全屏的全屏應用,也可以是插入某個應用子窗口中的小程序。
  • 功能多樣:Widget應用可以提供的功能可以多種多樣(依賴Widget引擎提供的功能),如提供新聞資訊閱讀,視頻觀看,系統(tǒng)狀態(tài)監(jiān)視,天氣預報,股票信息,時鐘,聯(lián)系人管理,短信接收發(fā)送等。
  • 美觀:Widget應用設計的一般都比較漂亮,并且具有很好的用戶體驗和操作方式。
  • 個性化強:由于Widget的小尺寸和多樣的形式和功能,因此用戶可以隨意的安裝、擺放和設置Widget,達到個性化的Widget展示和使用效果。
  • 開發(fā)方便:由于大多數(shù)Widget都是基于Web技術或者Flash技術,并且這兩種技術都已經(jīng)發(fā)展成熟,提供大量的集成開發(fā)環(huán)境以及可以復用的代碼。因此,開發(fā)人員可以很快速的開發(fā)出功能強大、界面美觀的Widget應用。

Widget應用

  • 桌面電腦上的Widget
    • Yahoo Widget
    • Mac OS dashbord
    • Windows Vista側邊欄
    • Windows 7桌面小工具
  • 移動終端上的Widget
  • 個性化首頁中的Widget
    • Netvibes
    • iGoogle
  • 博客中的Widget

移動平臺上的Widget規(guī)范(Web Widget)

目前,移動平臺上支持的Widget運行環(huán)境主要遵循三套規(guī)范:W3C Widget規(guī)范、BONDI Widget規(guī)范和JIL Widget規(guī)范。

  • W3C Widget規(guī)范

該規(guī)范是由W3C組織制定,包含6個子規(guī)范,主要定義了Widget的運行時狀態(tài),打包和配置,數(shù)字簽名,自動升級,以及核心API和事件處理。

  • BONDI Widget規(guī)范

該規(guī)范由OMTP組織制定,對W3C Widget規(guī)范進行了擴充。嚴格定義了Widget的安全驗證體系,豐富了API接口。目前W3C組織考慮將BONDI規(guī)范納入到標準中。

  • JIL Widget規(guī)范

該規(guī)范是由中國移動、沃達豐、軟銀以及Verizon共同提出和定義的Widget規(guī)范。該規(guī)范目前主要是被中國移動的BEA平臺所支持。

Widget引擎

Widget引擎的作用

Widget引擎為安裝、運行、管理、升級,驗證Widget應用提供了一整套完整的框架體系。

  • 安裝

Widget的發(fā)布方式可以多種多樣,可以是基于Web頁面的發(fā)布方式也可以是基于安裝包的發(fā)布方式,因此Widget引擎需要對各種發(fā)布方式兼容,將用戶的Widget應用安裝和部署到當前的Widget運行環(huán)境中。

  • 運行

Widget應用有其自身的生命周期(初始化,運行,暫停,恢復,終止),因此Widget引擎有責任管理每個Widget應用的生命周期,在Widget不同的階段執(zhí)行Widget內(nèi)部定義的事件處理代碼。

  • 管理

Widget引擎負責像用戶提供已安裝Widget應用的管理功能,用戶可以通過Widget引擎查看當前運行的Widget運行狀態(tài),占用的系統(tǒng)資源,終止應用,運行應用以及刪除應用。

  • 升級

Widget引擎會根據(jù)Widget的配置文件定期的檢測Widget的版本,并且動態(tài)的更新Widget應用。

  • 驗證

出于安全性的考慮,Widget應用都需要進行簽名,并且需要顯示的聲明其需要使用的特殊功能接口。并且在運行時刻,Widget引擎需要對Widget調用受限接口的合法性進行驗證。

Widget引擎與瀏覽器的關系

由于Web Widget應用采用DHTML、JAVASCRIPT和CSS技術實現(xiàn),因此運行Widget需要瀏覽器引擎作為支持。但是通常的瀏覽器引擎不足以支撐 Widget的應用。比如:Widget規(guī)范中嚴格的定義了Widget的打包方式,尤其固有的配置和部署方式,通常的瀏覽器引擎是無法識別并且按照規(guī)范要求正確安裝和部署的。某些Widget規(guī)范中定義了Widget應用對設備能力的訪問,這也是通常瀏覽器引擎所不支持的。因此,如果瀏覽器需要支持某個特定Widget規(guī)范需要對瀏覽器引擎進行擴展,對Widget規(guī)范中定義的打包發(fā)布、升級安裝、安全驗證以及設備相關的API進行擴展和支持。

這里還有一類Widget不需要訪問設備功能,并且并不遵循某套特定的Widget規(guī)范,而只是以Web頁面中的一個小控件或者小程序形式出現(xiàn),該 Widget應用是不需要對瀏覽器做擴展。但由于沒有一套標準統(tǒng)一的規(guī)范標準作為支持,因此只能由該站點開發(fā)者自己去設計并且開發(fā),不具有廣泛性。

Widget引擎框架設計

這里的Widget引擎框架主要是以Android平臺上的Widget引擎的設計為基礎,所支持的標準不限(可包括W3C,BONDI,JIL規(guī)范)。

Widget引擎框架

NewImage
  • Widgets

如上圖所示,Widget表示該Widget引擎所支持的各種Widget應用,該應用采用DHTML, JAVASCRIPT, CSS技術編寫和實現(xiàn)。該Widget引擎所支持的Widget種類完全依賴于APIs Implement部分。

  • Widget Module Loader

模塊載入器的主要作用有兩個:第一,負責各個已實現(xiàn)的Widget規(guī)范API模塊的初始化。第二,負責在瀏覽器DOM樹中注冊載入的API模塊對象,以使得Widget應用中可以使用相應的接口、對象和屬性。

  • Application Management

應用程序管理模塊負責Widget應用的生命周期管理、應用程序的下載安裝,以及應用程序的刪除。應用程序管理模塊與Widget DOM對象有緊密聯(lián)系。比如:Widget應用在初始化階段為resume事件注冊了回調函數(shù),在該函數(shù)中會對暫停時的應用數(shù)據(jù)進行恢復操作。應用程序管理模塊在接收到Widget的恢復事件時,有責任調用該應用注冊的resume回調函數(shù),并且執(zhí)行其定義的恢復操作。

  • Security Management

安全管理模塊負責Widget應用的安全驗證。比如在Widget應用安裝時,安全管理模塊需要對Widget應用簽名的合法性進行驗證,并且對 Widget聲明的設備接口使用權限進行驗證。當Widget運行時,Widget應用訪問某個設備接口(比如Camera),安全管理模塊需要對該應用是否有權訪問該設備接口進行驗證。

  • APIs Implement

API實現(xiàn)包含了各個Widget引擎需要支持的Widget規(guī)范的底層實現(xiàn)。該部分的實現(xiàn)可以是純JAVA實現(xiàn)、可以是JAVASCRIPT和JAVA混合實現(xiàn)、可以是JAVA和C/C++混合實現(xiàn)、亦可以是純C/C++實現(xiàn)。

Widget引擎實現(xiàn)方式

基于WebKit引擎的擴展實現(xiàn)

該實現(xiàn)方式直接修改和擴展WebKit引擎,在引擎內(nèi)部創(chuàng)建widget的DOM對象,并且提供抽象的調用方法。除此之外,需要在WebKit引擎中實現(xiàn)對各個規(guī)范模塊的調用機制。

  • 基于JAVA語言的模塊調用

該實現(xiàn)方式需要對WebKit引擎實現(xiàn)JAVASCRIPT語言和JAVA語言之間的平滑調用機制。即Widget應用訪問widget對象的某個API接口時,WebKit引擎需要將該SCRIPING對象動態(tài)的轉換成相應的JAVA對象,并且調用其相應的方法。并且,將該JAVA方法執(zhí)行后的結果動態(tài)的轉換成JAVASCRIPT對象,并且返回給Widget應用。

采用該機制實現(xiàn)的API模塊均用可采用JAVA語言來實現(xiàn)。因此,該實現(xiàn)方式具有實現(xiàn)速度快的特點,但是也正因為與JAVA語言的緊密關系移植性不好。

  • 基于C/C++語言的模塊調用

所有的API模塊的擴展均采用C/C++語言來實現(xiàn),這類似gears的實現(xiàn)方式。引擎內(nèi)幕會將Widget應用使用的JAVASCRIPT方法動態(tài)轉換成定義的C/C++對象,并且執(zhí)行相應的方法。而后將返回結果轉換成JAVASCRIPT方法返回給Widget對象。

采用該機制實現(xiàn)的API模塊均采用C/C++語言來實現(xiàn),因此開發(fā)周期相對較長,但是具有良好的移植性。

采用WebKit引擎擴展實現(xiàn)方式,可以讓瀏覽器引擎原生的對Widget應用進行支持,但是在每次WebKit升級時,需要對修改的代碼進行合并和再發(fā)布。

基于WebKit插件的擴展實現(xiàn)

該實現(xiàn)方式基于NPAPI插件擴展技術的基礎之上。將Widget的DOM對象實現(xiàn)包含在NPAPI插件中,當瀏覽器檢測到該對象的訪問時,動態(tài)的載入該NPAPI插件,并且將所有對Widget DOM對象的訪問操作均轉發(fā)給NPAPI插件來完成。

NPAI插件的實現(xiàn)方式如WebKit引擎擴展實現(xiàn)一樣,也有JAVA和C/C++兩種實現(xiàn)方式,這里不再重復。

采用該實現(xiàn)方式的擴展無需對WebKit引擎修改,但是需要按照NPAPI規(guī)范,實現(xiàn)完整的SCRIPTING插件。

基于C/S架構的擴展實現(xiàn)

該實現(xiàn)方式采用借用了C/S設計模式的思想。在Widget引擎初始化階段會啟動一個內(nèi)部的服務,該服務會監(jiān)聽系統(tǒng)中某個端口。Widget引擎運行時,如果訪問Widget對象的某個方法時,封裝的Widget JS對象會向服務端口發(fā)送方法請求。服務端接受請求后,首先會對請求進行合法性驗證和分析,然后調用相應的接口來完成實際的操作。并且將結果以異步的方式返回給封裝的Widget JS對象,而由該對象通知Widget應用操作結果。

C/S架構的擴展實現(xiàn)也可以采用JAVA和C/C++實現(xiàn)方式,這里不再重復。

采用該方式實現(xiàn)的擴展有良好的靈活性,不同的Widget規(guī)范定義的Widget應用只需要包含相應的Widget封裝JS包即可正確運行。但是由于采用C/S模式的調用方式,因此在執(zhí)行效率上略低于直接調用的方式。

Browser&Widget

這部分對Browser的設計提出一個概念層面上的設計。如下圖所示:

NewImage
  • Table Manager

負責管理瀏覽器中各個Table頁面,每個Table頁面是一個獨立的Web頁面或者Widget應用。

  • Bookmark Manager

負責管理書簽,該書簽包括用戶收藏的網(wǎng)站URL以及喜愛的RSS頻道和文章信息。

  • RSS Manager

負責RSS頻道的訂閱、RSS新聞列表、RSS頻道退訂

  • Plugin Manager

負責管理已經(jīng)安裝的瀏覽器插件

  • Notification Manager

負責事件通知管理,比如RSS新聞數(shù)據(jù)的更新通知,瀏覽器插件的升級通知,Widget升級通知等。

  • History Manager

負責記錄當前Table的運行數(shù)據(jù),包括訪問的URL歷史,當前窗口大小位置信息,可用于當瀏覽器crash后的狀態(tài)恢復操作。

  • Download Manager

負責瀏覽器的下載管理,包括android軟件的下載、安裝,Widget軟件的下載、安裝

  • Gesture Manager

負責手勢操作的自定義操作管理。

  • Thread Manager

為了加快瀏覽器的載入效率,每個Table在一個單獨的線程中運行,因此對線程的運行狀態(tài)需要一個統(tǒng)一管理機制。

  • Skin Manager

負責Browser外觀的管理,用戶可以通過該模塊動態(tài)的給系統(tǒng)更換皮膚和顯示方式。

  • Widget Manager

負責Widget引用的下載、安裝、刪除、以及運行時環(huán)境的支持。

責任編輯:佚名 來源: 姜江的博客
點贊
收藏

51CTO技術棧公眾號