簡介
本文詳細(xì)解釋了 Opera 蜻蜓(Dragonfly)的總體架構(gòu),其中各個組件的作用和聯(lián)系。
- 架構(gòu)概覽
- 調(diào)試方法
- 本機(jī)
- 遠(yuǎn)程
- 組件
- 運(yùn)行時
- 調(diào)試主機(jī)
- Scope 模塊
- Scope 協(xié)議
- 代理
- 調(diào)試客戶端
架構(gòu)概覽
Opera 蜻蜓(Dragonfly)是 Opera 軟件公司提供的開發(fā)工具,它的架構(gòu)使它既可以在平面電腦運(yùn)行,也可以在手機(jī)等移動設(shè)備上運(yùn)行。
一個 Scope 模塊將傳遞出運(yùn)行時的信息, 比如被調(diào)試 Opera 實(shí)例中的網(wǎng)頁和應(yīng)用。 這個實(shí)例作為調(diào)試的主機(jī),為客戶端提供信息。主機(jī)和客戶端之間數(shù)據(jù)相互傳輸使用 Scope 協(xié)議規(guī)范和定義。
為了解決潛在的防火墻問題,一個代理會用來協(xié)調(diào)處理瀏覽器和調(diào)試器間的信息傳遞溝通。一個具體的應(yīng)用實(shí)例是使用普通桌面電腦調(diào)試一個運(yùn)行在手機(jī)上網(wǎng)頁或者應(yīng)用。
而客戶端,如調(diào)試器,可以將信息視覺化并允許用戶操作運(yùn)行時環(huán)境。
主機(jī)和客戶端可以運(yùn)行在不同的設(shè)備上,而代理可以運(yùn)行在任何兩者中任一實(shí)例,也可以在單獨(dú)服務(wù)器運(yùn)行。
調(diào)試方法
主要有兩種調(diào)試方法: 本機(jī):Scope,代理和調(diào)試器運(yùn)行在同一個 Opera 實(shí)例中。 遠(yuǎn)程:Scope 和調(diào)試器運(yùn)行在兩個不同的 Opera 實(shí)例上,比如,兩個不同的設(shè)備上。而代理可以運(yùn)行在兩實(shí)例之一,也可以在另外的獨(dú)立計算機(jī)上運(yùn)行。
本機(jī)
這是最常用和最典型的方法。開發(fā)者們正在開發(fā)網(wǎng)絡(luò)應(yīng)用,它可以正常運(yùn)行于 Opera 瀏覽器。該調(diào)試器運(yùn)行于相同實(shí)例中,顯示在一個獨(dú)立窗口或面板。
在這種情況下,調(diào)試主機(jī),代理和客戶端運(yùn)行于同一個瀏覽器實(shí)例。Opera 選擇一個隨機(jī)端口運(yùn)行代理,Scope 模塊和調(diào)試器會自動連接它。
遠(yuǎn)程
這個方法的一種應(yīng)用是可以調(diào)試手機(jī)上的網(wǎng)頁或應(yīng)用。手機(jī)一般屏幕很小,開發(fā)也很受限制,因此用桌面電腦來調(diào)試是一種方便的做法。
另一種可能性是在同一個設(shè)備上的一個 Opera 實(shí)例調(diào)試另一個 Opera 實(shí)例,這在調(diào)試實(shí)例瀕臨崩潰的時候非常有用。
遠(yuǎn)程調(diào)試方法可以分解為兩種用法: 代理在兩實(shí)例之一運(yùn)行。 代理獨(dú)立于實(shí)例運(yùn)行,比如運(yùn)行在公共服務(wù)器上。
第二種方法可以運(yùn)用在,被調(diào)試實(shí)例和調(diào)試器隔防火墻運(yùn)行的情況。
組件
此架構(gòu)由下列組件構(gòu)成:
- 運(yùn)行時
- 調(diào)試主機(jī)
- Scope 模塊
- Scope 協(xié)議
- 代理
- 調(diào)試客戶端
每個 ECMAScript 環(huán)境都是一個單獨(dú)的運(yùn)行時。每個 HTML 文檔也都關(guān)聯(lián)一個獨(dú)立的運(yùn)行時?蚣芎 iframe 中的文檔也有自己的運(yùn)行時。
調(diào)試主機(jī)
調(diào)試主機(jī)可以是任何啟用了 Scope 模塊并且連接到代理的 Opera 實(shí)例。它可能包含多個運(yùn)行時。
Scope 模塊
Scope 模塊是 Opera 程序的一部分。一旦啟用,模塊將向代理 URL 建立一個 socket 連接并檢測調(diào)試主機(jī)上的任何運(yùn)行時。之后它會將信息發(fā)送給調(diào)試器。它也會對調(diào)試器的特定命令作出響應(yīng),比如從選定節(jié)點(diǎn)下載 DOM。
Scope 協(xié)議
Scope 協(xié)議是一套用來在主機(jī)和客戶端之間交換關(guān)于運(yùn)行時信息的規(guī)則和格式。實(shí)例包括從運(yùn)行時得到 DOM 文檔結(jié)構(gòu),或者計算得到的樣式集合。
Scope 協(xié)議仍在開發(fā)之中。一旦完成,它將被完全公開。之后其它廠商或開發(fā)者可以創(chuàng)建自己的調(diào)試客戶端并將它們整合到程序中,如 IDE (例如 Aptana 或 Eclipse)。使用此 scope 協(xié)議,此類客戶端可以收集到一個 Opera 瀏覽器的運(yùn)行時信息。
代理
代理負(fù)責(zé)在瀏覽器和調(diào)試器之間中轉(zhuǎn)信息。在遠(yuǎn)程調(diào)試方法中它非常重要,即調(diào)試主機(jī)和客戶端不在同一個計算機(jī)上。
Opera 運(yùn)行調(diào)試器的實(shí)例會提供一個內(nèi)置的代理,但代理也可以運(yùn)行在一個公共服務(wù)器上。這樣,被調(diào)試實(shí)例和調(diào)試器可以均在防火墻之后。
怎樣將主機(jī)和客戶端連接到代理,請參見《Opera 蜻蜓簡介》。
調(diào)試客戶端
調(diào)試器即為客戶端,它通過代理連接到調(diào)試主機(jī)的 scope 模塊。它會接收到該實(shí)例的運(yùn)行時信息。調(diào)試器將運(yùn)行時信息可視化,允許用戶修改。它通過 Scope 協(xié)議向 Scope 模塊回送請求以實(shí)現(xiàn)其功能。
目前調(diào)試器的實(shí)現(xiàn)完全基于網(wǎng)絡(luò)技術(shù):HTML/XML,CSS 以及 JavaScript。
點(diǎn)擊放大
點(diǎn)擊放大
本文鏈接:http://m.95time.cn/tech/site/2008/5823.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|