999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于XmlGlue的瀏覽器擴展技術研究

2009-04-29 00:00:00曹奇星,陳榕
電腦知識與技術 2009年35期

摘要:隨著3G時代的到來,移動瀏覽器與傳統的桌面瀏覽器在功能方面的區別越來越小。瀏覽器在移動設備上扮演著重要的角色,越來越多的應用和服務將通過瀏覽器發布。然而,與傳統的應用相比,基于瀏覽器的網絡應用缺乏本地調用的功能。該文提出了一種基于XmlGlue編程模型和CAR構件技術的方法,對開源瀏覽器引擎WebKit進行擴展。

關鍵詞:WebKit;XmlGlue;CAR構件技術

中圖分類號: TP393文獻標識碼:A文章編號:1009-3044(2009)35-9912-02

Research of Browser Extension Techniques Based on XmlGlue

CAO Qi-xing, CHEN Rong

(System Software Engineering Centre of Tongji University, Shanghai 200092, China)

Abstract: With the adoption of 3G communication technologies, web browser plays an important role on the mobile devices, and more and more applications and services will be based on browser. However, compared with traditional applications, browser-based web applications have no access to native functions. This article introduces an approach to add such capabilities to mobile browser based on XmlGlue and CAR technologies.

Key words: WebKit; XmlGlue; CAR component technology

隨著3G時代的到來,越來越多的人們開始使用移動設備訪問互聯網,瀏覽器在移動設備上也扮演著越來越重要的角色。當前市場上新出售的智能手機幾乎都預裝了網頁瀏覽器,這些移動瀏覽器與傳統的桌面瀏覽器在功能方面的區別也越來越小。Web2.0以及社交網絡的興起,更加進一步促使瀏覽器成為交付許多應用程序的首選方式, 因為它可以很容易跨操作系統進行部署并可以簡化應用程序的維護。另外, 在瀏覽器中使用的現代編程語言支持快速的應用程序設計和開發。

然而,與傳統的應用相比,基于瀏覽器的網絡應用仍有很多的不足之處。首先,基于瀏覽器的網絡應用無法訪問本地功能和服務。比如,它們不可以隨意訪問某本地文件系統、剪貼板、GPS、攝像頭、系統任務欄/通知等等。其次,因為瀏覽器內部使用了文檔對象模型(DOM)和JavaScript腳本來實現應用的大部分邏輯,完全基于瀏覽器的網絡應用可能存在效率上的問題。針對這些問題,本文提出了一種基于XmlGlue編程模型[1]和CAR構件技術的方法,對開源瀏覽器引擎WebKit[2]進行擴展。由于融合了網絡技術的簡易性和 XmlGlue編程模型的強大功能,使得可以快速地開發出易用,高效的豐富互聯網應用程序 (RIA)。

1 XmlGlue編程模型與WebKit概述

XmlGlue是由上海科泰世紀科技有限公司在其操作系統產品Elastos[3]基礎上,設計并開發的一種全新的編程模型。利用XmlGlue,可以迅速便捷地開發出外觀靚麗、功能靈活實用的Widget(小應用),非常適合做嵌入式終端(如手機)的小掛件。在功能和外觀上類似于雅虎的widget相媲美,而在代碼量和占用資源方面卻大大少于雅虎Widget。

1.1 XmlGlue編程模型簡介

Glue,作為名詞是膠水的意思,作為動詞是粘合。XmlGlue形象的指明了它在Elastos構件平臺中扮演的角色的主要特征,即粘合劑,而它所粘合的對象就是一個個構件,它的粘合可以使功能分立的構件組合成一個可以向用戶提供完整功能的應用實體。從另一方面說,由于它的存在,消除了構件間的耦合,使構件只需符合XmlGlue的接口標準,就能和其他構件協同工作[4]。

更進一步講,XmlGlue技術是一種MVC架構支持技術。用XML語言描述視圖(View),由CAR構件對應模型(Model),進行邏輯處理,而XmlGlue則是作為控制器(Controller)部分,把View、Model兩部分連接起來,從而實現界面與實現邏輯的分離。

XmlGlue編程模型中用XML標記語言實現視圖(View)部分,描述整個界面的架構。XML程序中所用到的標簽由Elastos操作系統中的視圖模塊加以支持,而這些控件都是以CAR構件技術來實現的,用戶也可以通過CAR構件技術編寫自己的標簽,運用到XML程序中來,以滿足特殊的要求。

XmlGlue編程模型中用腳本語言和Reflection部分實現控制器(Controller)部分。腳本語言嵌入在XML文件中,可以對所有的構件及構件內的資源進行操作,使得應用能夠訪問獨立于界面架構的構件,彌補XML在描述邏輯上的缺陷,實現用戶與界面的互操作。

XmlGlue編程模型用CAR構件技術實現模型(Model)。Elastos操作系統中的所有CAR構件都可以作為基于XmlGlue應用開發中的模型,也可用用戶自己編寫的CAR構件作為模型,并且,因為Elastos操作系統提供了構件的自動尋址、自動加載機制,所有用到的CAR構件模型也可以在網絡上獲得,前提是已知構件在網絡上的鏈接地址。XmlGlue編程模型的圖示如圖1。

1.2 開源瀏覽器引擎WebKit簡介

WebKit 是以 LGPL (和部分 BSD) 方式授權的開源網絡瀏覽器引擎, 此類授權適合將 WebKit 集成到商業框架中。它完全符合標準,支持與當前網絡內容兼容所需的所有功能。它完全支持 HTML 4.01、XHTML 1.1、XML、CSS 2.1、JavaScript 1.5、大部分SVG 1.2、部分 CSS 3、HTML editing、HTML canvas、AJAX、XSLT 和 XPath 1.0。

移動領域的很多重量級公司都已采用 WebKit作為其瀏覽器解決方案的首選基礎。WebKit是Apple的Safari瀏覽器、Google Android和上百萬手機用戶使用的S60瀏覽器的引擎。

2 XmlGlue編程模型和WebKit引擎的融合

XmlGlue編程模型是一種非常靈活,可定制的RIA構建技術,它充分結合了XML界面描述功能,腳本的動態性和CAR構件的計算能力。透過XmlGlue編程模型里面的控制器模塊,并結合CAR構件反射機制,我們可以實現從腳本環境直接調用本地服務的功能。另外,XmlGlue中XML編程支持的標簽(控件)包括圖形系統提供的控件標簽,這樣就能直接跟系統的原生圖像系統整合在一起。

而WebKit引擎一般通過以下兩種方式提供本地功能調用:

1) 以瀏覽器插件的形式提供本地功能調用,比如Adobe的 Flash和微軟的Silverlight技術就是以插件的形式提供本地功能擴展的。

2) 擴展JavaScript, 讓本地功能直接暴露在腳本環境當中。具體的步驟是,在事件windowObjectCleared()的處理函數中調用JavaScriptCore API 創建一個本地對象對應的腳本對象,并將其添加至腳本環境當中。這樣,就可以在腳本中直接調用本地對象的方法與屬性了。

事實上,HTML里面有個標簽,專門用來定義一個嵌入的對象,此元素允許你規定插入 HTML 文檔中的對象的數據和參數。 標簽用于包含對象,比如圖像、音頻、視頻、Java applets、ActiveX、PDF 以及 Flash。

因此,我們可以通過標簽來定義一個XmlGlue對象。

其中,屬性type定義嵌入的XmlGlue對象所對應的 MIME 類型,屬性codebase表示在何處可找到對象所需的代碼,提供一個基準 URL。

具體到WebKit的代碼,如果當前html文檔包含有object標簽,引擎會通過下面這個函數FrameLoader::loadPlugin加載相應的插件進行處理。

bool FrameLoader::loadPlugin(RenderPart* renderer, const KURL url, const String mimeType, const Vector paramNames, const Vector paramValues, bool useFallback)

函數FrameLoader::loadPlugin又會遞歸調用FrameLoaderClient:: createPlugin和EmbeddedWidget::create創建一個具體的Widget對象。最后,WebKit將該Widget對象添加到當前頁面中去。

Widget* createPlugin(const IntSize, HTMLPlugInElement*, const KURL, const Vector, const Vector, const String, bool)

EmbeddedWidget* EmbeddedWidget::create(IWebEmbeddedView* view, Element* element, HWND parentWindow, const IntSize size)

從以上分析可知,只要我們在函數FrameLoaderClient:: createPlugin的具體實現當中去判斷MIME參數是否為XmlGlue,然后做相應的處理就行了。具體代碼如下:

Widget* WebFrameLoaderClient::createPlugin(const IntSize pluginSize, HTMLPlugInElement* element, const KURL url, const Vector paramNames, const Vector paramValues, const String mimeType, bool loadManually)

{ Widget *widget=0;

if (classid==”application/x-xmlglue-plugin”)

widget = new XmlGlue::LoadWidget(...);

return widget; }

通過這種形式,我們可以將XmlGlue編程模型與WebKit有機的結合起來,比如可以將原生的圖像系統控件嵌入到網頁內,包括menu、comboBox、listBox、listView、tabControl,以及Form,Panel等容器都可以無縫的集成到網頁當中。另外,各種本地功能和服務也可以封裝成基于XmlGlue的widget,以便在網絡應用中使用這些功能。

3 結束語

本文主要闡述了基于XmlGlue編程模型的瀏覽器擴展技術,并結合開源瀏覽器引擎驗證了該技術的可行性。該方法融合了網絡技術的簡易性和 XmlGlue編程模型的強大功能,使得可以快速地開發出易用,高效的豐富互聯網應用程序。

參考文獻:

[1] 黎瑩.陳榕,基于XML-Glue的Widget的開發與研究[J].計算機技術與發展,2007(10).

[2] The WebKit open source project[EB/OL].http://webkit.org/.

[3] Elastos資料大全[M].上海:上海科泰世紀科技有限公司,2009.

[4] 陳榕,劉藝平.技術報告:基于構件、中間件的因特網操作系統及跨操作系統的構件、中間件運行平臺(863課題技術鑒定文件)[R].2003.

主站蜘蛛池模板: 欧美不卡在线视频| 久久午夜夜伦鲁鲁片不卡| 国产精品中文免费福利| 中文字幕啪啪| 亚洲成人播放| 国产精品亚洲精品爽爽| 浮力影院国产第一页| 人妻丰满熟妇av五码区| 国产日韩久久久久无码精品| 国产xxxxx免费视频| 亚洲日韩欧美在线观看| 日日拍夜夜操| a色毛片免费视频| 福利国产微拍广场一区视频在线| 欧美狠狠干| 狠狠久久综合伊人不卡| 51国产偷自视频区视频手机观看| 在线欧美国产| 欧美日韩一区二区三区四区在线观看 | 亚洲一区国色天香| 亚欧乱色视频网站大全| 国产成人一区在线播放| 亚洲,国产,日韩,综合一区| 欧美一区二区精品久久久| 亚洲 欧美 日韩综合一区| 天堂岛国av无码免费无禁网站| 2020精品极品国产色在线观看 | 三级视频中文字幕| 国产精品分类视频分类一区| 国产午夜精品鲁丝片| 亚洲天堂免费| 成年人午夜免费视频| 日韩精品一区二区三区swag| 欧美色综合网站| 在线观看亚洲天堂| 青青青国产视频手机| 国产精品性| 狠狠ⅴ日韩v欧美v天堂| 欧美性猛交一区二区三区| av在线无码浏览| 中文字幕无线码一区| 青青青视频91在线 | 久久精品国产免费观看频道| 91毛片网| 欧美亚洲一区二区三区在线| 波多野结衣国产精品| 欧美视频免费一区二区三区| 最新国产精品第1页| 欧美国产综合视频| 91最新精品视频发布页| 亚洲第一黄色网址| 青青久视频| 无码又爽又刺激的高潮视频| 婷婷色在线视频| 特级做a爰片毛片免费69| 在线日韩日本国产亚洲| 成人国产小视频| 精品少妇人妻一区二区| 在线观看国产黄色| 99视频在线免费看| 国产亚洲精品自在线| 国产精品久久久精品三级| 中文字幕亚洲乱码熟女1区2区| 91免费国产高清观看| 波多野结衣二区| 国产乱子精品一区二区在线观看| 国产自在线播放| 成年A级毛片| 2020国产精品视频| 99这里只有精品在线| 无码中文字幕精品推荐| 欧美区一区| 亚洲性影院| 国产一级视频久久| 国产玖玖玖精品视频| 一本色道久久88综合日韩精品| 国产极品美女在线播放| 一级毛片免费观看不卡视频| 国产玖玖玖精品视频| 中字无码av在线电影| 欧美视频在线播放观看免费福利资源| 国产毛片久久国产|