欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用交互圖像優(yōu)化軟件應(yīng)用用戶界面性能的制作方法

文檔序號:11322926閱讀:354來源:國知局
使用交互圖像優(yōu)化軟件應(yīng)用用戶界面性能的制造方法與工藝



背景技術(shù):

在客戶端-服務(wù)器軟件應(yīng)用環(huán)境中,軟件應(yīng)用用戶界面(ui)典型地受困于不良性能,因為ui的標準服務(wù)器側(cè)或者客戶端側(cè)呈現(xiàn)作為用于增加的用戶體驗的折衷而影響性能。例如,在服務(wù)器側(cè)呈現(xiàn)中,從服務(wù)器發(fā)送要在客戶端上顯示的圖像需要高網(wǎng)絡(luò)帶寬,顯示由于用于減少帶寬要求的圖像壓縮技術(shù)導(dǎo)致的偽像,且可能導(dǎo)致影響交互性的網(wǎng)絡(luò)滯后。服務(wù)器側(cè)呈現(xiàn)提供低保真度的用戶體驗,高交互的ui由于網(wǎng)絡(luò)滯后而幾乎不可用。另一方面,在客戶端側(cè)呈現(xiàn)中,數(shù)據(jù)和具體的ui呈現(xiàn)指令從服務(wù)器發(fā)送到客戶端。客戶端然后解釋該呈現(xiàn)指令并生成ui??蛻舳藗?cè)呈現(xiàn)方法的不利方面是需要傳送到客戶端以例如在瀏覽器中實現(xiàn)ui的呈現(xiàn)的大量數(shù)據(jù)。典型地,全部需要的庫在應(yīng)用啟動自動地提供(對于很少地使用或者第一次使用的應(yīng)用是麻煩的,例如,因為庫可能不在瀏覽器高速緩存中且必須被下載,等等),或者按需提供(這導(dǎo)致用于加載需要的庫部分的額外的網(wǎng)絡(luò)往返,其對ui性能具有負面影響)。ui的快速呈現(xiàn)可能需要高端客戶端。舊的或者不是很強大的客戶端裝置可能導(dǎo)致不良的用戶體驗并迫使開發(fā)者專注于用于各種客戶端類型、版本等的多個ui版本,耗時的和昂貴的預(yù)期。另外,ui的客戶端側(cè)呈現(xiàn)典型地廣泛使用客戶端cpu,這可能導(dǎo)致客戶端裝置上較高的電池消耗,且因此導(dǎo)致較短的總體運行時間。



技術(shù)實現(xiàn)要素:

本公開涉及優(yōu)化軟件應(yīng)用用戶界面性能。

用戶界面(ui)呈現(xiàn)為用于在客戶端計算裝置上顯示的圖像,且生成描述ui的交互元素而生成的ui描述符。圖像被壓縮為壓縮圖像格式。壓縮圖像和ui描述符被傳送到客戶端計算裝置,其中使用壓縮圖像和ui描述符呈現(xiàn)ui。從客戶端計算裝置接收用于動態(tài)地生成的交互元素的請求,該請求基于在呈現(xiàn)的ui上接收的交互事件并與ui描述符中描述的ui的交互元素相關(guān)聯(lián)。動態(tài)地生成的交互元素被發(fā)送到客戶端計算裝置,該動態(tài)地生成的交互元素配置為在ui上可見和接受輸入。

一些實現(xiàn)可以包括相應(yīng)的計算機系統(tǒng)、設(shè)備和在一個或多個計算機存儲裝置上記錄的計算機程序,每個配置為執(zhí)行方法的動作。一個或多個計算機的系統(tǒng)可以配置為依靠具有在系統(tǒng)上安裝的軟件、固件、硬件或者軟件、固件或者硬件的組合而執(zhí)行特定的操作或者動作,該軟件、固件或者硬件或者其組合在操作中使得系統(tǒng)執(zhí)行動作。一個或多個計算機程序可以配置為依靠包括當(dāng)由數(shù)據(jù)處理設(shè)備執(zhí)行時使得設(shè)備執(zhí)行動作的指令而執(zhí)行特定的操作或者動作。

例如,在一個實現(xiàn)中,計算機實現(xiàn)的方法包括:將用于在客戶端計算裝置上顯示的用戶界面(ui)呈現(xiàn)為圖像;生成描述ui的交互元素的ui描述符;將圖像壓縮為壓縮圖像格式的壓縮圖像;將壓縮圖像和ui描述符傳送到客戶端計算裝置,在該客戶端計算裝置,使用壓縮圖像和ui描述符呈現(xiàn)ui;從客戶端計算裝置接收用于動態(tài)地生成的交互元素的請求,該請求基于在呈現(xiàn)的ui上接收的交互事件并與ui描述符中描述的ui的交互元素相關(guān)聯(lián);和將動態(tài)地生成的交互元素發(fā)送到客戶端計算裝置,該動態(tài)地生成的交互元素配置為在ui上可見和接受輸入。

前述和其它實現(xiàn)每個可以可選地包括單獨或者組合的一個或多個以下特征:

第一方面,可與一般實現(xiàn)組合,其中,圖像是位圖圖像且壓縮圖像格式是png。

第二方面,可與一般實現(xiàn)組合,包括將壓縮圖像和ui描述符封裝到容器中。

第三方面,可與一般實現(xiàn)組合,其中,容器是顧客mime類型、二進制大對象(blob)或者擴展圖像格式之一。

第四方面,可與一般實現(xiàn)組合,包括解封容器以獲得壓縮圖像和ui描述符。

第五方面,可與一般實現(xiàn)組合,其中,壓縮圖像和ui描述符被順序地或者并行地作為單獨的消息傳送到客戶端計算裝置。

第六方面,可與一般實現(xiàn)組合,包括動態(tài)地生成所請求的交互元素。

本說明書中描述的主題可以以具體實施方式實現(xiàn)從而獲得一個或多個以下優(yōu)點。首先,經(jīng)服務(wù)器側(cè)呈現(xiàn),所描述的主題允許更低帶寬網(wǎng)絡(luò)傳輸,在客戶端呈現(xiàn)的用戶界面(ui)中很少到?jīng)]有人工因素,低滯后和高交互性。第二,經(jīng)客戶端側(cè)呈現(xiàn),所描述的主題允許沒有初始高帶寬網(wǎng)絡(luò)需要,來自低端客戶端計算裝置的高性能和客戶端計算裝置上的快速的ui呈現(xiàn)/低資源消耗。第三,所描述的主題的描述的增強實現(xiàn)可以允許更好性能,因為僅需要啟動、執(zhí)行一個網(wǎng)絡(luò)往返和處理的結(jié)果;在客戶端和服務(wù)器兩者啟動和處理請求的更少的編碼;對于用作客戶端的移動裝置的更少的資源消耗且因此更長的電池壽命;和對于具有低帶寬的網(wǎng)絡(luò)的更好性能。第四,由于請求/獲得數(shù)據(jù)的每個附加順序網(wǎng)絡(luò)往返添加到總響應(yīng)時間,所以所描述的增強實現(xiàn)的單一網(wǎng)絡(luò)往返由于等待時間僅影響總響應(yīng)時間一次。其他優(yōu)點將是對本領(lǐng)域技術(shù)人員顯然的。

本說明書的主題的一個或多個實現(xiàn)的細節(jié)在附圖和以下說明中提到。本主題的其他特征、方面和優(yōu)點將從說明書、附圖和權(quán)利要求變得明顯。

附圖說明

圖1a是圖示根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例性硬件/軟件架構(gòu)的框圖。

圖1b是圖示根據(jù)實現(xiàn)的用于在客戶端和服務(wù)器中的每一個上使用修改的模型-視圖-控制器(mvc)模型來優(yōu)化軟件應(yīng)用用戶界面性能的替代的示例性硬件/軟件架構(gòu)的框圖。

圖2a圖示根據(jù)實現(xiàn)的擴展有簽名部分以保存所描述的ui描述符的示例圖像格式。

圖2b圖示根據(jù)實現(xiàn)的用于如圖2a描述的數(shù)據(jù)大塊的示例結(jié)構(gòu)。

圖3是根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例方法的流程圖。

圖4是根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例增強方法的流程圖。

圖5是根據(jù)實現(xiàn)的用于實現(xiàn)所描述的主題的示例性計算機的框圖。

各個附圖中相同的附圖標記和指定指示相同的元件。

具體實施方式

呈現(xiàn)以下詳細說明使得本領(lǐng)域技術(shù)人員能夠做出、使用和/或?qū)嵺`所公開的主題,且在一個或多個特定的實現(xiàn)的上下文中提供。對所公開的實現(xiàn)的各種修改將是對本領(lǐng)域技術(shù)人員容易顯然的,且在這里定義的一般原理可以應(yīng)用于其他實現(xiàn)和應(yīng)用而不脫離本公開的范圍。因此,本公開不意在限于所描述和/或圖示的實現(xiàn),而是要根據(jù)符合在這里公開的原理和特征的最寬范圍。

在客戶端-服務(wù)器軟件應(yīng)用環(huán)境中,軟件應(yīng)用用戶界面(ui)典型地受困于不良性能,因為ui的標準服務(wù)器側(cè)或者客戶端側(cè)呈現(xiàn)作為用于增加的用戶體驗的折衷而影響性能。服務(wù)器側(cè)和客戶端側(cè)呈現(xiàn)中的每一個遭受可能影響客戶端計算裝置上用戶的用戶界面體驗的問題。

例如,在服務(wù)器側(cè)呈現(xiàn)中,從服務(wù)器發(fā)送要在客戶端上顯示的圖像需要高網(wǎng)絡(luò)帶寬,顯示由于用于減少帶寬要求的圖像壓縮技術(shù)導(dǎo)致的偽像,且可能導(dǎo)致影響交互性的網(wǎng)絡(luò)滯后。具體來說,在其最極端的形式中,服務(wù)器側(cè)呈現(xiàn)方法生成發(fā)送到客戶端以呈現(xiàn)給用戶的在服務(wù)器的完全圖像(靜態(tài)的或者視頻)。因此,該方法具有高帶寬需要。較不極端的形式傳送壓縮圖像或者壓縮視頻流。示例是使用比如mpeg壓縮的機制的視頻流服務(wù)(例如,netflix或者hulu)。另一選項是僅傳送ui圖像的改變的部分(例如,由citrix和lynx選擇的方法)。無論選擇的方法如何,帶寬要求都相當(dāng)高,且產(chǎn)生的ui圖像可能展現(xiàn)例如由于“有損”圖像壓縮技術(shù)及其他服務(wù)器側(cè)呈現(xiàn)因素導(dǎo)致的各種視覺偽像。另外,預(yù)期傳送的圖像的呈現(xiàn)中的滯后,這導(dǎo)致不良交互性。總的來說,服務(wù)器側(cè)呈現(xiàn)提供低保真的用戶體驗;高度交互的ui可能由于網(wǎng)絡(luò)滯后而幾乎不可用。

另一方面,在客戶端側(cè)呈現(xiàn)中,數(shù)據(jù)和具體的ui呈現(xiàn)指令從服務(wù)器發(fā)送到客戶端??蛻舳巳缓蠼忉屧摮尸F(xiàn)指令并生成ui。該類別的一個代表是x-windows系統(tǒng),其中,服務(wù)器發(fā)送單獨的繪圖命令到終端,終端逐行、逐像素和逐詞地生成ui。在其他方法(例如,sapui5)中,呈現(xiàn)代碼而不是呈現(xiàn)指令可以被發(fā)送到客戶端。在該方法中,在客戶端的java腳本和css庫處理呈現(xiàn)并讀取相當(dāng)小的ui描述并根據(jù)該描述呈現(xiàn)ui元素。另外,該庫從服務(wù)器讀取要在ui元素中顯示的數(shù)據(jù)并呈現(xiàn)它。最終,java腳本庫在客戶端處理大部分用戶交互。

客戶端側(cè)呈現(xiàn)方法的不利方面是需要傳送到客戶端以例如在客戶端上執(zhí)行的瀏覽器應(yīng)用中實現(xiàn)ui的呈現(xiàn)的大量數(shù)據(jù)。典型地,所有需要的庫在應(yīng)用啟動時自動地提供,這對于很少使用或者第一次使用的應(yīng)用是麻煩的。例如,在該情景中,庫可能不在瀏覽器高速緩存中且必須被下載,等等。在一些實現(xiàn)中,下載要求可能取決于網(wǎng)絡(luò)帶寬而引入多達十五秒的初始響應(yīng)時間。在很少使用的應(yīng)用的情況下,庫可以從在使用之間從瀏覽器高速緩存清除且可能不得不重新加載。在一些移動裝置(例如,appleiphone4s和更老的其他智能裝置等)中,該情況可能甚至更糟,因為這些裝置可能具有基于存儲器的高速緩存,該基于存儲器的高速緩存當(dāng)瀏覽器通過使用被推入后臺中時被清除。因此,每次使得瀏覽器到前臺時都需要重新加載庫。

在啟動時加載所有庫的替代是按需加載它們。這里的缺點是用于加載需要的庫部分的額外的網(wǎng)絡(luò)往返,其具有關(guān)于ui性能的負面影響。另外,ui的快速呈現(xiàn)可能需要高端客戶端。舊的或者不是很強大的客戶端裝置可能導(dǎo)致不良的用戶體驗并迫使開發(fā)者專注于用于各種客戶端類型、版本等的多個ui版本;耗時的和昂貴的預(yù)期。另外,ui的客戶端側(cè)呈現(xiàn)典型地廣泛使用客戶端cpu,這可能導(dǎo)致客戶端裝置上較高的電池消耗,且因此導(dǎo)致較短的總體運行時間。

需要的是僅以相對于用戶體驗的微小折中來改進客戶端-服務(wù)器ui性能的方式。本公開描述了通過服務(wù)器側(cè)呈現(xiàn)和客戶端側(cè)交互性之間的平衡來優(yōu)化軟件應(yīng)用用戶界面性能。所描述的主題既不是純粹的服務(wù)器側(cè)呈現(xiàn)方法,也不僅是客戶端側(cè)的呈現(xiàn)方法。而是,所描述的方法組合了服務(wù)器側(cè)和客戶端側(cè)呈現(xiàn)以實現(xiàn)優(yōu)化性能而不犧牲流暢的用戶體驗。

如以下將更加具體地描述的,對服務(wù)器側(cè)/客戶端側(cè)呈現(xiàn)技術(shù)補救或者至少減輕上述不利方面的基本思路是在服務(wù)器執(zhí)行ui的大部分位圖呈現(xiàn),同時允許由客戶端處理用戶交互性。在一些實現(xiàn)中,所描述的主題可以使用標準瀏覽器技術(shù)實現(xiàn);即,表示ui的圖像和jsonui描述符被傳送到瀏覽器。圖像表示對用戶示出的ui,同時ui描述符描述與ui相關(guān)聯(lián)的交互區(qū)域。如本領(lǐng)域技術(shù)人員將理解的,所描述的主題也可以在基于云的計算環(huán)境中實現(xiàn)。

并行網(wǎng)絡(luò)傳輸實現(xiàn)

考慮讀取包括三個ui元素(即文本(“在這里打字并點擊ok”)、輸入字段和“ok按鈕”)的第一屏幕上的用戶輸入的簡單示例應(yīng)用ui。當(dāng)用戶在他們的輸入中完成打字時,他們在ok按鈕上點擊以導(dǎo)航到第二屏幕。該第二屏幕示出了用戶在第一屏幕上鍵入的信息。

當(dāng)實現(xiàn)符合以下所描述的主題的典型實現(xiàn)的該示例應(yīng)用ui時,服務(wù)器可以將整個ui呈現(xiàn)為圖像,比如位圖或者其他圖像格式。服務(wù)器然后壓縮圖像。在一些實現(xiàn)中,壓縮可以是無損圖像格式(例如,png或者其他無損圖像格式)。另外,服務(wù)器用ui描述符創(chuàng)建json文件,比如:

如可以看到的,ui僅包括兩個交互元素,即輸入字段和ok按鈕,因為“在這里打字并點擊ok”文本不是交互的,且在該簡化的示例中,不需要文本是交互的。

在典型的實現(xiàn)中,ui描述符可以是java腳本對象,其如下組織:

●它包括作為ui的唯一標識符的設(shè)置為“inputscreen”的值的特性“name”,和描述屏幕的類型的特性類型(“root”)。

●接下來兩個特性寬度和高度定義所描述的png文件中包括的上述ui位圖的大小,

●特性“area”是java腳本對象的陣列,每個交互用戶元素一個。例如,在該示例中,存在用于輸入字段的一個陣列元素,和用于ok按鈕的一個陣列元素。

●陣列“area”的第一特性描述輸入字段,如由“type”特性“input-field”指示的。

○特性名稱包括用于輸入字段(“textinput”)的唯一名稱,同時左側(cè)、頂部、寬度和高度特性描述輸入字段的位置和尺寸。

○特性“value”最終包括輸入字段的默認值。這里,默認值是空字符串。

○陣列“area”的第二元素再次通過提供對于輸入字段的類型(“button”)、唯一名稱(“okbutton”)、位置和尺寸,來描述ok按鈕。

○與輸入字段對比,不存在有值特性,因為按鈕的默認值沒有意義。而是,代替地存在“target”特性,其定義如果點擊按鈕則采取的動作。

在將png和json文件傳送到客戶端之后,客戶端典型地根據(jù)以下方法進行:

1)客戶端創(chuàng)建圖像映射:

a.迭代ui描述符中“area”陣列特性的元素以創(chuàng)建用于圖像映射的交互區(qū)域。

b.創(chuàng)建用于圖像映射的maphtml元素。

2)使得圖像映射在客戶端上可見。

例如,類似于以下的functionshowimage()可用于執(zhí)行步驟1和2:

010functionshowimage(context,descriptor,buffer){

020

030vard=document.createelement("div");

040vari=this.createimage(context.name,buffer);

050varm=this.createareamap(context,descriptor,d);

060

070i.usemap="#"+m.name;

080i.ismap=true;

090

100d.appendchild(i);

110d.appendchild(m);

120

130varb=document.getelementbyid("base");

140b.appendchild(d);

150

160return;

170

180}

在典型實現(xiàn)中,行040的函數(shù)createimage()可用于根據(jù)其接收的png文件創(chuàng)建htmlimg元素。然后,行050的函數(shù)createareamap()可用于創(chuàng)建用于交互ui元素的htmlmap和area元素。然后在行070和080圖像元素升級到的圖像映射。其余函數(shù)(包括行030)用于使得圖像可見,其中圖像和映射兩者被添加到新創(chuàng)建的htmldiv元素,其然后附加到dom。將其附加到dom使得div及其內(nèi)容可見(例如,在行130訪問的基本div元素)。

函數(shù)createimage(),例如:

700functioncreateimage(name,buffer){

710

720vari=document.createelement("img");

730varc=window.url||window.webkiturl;

740varu=c.createobjecturl(buffer);

750

760i.alt=name;

770i.src=u;

780

790returni;

800

810}

使用默認方法來將由瀏覽器加載的二進制文件轉(zhuǎn)換為htmlimg元素:img元素在行720動態(tài)地創(chuàng)建,在行730以瀏覽器依賴的方式選擇轉(zhuǎn)換需要的對象,且在行740通過函數(shù)createobjecturl()的調(diào)用將傳送的文件的內(nèi)容轉(zhuǎn)換。當(dāng)在行730創(chuàng)建的url分配給img元素時,發(fā)生實際的轉(zhuǎn)換。

函數(shù)createareamap(),例如:

該函數(shù)首先在行210創(chuàng)建htmlmap元素。接下來,它循環(huán)“descriptor”中的“area”陣列的所有元素。由行230到430構(gòu)成的for-loop的塊由三部分構(gòu)成:

●部分1(行230到290):“area”陣列中的每個條目創(chuàng)建htmlarea元素。它以它的名稱、形狀、位置和尺寸配置每個area元素。使用“area”的“cord”特性設(shè)置位置和尺寸。然后,來自“area”和“descriptor”的一些附加數(shù)據(jù)作為java腳本對象附加到area元素(例如,參見行280到290)。該“context”對象僅是用于之后將用于處理用戶交互的一些特性的容器。它不具有任何方法。它的使用將在文本中后面部分變得清楚。

●部分2(行300到410):定義新創(chuàng)建的area的交互行為。首先,在行300,將空的java腳本聲明作為“href”特性添加到area。在下一步驟中,onclick()句柄被添加到area。組合地,href特性和onclick()句柄使得area是圖像映射中的可點擊元素。對于類型“button”的area,onclick()句柄調(diào)用具有作為變元被點擊的area元素的“context”特性的函數(shù)navigate()(例如,參見行320到340)。如將在之后看到的,方法navigate()處理到應(yīng)用中的某些其它屏幕的導(dǎo)航。對于輸入字段(類型“input-field”),首先在area的上下文中存儲輸入字段的值,如可以在行360中看到的。然后,添加onclick()句柄。輸入字段的onclick()句柄調(diào)用函數(shù)edit()。在行390中調(diào)用edit()的變元是輸入字段的容器、輸入字段值和點擊的area的位置和尺寸。容器是將成為函數(shù)edit()中輸入字段的父類的htmldiv元素。當(dāng)創(chuàng)建area時,傳遞到edit()的所有變元存儲在area的上下文中(例如,參見部分1,行280和290)。

●部分3僅由行420組成。這里新創(chuàng)建的area元素被添加到在行210創(chuàng)建的map元素。

函數(shù)edit(),例如:

500functionedit(container,value,left,top,width,height){

510

520vari=document.createelement("input");

530i.id="inputfield";

540i.value=value;

550

560vars=i.style;

570s.position="absolute";

580s.left=left;

590s.top=top;

600s.width=width;

610s.height=height;

620

630container.appendchild(i);

640

650i.focus();

660

670return;

680

690}

表明在實現(xiàn)中可以怎樣處理ui上的交互。當(dāng)用戶點擊在表示輸入字段的圖像映射中的area上時,調(diào)用函數(shù)edit()。在該情況下,動態(tài)地創(chuàng)建html“input”元素,且分配輸入字段的值(例如,參見行520到540)。input元素然后適當(dāng)?shù)囟ㄎ辉谄聊簧?例如,參見行560到610)并附加到dom(行630)以使得其可見。最終,在輸入字段上設(shè)置焦點(行650)以示出光標和使能用戶輸入。

在典型實現(xiàn)中,存在至少兩個方式來在用戶已經(jīng)完成編輯之后檢索輸入字段的值:或者在函數(shù)createareamap()的部分2中添加onblur()句柄(以這種方式,無論何時輸入字段失去焦點都調(diào)用onblur()句柄函數(shù)),否則,在從屏幕導(dǎo)航離開之前,可以由某個其它函數(shù)收集所有創(chuàng)建的輸入字段的值。

在函數(shù)createareamap()中,典型地當(dāng)用戶點擊在ok按鈕上時調(diào)用函數(shù)navigate()。注意到用戶點擊的area元素的上下文作為變元傳遞到navigate()?,F(xiàn)在應(yīng)用被認為顯示第二屏幕。

在典型實現(xiàn)中,函數(shù)navigate(),例如:

900functionnavigate(context){

910

920window.context=context;

930window.descriptor=undefined;

940window.image=undefined;

950this.senddatarequest(context.target);

960this.sendimagerequest(context.target);

970

980return;

990}

借助于三個其他函數(shù)(例如,senddatarequest()、sendimagerequest()和showimage())實現(xiàn)屏幕改變。函數(shù)navigate()典型地同步執(zhí)行其代碼并通過調(diào)用每個啟動異步請求的函數(shù)senddatarequest()和sendimagerequest()來觸發(fā)兩個異步請求。在典型實現(xiàn)中,senddatarequest()或者sendimagerequest()可以調(diào)用函數(shù)showimage()(上面描述的)。類似于navigate(),showimage()典型地同步執(zhí)行和基于ui描述符中包括的信息而啟動轉(zhuǎn)為圖像映射的圖像的顯示。

在函數(shù)navigate()中,參數(shù)“context”的值存儲在全局變量“context”中(例如,參見行920)。需要全局變量來在對兩個異步請求的響應(yīng)到達之后訪問上下文。接下來,在行930和940,復(fù)位兩個全局變量,即“descriptor”和“image”。這些變量由senddatarequest()和sendimagerequest()使用以保證已經(jīng)加載ui描述符和圖像兩者。這是調(diào)用showimage()的先決條件。最終,navigate()調(diào)用senddatarequest()和sendimagerequest()來加載下一屏幕的ui描述符和圖像。兩個函數(shù)調(diào)用都具有上下文的“target”特性作為變元。“target”特性是可以由服務(wù)器使用以標識下一屏幕所需需要的數(shù)據(jù)的唯一標識符。

兩個函數(shù)senddatarequest()和sendimagerequest()分別加載下一屏幕的ui描述符和圖像。它們在結(jié)構(gòu)上非常類似,例如:

在函數(shù)sendimagerequest()的行1020,創(chuàng)建xmlhttprequest對象。該對象用于發(fā)送請求到服務(wù)器。行1040到1190定義onreadystatechange()特性的函數(shù)值。該函數(shù)定義在完成請求之后發(fā)生什么。這將在接下來的兩段中討論。行1210打開請求,用第一變元定義url和由第二變元定義異步執(zhí)行。行1220將xmlhttprequest對象的responsetype(響應(yīng)類型)設(shè)置為blob。該設(shè)置確定作為二進制對象提供響應(yīng),其然后可以被轉(zhuǎn)換為圖像。(如上所述,函數(shù)createimage()執(zhí)行該任務(wù)。)最終,在行1230中發(fā)送該請求。

當(dāng)該請求由服務(wù)器處理時調(diào)用onreadystatechange函數(shù)若干次。這里,處理可以僅在已經(jīng)完全加載圖像之后繼續(xù)(如在行1050到1070檢查的)。函數(shù)立刻返回,除非請求的readystate特性等于4且狀態(tài)特性等于200二者。當(dāng)滿足這兩個條件時,已經(jīng)完全地加載了圖像。然后,由服務(wù)器發(fā)送回的圖像從請求的響應(yīng)特性讀取并分配給全局變量image。如果響應(yīng)不能讀取則顯示錯誤且函數(shù)返回(例如,參見行1080到1130)。最終,sendimagerequest()的onreadystatechange函數(shù)決定下一屏幕需要的所有數(shù)據(jù)是否可用。在啟動異步請求之前,全局變量descriptor和image在函數(shù)navigate()中已經(jīng)設(shè)置為未定義的。在該函數(shù)中變量image已經(jīng)設(shè)置為圖像。現(xiàn)在假定還沒有完成加載描述符的請求,全局變量descriptor然后將是未定義的。因此,函數(shù)sendimagerequest()將終止而不調(diào)用showimage()(例如,參見行1140到1170)。

假定也已經(jīng)完全地加載了ui描述符,則全局變量descriptor由函數(shù)senddatarequest()的onreadystatechange函數(shù)設(shè)置為json對象。因此,兩個全局變量都具有不同于未定義的值,且在行1160調(diào)用函數(shù)showimage()?,F(xiàn)在全局變量context中存儲的上下文對象派上用場:當(dāng)調(diào)用showimage()時,其作為變元傳遞,以及其他兩個全局變量descriptor和image。

函數(shù)senddatarequest()典型地僅在三個地方與函數(shù)sendimagerequest()不同:

1)在onreadystatechange函數(shù)中,服務(wù)器響應(yīng)不分配給全局變量image。而是,響應(yīng)被解析為json對象,且結(jié)果分配給全局變量descriptor。

2)url的文件擴展名是.json以請求json對象作為描述符,而不是png圖像。

3)沒有定義responsetype為blob的行。這是由于json是文本格式,其對responsetype是默認的。

示例網(wǎng)頁,例如:

典型地由三部分構(gòu)成:

1)包括上述討論的函數(shù)的腳本塊,

2)htmldiv元素,調(diào)用用作根容器的“base”,和

3)觸發(fā)初始屏幕的加載的另一腳本塊。

部分1和2是不重要的。第二腳本塊首先得到在部分2創(chuàng)建的基本div元素。然后,它構(gòu)造用于初始屏幕的上下文對象。它傳遞用作根容器的基本div作為第一變元。第二變元是屏幕的人可讀取的名稱,這里是“inputscreen”。接下來,傳遞字符串inputscreen作為屏幕的唯一名稱。最后,傳遞坐標(0,0)作為屏幕的位置,和(1920,1080)作為尺寸。

最終,在部分3,以新創(chuàng)建的context對象作為變元來調(diào)用函數(shù)navigate()。這啟動應(yīng)用的第一屏幕,“inputscreen”的加載。

如本領(lǐng)域技術(shù)人員將理解的,先前簡化示例描述了怎樣使用所描述的主題實現(xiàn)具有輸入字段和按鈕的簡單ui。如本領(lǐng)域技術(shù)人員將理解的,存在可用于形成ui的許多其他變化的交互元素(例如,比如彈出窗口、容器、下拉式列表框、卷動列表等)。以下段落雖然就所有可能的ui元素而言是不窮盡的,但是描述了可以怎樣實現(xiàn)這些ui元素來提供變化的交互客戶端ui中的完整的一組ui元素。

覆蓋可用于實現(xiàn)例如彈出窗口、用于擴展屏幕元素的容器等。在一些實現(xiàn)中,假定用戶點擊在ui元素上以示出彈出元素,用于彈出的內(nèi)容的圖像可以與當(dāng)用戶點擊在導(dǎo)航到另一屏幕的按鈕上時相同的方式來請求。然而,返回的圖像可能需要呈現(xiàn)在當(dāng)前屏幕的頂部,可能具有環(huán)繞它的框。例如,這可以通過將ui描述符中的“type”特性設(shè)置為“content”而實現(xiàn)。函數(shù)showimage()然后也需要不同地動作,因為它不能僅附加新圖像映射或者替代舊的圖像映射。而是,它需要將新創(chuàng)建的htmldiv元素放置在當(dāng)前圖像映射的頂部。這里,div元素的位置可以由服務(wù)器使用ui描述符提供。如果希望彈出窗口周圍的框,可以在新創(chuàng)建的div元素中創(chuàng)建該框,且用于彈出窗口的圖像映射可以集成到其中??梢圆捎妙愃频姆椒▉韺崿F(xiàn)可以通過點擊在按鈕上而擴大和縮小的容器。ui描述符的一些附加特性可用于確定容器位于按鈕的左側(cè)、右側(cè)、頂部或者底部。另外的特性也可以用于定義用于容器內(nèi)容怎樣出現(xiàn)或者消失的動畫。

另一示例用于實現(xiàn)卷動列表。假定具有帶有可滾動列表的ui,其包括可以在ui上一次性顯示的更多元素(例如,可見可滾動列表元素以上的可滾動列表元素1-49,可見可滾動列表元素50-55和可見可滾動列表元素以下的可滾動列表元素56-n)。在一個實現(xiàn)中,可滾動列表可以通過平鋪卷動列表來實現(xiàn);也就是,卷動列表被劃分為各個部分,被稱為“平鋪”,包括固定數(shù)目的可滾動列表元素。然后,當(dāng)創(chuàng)建交互區(qū)域時,從服務(wù)器加載特定數(shù)目的平鋪(例如,三個)。特定數(shù)目的平鋪可用于覆蓋列表元素的范圍(例如,平鋪一可以覆蓋可滾動列表元素45-49,平鋪二可以覆蓋可滾動列表元素50-54,且平鋪三可以覆蓋可滾動列表元素55-59)。在該示例中,平鋪二覆蓋可見元素50到54,而平鋪一和三覆蓋不可見列表元素。在該實現(xiàn)中,以描述的次序在稱為列表div的htmldiv元素中布置三個平鋪。列表div然后被剪切和放置,以使得僅顯示列表的可見部分。

當(dāng)用戶以任一方向拖拽可滾動列表時,列表div的剪切相應(yīng)地改變。一旦達到正向和反向行限制(例如,在可滾動列表元素47/48和56/57之間),則加載適當(dāng)?shù)木韯臃较虻南乱黄戒?。例如,?dāng)用戶向下卷動列表以使得可滾動列表元素57變?yōu)榭梢姇r,達到下線限制,且加載包括可滾動列表元素60到64的另一平鋪(例如,平鋪四)。新的平鋪四被添加到列表div,而可以除去在“頂部”的平鋪一。最終,剪切例如需要適于速度、視覺效果等以保證用戶的適當(dāng)?shù)木韯佑∠蟆?/p>

圖1a是圖示根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例性硬件/軟件架構(gòu)的框圖100a。客戶端102由域?qū)ο竽P?dom)104和框架106構(gòu)成。dom104是用于在例如html、xhtml和xml文檔中表示對象和與對象交互的跨平臺和語言獨立的規(guī)范(convention)。每個文檔的節(jié)點被組織成樹結(jié)構(gòu),稱為dom樹。dom樹中的對象可以通過使用關(guān)于對象的方法尋址和操縱。dom104的公共界面典型地在其應(yīng)用編程接口(api)中指定。雖然在該示例中考慮客戶端102是瀏覽器,但是在其他實現(xiàn)中,客戶端102可以是另一類型的客戶端應(yīng)用,瀏覽器和另一客戶端應(yīng)用的組合等。在服務(wù)器側(cè)108,組件包括基于服務(wù)器的應(yīng)用110和呈現(xiàn)引擎112。該呈現(xiàn)引擎112產(chǎn)生如上所述的圖像以及ui描述符??蛻舳?02和服務(wù)器108(和相關(guān)聯(lián)的組件)經(jīng)網(wǎng)絡(luò)130通信??蛻舳?02和服務(wù)器108的組件可以經(jīng)網(wǎng)絡(luò)130、系統(tǒng)總線(未示出)或者通過按照本公開的某些其它裝置來通信。

當(dāng)建立以使用上述方法的應(yīng)用110啟動時,可以加載網(wǎng)頁(例如,上述網(wǎng)頁)。當(dāng)完成上述處理時,瀏覽器102托管網(wǎng)頁的dom104以及上述的java腳本函數(shù)。網(wǎng)頁中的最后java腳本元素然后調(diào)用函數(shù)navigate(),該函數(shù)觸發(fā)到服務(wù)器108的兩個上述請求(請求107a)。如上所述,請求107a的一個請求檢索ui描述符且另一請求檢索圖像。在上面描述的簡單示例中,兩個請求僅將指示用戶交互的“target”傳送到服務(wù)器108。如本領(lǐng)域技術(shù)人員將認識到的,在更復(fù)雜或者真實世界應(yīng)用中,將傳遞更多狀態(tài)信息(例如,ui元素的值等)?;谠摳郊有畔?,服務(wù)器108可以重構(gòu)狀態(tài)并執(zhí)行期望的用戶交互。

在應(yīng)用110處理了用戶交互之后,應(yīng)用110指令呈現(xiàn)引擎112產(chǎn)生上述的圖像和ui描述符。呈現(xiàn)圖像是現(xiàn)有技術(shù),且因此將不詳細地描述。ui描述符需要的信息可以由應(yīng)用110提供或者在呈現(xiàn)處理期間生成。由應(yīng)用110提供的信息的示例是屏幕的名稱和產(chǎn)生的圖像具有什么類型。例如,如果用戶點擊在打開容器的按鈕上(如上所述),則應(yīng)用110可以提供響應(yīng)意在描述容器的內(nèi)容的信息。呈現(xiàn)處理期間可能生成的信息的示例是交互元素的類型、位置和大小,而名稱和目標再次需要由應(yīng)用提供。當(dāng)響應(yīng)的呈現(xiàn)已經(jīng)完成時,呈現(xiàn)引擎112使用請求107b返回符合先前描述的ui描述符和圖像兩者??蚣?06然后讀取ui描述符和圖像,并如上所述地處理它們??蚣芤蔡幚黻P(guān)于客戶端102ui的交互,直到觸發(fā)下一對服務(wù)器請求。

圖1b是圖示根據(jù)實現(xiàn)的用于使用客戶端102和服務(wù)器108中的每一個上的修改的模型-視圖-控制器(mvc)模型(分別是mvc114和116)優(yōu)化軟件應(yīng)用用戶界面性能的替代的示例性硬件/軟件架構(gòu)的框圖100b。如在圖1a中,客戶端102和服務(wù)器108(和相關(guān)聯(lián)的組件)經(jīng)網(wǎng)絡(luò)130通信。客戶端102和服務(wù)器108的組件可以經(jīng)網(wǎng)絡(luò)130、系統(tǒng)總線(未示出)或者通過按照本公開的某些其它裝置來通信。

mvc模型根據(jù)數(shù)據(jù)呈現(xiàn)的方式和與數(shù)據(jù)的交互怎樣發(fā)生來分離屏幕上的數(shù)據(jù)。該方法簡化了應(yīng)用的修改。極端地說,該方法允許僅通過交換視圖和控制器來由機器可讀的界面替換應(yīng)用的gui,而不觸碰應(yīng)用本身。

在服務(wù)器側(cè),作為模型的應(yīng)用110包括在一個屏幕上顯示的數(shù)據(jù)。服務(wù)器側(cè)視圖118定義如何布置數(shù)據(jù),而服務(wù)器側(cè)控制器120可以確定ui用戶交互模式。在一些實現(xiàn)(如圖示的)中,視圖118和控制器120需要被分成兩個單獨的部分:分別是客戶端側(cè)和服務(wù)器側(cè)部分。控制器120的客戶端側(cè)部分處理ui的交互部分-即它可以處理例如字符串編輯、復(fù)選框或者單選按鈕的設(shè)置、按鈕上的點擊及其他ui用戶交互。相對地,控制器120的服務(wù)器側(cè)部分確定當(dāng)用戶點擊ui的某個按鈕、在列表中卷動等時需要發(fā)生什么。

視圖118的服務(wù)器側(cè)部分主要地涉及產(chǎn)生用于模型(應(yīng)用110)的當(dāng)前狀態(tài)的圖像。服務(wù)器側(cè)視圖118的其他任務(wù)也是產(chǎn)生相應(yīng)的ui描述符。視圖118的客戶端側(cè)部分如由該生成的ui描述符確定的那樣將圖像放置在屏幕上。客戶端側(cè)視圖118也可以提供包括動畫的功能(比如當(dāng)打開容器元素時,淡入彈出窗口及其他動畫)。在一些實現(xiàn)中,客戶端側(cè)視圖118也可以被分派處理翻頁操作(例如,用于卷動列表或者其他翻頁操作)的任務(wù)。視圖118的客戶端側(cè)部分也可以按照以上提供的示例確定何時需要可滾動列表的下一平鋪和從服務(wù)器108及時地請求它以提供流暢操作的、無滯后的、低帶寬等的ui體驗。

如本領(lǐng)域技術(shù)人員將認識到的,所描述的主題可以在許多方面修改以服務(wù)一個或多個特定目的。例如,在一些實現(xiàn)中,當(dāng)在服務(wù)器呈現(xiàn)ui時,可以僅呈現(xiàn)空的ui元素。然后可以在并行請求中加載,且在客戶端呈現(xiàn)和顯示在輸入字段、列表、下拉式列表框等中顯示的數(shù)據(jù)。即使超出提出的方法的帶寬要求,這也將減少帶寬要求,因為圖像壓縮總體上更好。

在一些實現(xiàn)中,另一修改可以基于呈現(xiàn)典型地大的java腳本庫需要在客戶端執(zhí)行的觀察。大的庫的處理可能是麻煩的,例如因為在第一應(yīng)用屏幕變得可見之前加載多于一兆字節(jié)的呈現(xiàn)代碼可能導(dǎo)致滯后及用戶的其他問題。這特別關(guān)于用戶不經(jīng)常使用的應(yīng)用,因為考慮是陳舊的等,庫將很可能被從瀏覽器(或者其他應(yīng)用)高速緩存清除。因而,作為圖像加載第一屏幕由于低帶寬要求將是有益的。當(dāng)用戶忙于以第一屏幕工作時,然后可以在后臺下載庫。另外,進一步地采用該方法,甚至通過呈現(xiàn)庫的ui元素的增加替換也是可能的。例如,最初,完整的ui是圖像,但是在應(yīng)用的執(zhí)行期間,最初在服務(wù)器呈現(xiàn)的ui元素由客戶端側(cè)呈現(xiàn)的ui元素足夠快地連續(xù)地替換,以使得用戶或者不注意到,或者以不影響期望的用戶交互的方式(例如,確定可能的用戶方案和呈現(xiàn)將可能使用的ui元素)。

在另一實現(xiàn)中,在客戶端僅具有很少的計算能力時,使用java腳本呈現(xiàn)ui可能不允許地長。因此,有益地處理用戶交互的一個可能的選項是發(fā)送具有非常小的框架的圖像。

單個消息增強實現(xiàn)

上述主題詳述了如何使用兩個并行網(wǎng)絡(luò)傳輸(例如,參考圖1a和1b中的請求107a/b)有效地表示應(yīng)用ui的方法和系統(tǒng):第一消息傳送圖像,而第二并行的消息傳送所謂的"ui描述符”,該ui描述符定義圖像映射的哪些部分是交互區(qū)域,且如果用戶點擊在ui的交互區(qū)域上則應(yīng)該發(fā)生什么。在客戶端,例如瀏覽器,圖像被使用ui描述符轉(zhuǎn)換為圖像映射。以下描述描述了通過以單個消息傳送圖像和描述符兩者而進一步改進上述方法和系統(tǒng)的性能的方法。如本領(lǐng)域技術(shù)人員將理解的,上述硬件/軟件架構(gòu)可以適于使用單個消息代替107a/b中的并行請求的增強實現(xiàn)。

當(dāng)前沒有用于以支持本公開中描述的概念需要的方式將上述ui描述符(文本)和圖像數(shù)據(jù)組合到一個消息(文件)中的穩(wěn)定/強健的方法。一個選項是定義新的mime/因特網(wǎng)媒體類型(mime類型),其可以被定義用作用于壓縮圖像和ui描述符中包括的數(shù)據(jù)的容器(如上所述的)。mime類型是在因特網(wǎng)上使用的標準標識符,以指示文件包括的數(shù)據(jù)的類型,并允許附加文件的標識,如何顯示不是html格式的輸出文件、分類數(shù)據(jù)文件等的確定。mime類型由類型、子類型和零或更多可選參數(shù)組成。可以以例如在rfc6838中概述的過程創(chuàng)建新媒體類型。例如,可以定義比如“圖像/交互”的新mime類型。在該實現(xiàn)中,類型是“圖像”,子類型是“交互”,且沒有變元。

在一些實現(xiàn)中,如由新mime類型描述的交互圖像可以由以下部分構(gòu)成:

●元數(shù)據(jù):元數(shù)據(jù)部分也可以由json文檔(參見上面定義的ui描述符)構(gòu)成,否則,為節(jié)省空間,可以預(yù)定義幾個字段。然后可以省略標簽。例如,參看上面定義的ui描述符,如果格式定義前五個字段的序列和語義是名稱、類型、寬度、高度和區(qū)域,則不需要標簽。另外,對于區(qū)域陣列中的每個區(qū)域,七個字段:類型、名稱、左側(cè)、頂部、寬度、高度和值/目標可以是默認的。再次,用于那些字段的標簽可以是被省略。元數(shù)據(jù)擴展名:在需要附加的字段的情況下,可以作為名稱-值對添加字段。

●圖像數(shù)據(jù):壓縮圖像。在一些實現(xiàn)中,壓縮可以是無損的(任何無損壓縮機制是可接受的)。用于壓縮機制的最重要的標準是以高速良好合理地壓縮。不是最小結(jié)果尺寸或者最高速度,快速壓縮和可接受的結(jié)果尺寸之間的適當(dāng)?shù)钠胶馐亲钪饕?。例如,用于java的png壓縮庫png-編碼器-1.5將位圖壓縮為png文件??梢允褂脜?shù)“complevel”控制壓縮度,該參數(shù)可以取值0到9。參數(shù)值0返回未壓縮圖像,而對于9調(diào)用最強大的壓縮機制。雖然對于0壓縮最快,但結(jié)果相當(dāng)大。另一方面,對于“complevel9”壓縮時間最長,但是結(jié)果過小。測試示出在典型實現(xiàn)中,4的壓縮級別產(chǎn)生速度和結(jié)果尺寸之間的最好平衡。

在第二選項中,二進制大對象(blob)可以用于通過在客戶端啟動xhtmlrequest(見下文)來將數(shù)據(jù)從服務(wù)器傳送到客戶端。在典型實現(xiàn)中,blob由ui描述符長度字段、ui描述符和圖像構(gòu)成。再次,ui描述符可以是標準json文件,但是它也可以通過定義字段的序列而最小化,比如:

"inputscreen","root",1920,1080,

[{"input-field","textinput",750,550,600,20,"″}{…

在一些實現(xiàn)中,blob也可以通過封裝代碼在服務(wù)器封裝,例如:

response.setcontentlength(10+(int)d.length()+(int)

i.length());

outputstreamo=response.getoutputstream();

o.write(string.format("%10d",d.length()).getbytes());

this.writefile(d,o);

this.writefile(i,o);

o.close();

這里,代碼片斷假定存在分別為ui描述符和圖像定義的兩個inputstreams,即d和i。另外,代碼片斷假定為在javaservlet的doget或者dopost方法中運行,以使得定義響應(yīng)參數(shù)。首先,響應(yīng)的內(nèi)容長度設(shè)置為ui描述符的大小加上圖像的大小加上用于ui描述符長度的10字符字段。接下來,獲得響應(yīng)輸出流。隨后,首先ui描述符長度作為需要10個字符的字段大小的整數(shù)寫入,然后寫入ui描述符和圖像內(nèi)容。最終,關(guān)閉響應(yīng)。

在典型實現(xiàn)中,使用java腳本代碼從客戶端請求blob,例如:

這里,創(chuàng)建xmlhttprequest并分配給變量(例如,x)。對象的onreadystatechange()函數(shù)定義在對請求的響應(yīng)到達之后采取的動作(如在下面段落中討論的)。接下來,使用變量x中存儲的xmlhttprequest對象向服務(wù)器開放get請求。該響應(yīng)類型設(shè)置為blob以便從服務(wù)器請求blob響應(yīng)。最終,發(fā)送請求。

然后在客戶端解封裝blob,例如使用:

在該實現(xiàn)中,以onreadystatechanged()函數(shù)執(zhí)行解封裝。當(dāng)執(zhí)行該函數(shù)時,對象“x”的特性響應(yīng)包括作為blob的服務(wù)器響應(yīng)。在行0010,使用拼接函數(shù)提取blob的前10個字符并分配給變量“l(fā)”。變量l現(xiàn)在包括由前10個字符構(gòu)成的blob,其包括作為字符串的描述符長度。在java腳本中,需要filereader對象來從blob提取字符串。在行0020創(chuàng)建該filereader對象“r”,在行0030到0200定義和分配其onloaded()函數(shù),且在行0210觸發(fā)blobl的處理。當(dāng)執(zhí)行filereaderr時,其在各個階段調(diào)用onloaded()函數(shù)。由表達式event.target.readystate的值跟蹤執(zhí)行的進程。僅當(dāng)表達式event.target.readystate產(chǎn)生值filereader.done時完成該處理且r的結(jié)果可用。這在行0040測試,且當(dāng)不滿足該條件時onloaded()的執(zhí)行終止。

當(dāng)完成r的處理時,event.target.result包括作為字符串的ui描述符長度。在行0070該字符串被轉(zhuǎn)換為整數(shù)。然后在行0080使用描述符長度以從blob響應(yīng)將描述符提取到變量“d”中?,F(xiàn)在,ui描述符需要從blob轉(zhuǎn)換為字符串。這與使用filereaderr的ui描述符長度的處理類似,在行0090到0190發(fā)生。但是,r的onloaded()函數(shù)接收ui描述符。假定ui描述符是json文件,它可以使用json.parse()函數(shù)被解析為java腳本對象,如行0140所示。最終,圖像的blob可以被拼接為變量緩沖器(例如,參見行150)。

然后通過調(diào)用函數(shù)createimage()將blob轉(zhuǎn)換為實際圖像,例如:

在典型實現(xiàn)中,函數(shù)createimage()使用默認方法來將由瀏覽器加載的二進制文件轉(zhuǎn)換為htmlimg元素:在行0320img元素動態(tài)地創(chuàng)建,在行0330以瀏覽器獨立的方式選擇轉(zhuǎn)換需要的對象,且在行0340由調(diào)用函數(shù)createobjecturl()將傳送的文件的內(nèi)容轉(zhuǎn)換。當(dāng)在行0330創(chuàng)建的url分配給img元素時,發(fā)生實際的轉(zhuǎn)換。

在第三選項中,在一些實現(xiàn)中,圖像格式可以擴展有用于上述ui描述符的部分。例如,圖2a圖示根據(jù)實現(xiàn)的擴展有簽名部分以保存所描述的ui描述符的示例圖像格式。雖然以下示例描述png圖像格式的使用,如本領(lǐng)域技術(shù)人員將理解的,可以使用和描述其他圖像類型,相應(yīng)地采用硬件/軟件以支持其他圖像類型。

例如,png是用于光柵圖像的無損、便攜、良好壓縮的存儲的可擴展的文件格式。支持顏色索引、灰度級和真彩色圖像,加上可選的阿爾法通道。采樣深度范圍從1到16位。如圖2a所示,png文件由簽名202和數(shù)據(jù)大塊1-n的序列204構(gòu)成。在典型實現(xiàn)中,簽名202是標識png文件的字節(jié)串,而數(shù)據(jù)大塊204包括實際信息,比如像素數(shù)據(jù)、調(diào)色板數(shù)據(jù)、附加數(shù)據(jù)等。

現(xiàn)在轉(zhuǎn)到圖2b,圖2b圖示根據(jù)實現(xiàn)的如圖2a描述的數(shù)據(jù)大塊的示例結(jié)構(gòu)。在典型實現(xiàn)中,png數(shù)據(jù)大塊的結(jié)構(gòu)具有包括數(shù)據(jù)塊字段210的長度的長度字段206,定義可應(yīng)用的數(shù)據(jù)大塊的總體類型的類型字段208(例如,圖像報頭、調(diào)色板表、圖像數(shù)據(jù)大塊、圖像尾部等),保存適合于所定義的數(shù)據(jù)大塊類型的數(shù)據(jù)字節(jié)的數(shù)據(jù)塊字段210,和用作設(shè)計用于檢測網(wǎng)絡(luò)傳輸錯誤的校驗值的crc字段212。

這里,定義附加數(shù)據(jù)大塊類型,比如包括關(guān)于圖像的交互行為的信息的“intr”(用于“交互”)。更確切地說,類型intr的數(shù)據(jù)大塊的數(shù)據(jù)塊字段210包括圖像的ui描述符。在一些實現(xiàn)中,ui描述符數(shù)據(jù)可以存儲為如上面提供的ui描述符示例中圖示的json字符串或者存儲為更致密的二進制格式。另外,也可以應(yīng)用上面描述的優(yōu)化。

圖3是根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例方法300的流程圖。為了表示的清楚,隨后的描述一般地描述圖1a-1b、圖2a-2b、圖4和圖5的上下文中的方法300。但是,將理解例如可以由任何適當(dāng)?shù)南到y(tǒng)、環(huán)境、軟件和硬件或者按照需要的系統(tǒng)、環(huán)境、軟件和硬件的組合來執(zhí)行方法300。在一些實現(xiàn)中,方法300的各個步驟可以并行運行、組合運行、循環(huán)運行和/或以任何次序運行;包括在云計算環(huán)境內(nèi)。

在302,用戶界面(ui)由服務(wù)器呈現(xiàn)以用于在客戶端計算裝置上顯示為例如位圖圖像。在其他實現(xiàn)中,除了位圖圖像之外或者與位圖圖像結(jié)合,可以使用其他圖像格式。方法300從302進行到304。

在304,描述ui的交互元素的ui描述符由服務(wù)器生成。方法300從304進行到306。

在306,呈現(xiàn)的位圖圖像由服務(wù)器壓縮。在一些實現(xiàn)中,壓縮圖像可以是無損圖像格式(例如,png或者其他無損圖像格式)。方法300從306進行到308a。

在308a,將壓縮圖像傳送到客戶端計算裝置以用于呈現(xiàn)。在典型實現(xiàn)中,壓縮圖像作為單獨的消息發(fā)送。方法300從308a進行到308b。

在308b,將ui描述符傳送到客戶端計算裝置以用于呈現(xiàn)。在典型實現(xiàn)中,ui描述符作為單獨的消息發(fā)送。在一些實現(xiàn)中,順序地或者并行地發(fā)送308a和308b的單獨的消息。方法300從308b進行到310。

在310,ui由客戶端計算裝置使用所接收的壓縮圖像和ui描述符呈現(xiàn)為交互ui。在典型實現(xiàn)中,客戶端計算裝置典型地根據(jù)以下方法進行:

1.客戶端通過以下創(chuàng)建圖像映射:

a.迭代ui描述符中包括的“區(qū)域”陣列特性的元素以創(chuàng)建用于圖像映射的交互區(qū)域。

b.創(chuàng)建用于圖像映射的maphtml元素。

2.使得圖像映射在客戶端上可見。

方法300從310進行到312。

在312,接收與ui中描述的交互元素相關(guān)聯(lián)的交互事件。方法300從312進行到314。

在314,動態(tài)地生成交互元素。方法300從314進行到316。

在316,動態(tài)地生成的交互元素配置為在ui上可見和接受用戶輸入。注意到,雖然圖3的示例描述在在傳輸過程中(on-the-fly)創(chuàng)建輸入字段和使得其可見,在本實現(xiàn)及其他實現(xiàn)中,例如可以添加、除去、改變、縮放其他ui元素及其他功能。例如,可以生成彈出會話,或者可以示出下拉式列表框的下拉列表(或者在用戶選擇值之后隱藏)。換句話說,在gui上可能發(fā)生的任何改變可以由所描述的主題支持。在316之后,方法300停止。

圖4是根據(jù)實現(xiàn)的用于優(yōu)化軟件應(yīng)用用戶界面性能的示例增強方法的流程圖。為了表示的清楚,隨后的描述一般地描述圖1a-1b、圖2a-2b、圖3和圖5的上下文中的方法400。但是,將理解例如可以由任何適當(dāng)?shù)南到y(tǒng)、環(huán)境、軟件和硬件或者按照需要的系統(tǒng)、環(huán)境、軟件和硬件的組合來執(zhí)行方法400。在一些實現(xiàn)中,方法400的各個步驟可以并行運行、組合運行、循環(huán)運行和/或以任何次序運行;包括在云計算環(huán)境內(nèi)。

在402,用戶界面(ui)由服務(wù)器呈現(xiàn)以用于在客戶端計算裝置上顯示為例如位圖圖像。在其他實現(xiàn)中,除了位圖圖像之外或者與位圖圖像結(jié)合,可以使用其他圖像格式。方法400從402進行到404。

在404,描述ui的交互元素的ui描述符由服務(wù)器生成。方法400從404進行到406。

在406,呈現(xiàn)的位圖圖像由服務(wù)器壓縮。在一些實現(xiàn)中,壓縮圖像可以是無損圖像格式(例如,png或者其他無損圖像格式)。方法400從406進行到407。

在407,壓縮圖像和ui描述符被封裝到容器中,例如,顧客定義mime類型,二進制大對象(blob),可擴展圖像格式或者其他容器。方法400從407進行到408。

在408,壓縮圖像和ui描述符在容器中作為單個消息的一部分傳送到客戶端計算裝置以用于呈現(xiàn)。方法400從408進行到409。

在409,傳送的容器被解封裝為單獨的壓縮圖像和ui描述符。方法400從409進行到410。

在410,ui由客戶端計算裝置使用解封裝的壓縮圖像和ui描述符呈現(xiàn)為交互ui。在典型實現(xiàn)中,客戶端計算裝置典型地根據(jù)以下方法進行:

1.客戶端通過以下創(chuàng)建圖像映射:

a.迭代ui描述符中包括的“區(qū)域”陣列特性的元素以創(chuàng)建用于圖像映射的交互區(qū)域。

b.創(chuàng)建用于圖像映射的maphtml元素。

2.使得圖像映射在客戶端上可見。

方法400從410進行到412。

在412,接收與ui中描述的交互元素相關(guān)聯(lián)的交互事件。方法400從412進行到414。

在414,動態(tài)地生成交互元素。方法400從414進行到416。

在416,動態(tài)地生成的交互元素配置為在ui上可見和接受用戶輸入。注意到,雖然圖4的示例描述在在傳輸過程中(on-the-fly)創(chuàng)建輸入字段和使得其可見,在本實現(xiàn)及其他實現(xiàn)中,例如可以添加、除去、改變、縮放其他ui元素及其他功能。例如,可以生成彈出會話,或者可以示出下拉式列表框的下拉列表(或者在用戶選擇值之后隱藏)。換句話說,在gui上可能發(fā)生的任何改變可以由所描述的主題支持。在416之后,方法400停止。

圖5是根據(jù)實現(xiàn)的用于實現(xiàn)所描述的主題的示例性計算機的框圖。圖示的計算機502意在包括任何計算裝置,比如服務(wù)器、臺式計算機、膝上型/筆記本計算機、無線數(shù)據(jù)端口、智能電話、個人數(shù)據(jù)助理(pda)、平板計算裝置、這些裝置內(nèi)的一個或多個處理器或者任何其他適當(dāng)?shù)奶幚硌b置,包括計算裝置的物理和/或虛擬的示例兩者。另外,計算機502可以包括包含比如小鍵盤、鍵盤、觸摸屏的輸入裝置,或者可以接受用戶信息的其他裝置和傳達與計算機502的操作相關(guān)聯(lián)的信息,包括數(shù)字數(shù)據(jù)、視覺和/或聽覺信息或者gui的輸出裝置的計算機。

計算機502可以處理為/用作客戶端(例如,客戶端102或者一個或多個子組件)、服務(wù)器(例如,服務(wù)器108或者一個或多個子組件)和/或所描述的示例性硬件/軟件架構(gòu)的任何其他組件(無論是否圖示)。圖示的計算機502與網(wǎng)絡(luò)530(例如,網(wǎng)絡(luò)130)可通信地耦合。

在高級別,計算機502是可操作以接收、發(fā)送、處理、存儲或者管理數(shù)據(jù)和信息的電子計算裝置。根據(jù)一些實現(xiàn),計算機502的一個或多個組件可以配置為在基于云計算的環(huán)境內(nèi)操作,且計算機502也可以包含云計算服務(wù)器、應(yīng)用服務(wù)器、電子郵件服務(wù)器、網(wǎng)絡(luò)服務(wù)器、高速緩存服務(wù)器、流數(shù)據(jù)服務(wù)器、商業(yè)情報(bi)服務(wù)器和/或其他服務(wù)器或者與其可通信地耦合。

計算機502可以生成請求以經(jīng)網(wǎng)絡(luò)530發(fā)送(例如,作為客戶端102)或者從客戶端應(yīng)用(例如,網(wǎng)絡(luò)瀏覽器或者其他應(yīng)用)經(jīng)網(wǎng)絡(luò)530接收請求(例如,作為服務(wù)器108)并通過以適當(dāng)?shù)能浖?yīng)用、硬件等處理所述請求來響應(yīng)于所接收的請求。另外,請求也可以從內(nèi)部用戶(例如,從指令控制臺或者通過其他適當(dāng)?shù)脑L問方法)、外部或者第三方、其他自動化應(yīng)用以及任何其他適當(dāng)?shù)膶嶓w、個人、系統(tǒng)或者計算機發(fā)送到計算機502。

計算機502的每一個組件可以使用系統(tǒng)總線503通信。在一些實現(xiàn)中,計算機502的任何和/或所有組件,硬件和/或軟件組件都可以彼此接口連接,和/或使用api512和/或服務(wù)層513經(jīng)系統(tǒng)總線503與接口504連接。api512可以包括用于例程、數(shù)據(jù)結(jié)構(gòu)和對象類的說明。api512可以是計算機語言獨立的或者從屬的,且指的是完全的接口、單個函數(shù)或者甚至一組api。服務(wù)層513向計算機502和/或所描述的示例性硬件/軟件架構(gòu)提供軟件服務(wù)。計算機502的功能是所有服務(wù)消費者使用該服務(wù)層可訪問的。比如由服務(wù)層513提供的軟件服務(wù)通過所定義的接口提供可重復(fù)使用的定義的商業(yè)功能性。例如,接口可以是以java、c++或者其他適當(dāng)?shù)恼Z言所寫的軟件,該軟件以可擴展標注語言(xml)格式或者其他適當(dāng)?shù)母袷教峁?shù)據(jù)。雖然圖示為計算機502的集成組件,替代的實現(xiàn)可以圖示api512和/或服務(wù)層513為關(guān)于計算機502和/或所描述的示例性硬件/軟件架構(gòu)的其他組件分立的組件。此外,api512和/或服務(wù)層513的任何或者所有部分可以實現(xiàn)為另一軟件模塊、企業(yè)應(yīng)用、或者硬件模塊的子模塊或者從模塊,而不脫離本公開的范圍。

計算機502包括接口504。雖然在圖5中圖示為單個接口504,可以根據(jù)特定的需要、期望或者計算機502和/或所描述的示例性硬件/軟件架構(gòu)的特定實現(xiàn)而使用兩個或更多接口504。接口504由計算機502用于與分布式環(huán)境中的其他系統(tǒng)通信,該分布式環(huán)境包括在所描述的示例性硬件/軟件架構(gòu)內(nèi),或者連接到網(wǎng)絡(luò)530(無論是否圖示)。通常,接口504包括以適當(dāng)?shù)慕M合以軟件和/或硬件編碼且可操作以與網(wǎng)絡(luò)530通信的邏輯。更具體地說,接口504可以包括支持與通信相關(guān)聯(lián)的一個或多個通信協(xié)議的軟件,以使得網(wǎng)絡(luò)530或者接口的硬件可操作以在所圖示的示例性硬件/軟件架構(gòu)之內(nèi)和之外通信物理信號。

計算機502包括處理器505。雖然在圖5中圖示為單個處理器505,可以根據(jù)特定的需要、期望或者計算機502和/或所描述的示例性硬件/軟件架構(gòu)的特定實現(xiàn)而使用兩個或更多處理器。通常,處理器505執(zhí)行指令和操縱數(shù)據(jù)以執(zhí)行計算機502的操作。特別地,處理器505執(zhí)行優(yōu)化軟件應(yīng)用用戶界面性能需要的功能性。

計算機502還包括保存用于計算機502和/或所描述的示例性硬件/軟件架構(gòu)的其他組件的數(shù)據(jù)的數(shù)據(jù)庫506和存儲器508。雖然在圖5中圖示為單個數(shù)據(jù)庫506和存儲器508,可以根據(jù)特定的需要、期望或者計算機502和/或所描述的示例性硬件/軟件架構(gòu)的特定實現(xiàn)而使用兩個或更多數(shù)據(jù)庫506和存儲器508。雖然數(shù)據(jù)庫506和存儲器508圖示為計算機502的集成組件,在替代的實現(xiàn)中,數(shù)據(jù)庫506和存儲器508可以在計算機502和/或所描述的示例性硬件/軟件架構(gòu)之外。在一些實現(xiàn)中,數(shù)據(jù)庫可以是傳統(tǒng)的數(shù)據(jù)庫或者存儲器內(nèi)數(shù)據(jù)庫,或者兩者的混合。在一些實現(xiàn)中,數(shù)據(jù)庫506和存儲器508可以組合為一個組件。

應(yīng)用507是根據(jù)特定的需要、期望或者計算機502和/或所描述的示例性硬件/軟件架構(gòu)的特定實現(xiàn)提供功能性,特別是相對于優(yōu)化軟件應(yīng)用用戶界面性能的功能性的算法軟件引擎。例如,應(yīng)用507可以用作客戶端102、框架106、dom104、服務(wù)器108、應(yīng)用110、呈現(xiàn)引擎112、視圖118/控制器120(在客戶端或者服務(wù)器上執(zhí)行的),和/或所描述的示例性硬件/軟件架構(gòu)的任何其他組件(無論是否圖示)。此外,雖然圖示為單個應(yīng)用507,應(yīng)用507可以實現(xiàn)為計算機502上的多個應(yīng)用507。另外,雖然圖示為對計算機502集成的,在替代的實現(xiàn)中,應(yīng)用507可以在計算機502和/或所描述的示例性硬件/軟件架構(gòu)之外。

可能存在與所描述的示例性硬件/軟件架構(gòu)相關(guān)聯(lián),或者在所描述的示例性硬件/軟件架構(gòu)之外和經(jīng)網(wǎng)絡(luò)530通信的許多計算機502。另外,術(shù)語“客戶端”、“用戶”及其他適當(dāng)?shù)男g(shù)語可以按照需要可互換地使用而不脫離本公開的范圍。此外,本公開考慮許多用戶可以使用一個計算機502,或者一個用戶可以使用多個計算機502。

本說明書中描述的主題和功能操作的實現(xiàn)可以以數(shù)字電子電路,以可觸知地具體表現(xiàn)的計算機軟件或者固件,以計算機硬件實現(xiàn),其包括本說明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等效,或者以它們中的一個或多個的組合。本說明書中描述的主題的實現(xiàn)可以實現(xiàn)為一個或多個計算機程序,即,以用于由數(shù)據(jù)處理設(shè)備執(zhí)行或者控制數(shù)據(jù)處理設(shè)備的操作的可觸知的、非瞬時計算機存儲介質(zhì)編碼的計算機程序指令的一個或多個模塊。替代地或者另外,程序指令可以在人工地生成的傳播信號上編碼,例如,生成以編碼信息以用于傳輸?shù)竭m當(dāng)?shù)慕邮掌髟O(shè)備以用于由數(shù)據(jù)處理設(shè)備執(zhí)行的機器生成的電、光或者電磁信號。計算機存儲介質(zhì)可以是機器可讀的存儲裝置,機器可讀的存儲基片,隨機或者串行存取存儲器裝置,或者它們中的一個或多個的組合。

術(shù)語“數(shù)據(jù)處理設(shè)備”、“計算機”或者“電子計算機裝置”(或者本領(lǐng)域技術(shù)人員理解的等效)指的是數(shù)據(jù)處理硬件并包括用于處理數(shù)據(jù)的各種設(shè)備、裝置和機器,舉例來說包括可編程處理器、計算機或者多處理器或者計算機。設(shè)備也可以是或者另外包括專用邏輯電路,例如,中央處理單元(cpu)、fpga(現(xiàn)場可編程門陣列)或者asic(專用集成電路)。在一些實現(xiàn)中,數(shù)據(jù)處理設(shè)備和/或?qū)S眠壿嬰娐房梢允腔谟布?或基于軟件的。該設(shè)備可選地可以包括創(chuàng)建用于計算機程序的執(zhí)行環(huán)境的代碼,例如,構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)或者它們中一個或多個的組合的代碼。本公開考慮有或者沒有傳統(tǒng)的操作系統(tǒng)的數(shù)據(jù)處理設(shè)備的使用,例如linux、unix、windows、macos、android、ios或者任何其他適當(dāng)?shù)膫鹘y(tǒng)的操作系統(tǒng)。

計算機程序也可以被稱為或者描述為程序、軟件、軟件應(yīng)用、模塊、軟件模塊、腳本或者代碼,可以以任何形式的編程語音寫入,包括編譯或者解釋語言,或者說明性或者過程語言,且其可以以任意形式采用,包括作為獨立的程序或者作為適于用于計算環(huán)境中的模塊、組件、子例程或者其他單元。計算機程序可以,但是不需要對應(yīng)于文件系統(tǒng)中的文件。程序可以存儲在保存其他程序或者數(shù)據(jù)的文件,例如,標注語言文檔中存儲的一個或多個腳本的一部分中,專用于正被討論的程序的單個文件中,或者多個協(xié)作的文件,例如,存儲一個或多個模塊、子程序或者代碼的一部分的文件中。計算機程序可以被采用以在一個計算機或者位于一個地點或者跨多個地點分布并通過通信網(wǎng)絡(luò)互連的多個計算機上執(zhí)行。雖然各個圖中圖示的程序的各部分示為通過各種對象、方法或者其他處理實現(xiàn)各種特征和功能性的單個模塊,程序可以代替地按照需要包括多個子模塊、第三方服務(wù)、組件、庫,等等。相反地,各個組件的特征和功能性可以按照需要組合為單個組件。

本說明書中描述的處理和邏輯流程可以由執(zhí)行一個或多個計算機程序以通過關(guān)于輸入數(shù)據(jù)操作并生成輸出來執(zhí)行函數(shù)的一個或多個可編程計算機執(zhí)行。處理和邏輯流程也可以由專用邏輯電路,例如,cpu、fpga或者asic執(zhí)行,且設(shè)備也可以實現(xiàn)為專用邏輯電路,例如,cpu、fpga或者asic。

適于計算機程序的執(zhí)行的計算機可以基于一般或者專用微處理器,一般和專用微處理器兩者或者任何其它種類的cpu。通常,cpu從只讀存儲器(rom)或者隨機存取存儲器(ram)或者其兩者接收指令和數(shù)據(jù)。計算機的基本元件是用于運行或者執(zhí)行指令的cpu和用于存儲指令和數(shù)據(jù)的一個或多個存儲器裝置。通常,計算機將包括,或者操作地耦合以從用于存儲數(shù)據(jù)的一個或多個大容量存儲裝置,例如,磁的、磁光的盤或者光盤接收數(shù)據(jù),或者傳送數(shù)據(jù)到其,或者兩者。但是,計算機不需要具有這種裝置。此外,計算機可以嵌入另一裝置中,例如,僅舉數(shù)例,移動電話、個人數(shù)字助理(pda)、移動音頻或者視頻播放器、游戲主機、全球定位系統(tǒng)(gps)接收器或者便攜式存儲裝置,例如,通用串行總線(usb)閃存驅(qū)動器。

適于存儲計算機程序指令和數(shù)據(jù)的計算機可讀介質(zhì)(按照需要,瞬時的或者非瞬時的)包括所有形式的非易失性存儲器、介質(zhì)和存儲器裝置,舉例來說包括半導(dǎo)體存儲器裝置,例如,可擦可編程只讀存儲器(eprom)、電可擦可編程只讀存儲器(eeprom)和閃存存儲器裝置;磁盤,例如,內(nèi)部硬盤或者可拆卸盤;磁光盤;和cd-rom、dvd+/-r、dvd-ram和dvd-rom盤。存儲器可以存儲各種對象或者數(shù)據(jù),包括高速緩存、類、框架、應(yīng)用、備份數(shù)據(jù)、工作、網(wǎng)頁、網(wǎng)頁模板、數(shù)據(jù)庫表、存儲商業(yè)和/或動態(tài)信息的檔案庫和包括任何參數(shù)、變量、算法、指令、規(guī)則、限制或者對其的索引的任何其他適當(dāng)?shù)男畔ⅰA硗?,存儲器可以包括任何其他適當(dāng)?shù)臄?shù)據(jù),比如日志、策略、安全性或者訪問數(shù)據(jù)、報告文件以及其它的。處理器和存儲器可以由專用邏輯電路補充,或者并入專用邏輯電路中。

為提供用于與用戶交互,本說明書中描述的主題的實現(xiàn)可以在具有用于向用戶顯示信息的顯示裝置和用戶可以通過其向計算機提供輸入的鍵盤和指示設(shè)備的計算機上實現(xiàn),該顯示裝置例如是crt(陰極射線管)、lcd(液晶顯示器)、led(發(fā)光二極管)或者等離子體監(jiān)視器,該指示設(shè)備例如是鼠標、軌跡球或者跟蹤盤。輸入也可以使用觸摸屏,比如具有壓力靈敏度的平板計算機表面,使用電容或者電感應(yīng)的多觸摸屏或者其他類型的觸摸屏提供給計算機。其它種類的裝置也可用于提供與用戶的交互;例如,提供給用戶的反饋可以是任何形式的傳感反饋,例如,視覺反饋、聽覺反饋或者觸覺反饋;且來自用戶的輸入可以以任意形式接收,包括聲學(xué)的、語音、或者觸覺輸入。另外,計算機可以通過發(fā)送文檔到由用戶使用的裝置和從該裝置接收文檔來與用戶交互;例如,通過響應(yīng)于從網(wǎng)絡(luò)瀏覽器接收到的請求而發(fā)送網(wǎng)頁到用戶的客戶端裝置上的網(wǎng)絡(luò)瀏覽器。

術(shù)語“圖形用戶界面”或者“gui”可以以單數(shù)或者復(fù)數(shù)使用以描述一個或多個圖形用戶接口和特定的圖形用戶界面中的每一個顯示。因此,gui可以表示處理信息和有效地向用戶呈現(xiàn)信息結(jié)果的任何圖形用戶界面,包括但不限于網(wǎng)絡(luò)瀏覽器、觸摸屏或者命令行接口(cli)??偟膩碚f,gui可以包括多個用戶界面(ui)元素,一些或者全部與可由商業(yè)套裝用戶操作的網(wǎng)絡(luò)瀏覽器相關(guān)聯(lián),比如交互欄、下拉列表和按鈕。這些及其他ui元素可以關(guān)于或者表示網(wǎng)絡(luò)瀏覽器的功能。

本說明書中描述的主題的實現(xiàn)可以以計算系統(tǒng)實現(xiàn),該計算系統(tǒng)例如包括后端組件作為數(shù)據(jù)服務(wù)器,或者包括中間件組件,例如,應(yīng)用服務(wù)器,或者包括前端組件,例如,具有用戶可以通過其與本說明書中描述的主題的實現(xiàn)交互的圖形用戶界面或者網(wǎng)絡(luò)瀏覽器的客戶端計算機,或者一個或多個這種后端、中間件或者前端組件的任何組合。系統(tǒng)的組件可以由任何形式或者介質(zhì)的有線和/或無線數(shù)字數(shù)據(jù)通信,例如,通信網(wǎng)絡(luò)互連。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(lan)、無線電接入網(wǎng)絡(luò)(ran)、城市區(qū)域網(wǎng)(man)、廣域網(wǎng)(wan)、微波訪問的全世界互操作性(wimax)、例如使用802.11a/b/g/n和/或802.20的無線局域網(wǎng)(wlan),因特網(wǎng)的全部或者一部分,和/或在一個或多個位置的任何其他一個或多個通信系統(tǒng)。該網(wǎng)絡(luò)例如可以在網(wǎng)絡(luò)地址之間以因特網(wǎng)協(xié)議(ip)分組、幀中繼幀、異步傳輸模式(atm)蜂窩、語音、視頻、數(shù)據(jù)和/或其他適當(dāng)?shù)男畔⑼ㄐ拧?/p>

計算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此遠離,且典型地通過通信網(wǎng)絡(luò)交互??蛻舳撕头?wù)器的關(guān)系依靠運行在各個計算機上和彼此具有客戶端-服務(wù)器關(guān)系的計算機程序而發(fā)生。

在一些實現(xiàn)中,計算系統(tǒng)的任何或者全部組件,硬件和/或軟件兩者,可以彼此接口連接和/或使用應(yīng)用編程接口(api)和/或服務(wù)層接口連接。api可以包括用于例程、數(shù)據(jù)結(jié)構(gòu)和對象類的說明。api可以是計算機語言獨立的或者從屬的,且指的是完全的接口、單個函數(shù)或者甚至一組api。服務(wù)層向計算系統(tǒng)提供軟件服務(wù)。計算系統(tǒng)的各種組件的功能是對于所有服務(wù)消費者經(jīng)由該服務(wù)層可訪問的。軟件服務(wù)通過所定義的接口提供可重復(fù)使用的定義的商業(yè)功能性。例如,接口可以是以java、c++或者其他適當(dāng)?shù)恼Z言所寫的軟件,該軟件以可擴展標注語言(xml)格式或者其他適當(dāng)?shù)母袷教峁?shù)據(jù)。api和/或服務(wù)層可以是關(guān)于計算系統(tǒng)的其他組件集成的和/或分立的組件。此外,服務(wù)層的任何或者所有部分可以實現(xiàn)為另一軟件模塊、企業(yè)應(yīng)用、或者硬件模塊的子模塊或者從模塊,而不脫離本公開的范圍。

雖然本說明書包括許多特定的實現(xiàn)細節(jié),這不應(yīng)該被看作是關(guān)于任何發(fā)明的范圍或者關(guān)于可以要求的范圍的限制,而是看作可能對特定發(fā)明的特定實現(xiàn)特定的特征的描述。在單獨的實現(xiàn)的上下文中本說明書中描述的某些特征也可以在單個實現(xiàn)中組合地實現(xiàn)。相反地,單個實現(xiàn)的上下文中描述的各種特征也可以在多個實現(xiàn)中分開地或者以任何適當(dāng)?shù)淖咏M合實現(xiàn)。此外,雖然特征可能在上面描述為以某些組合動作且甚至最初要求成這樣,來自要求的組合的一個或多個特征有時可以從該組合排除,且要求的組合可能導(dǎo)向子組合或者子組合的變型。

已經(jīng)描述了主題的特定實現(xiàn)。描述的實現(xiàn)的其他實現(xiàn)、替代和置換在以下權(quán)利要求的范圍內(nèi),如對本領(lǐng)域技術(shù)人員顯而易見的。雖然在圖中或者且權(quán)利要求中以特定次序示出操作,這不應(yīng)該被理解為要求以示出的特定次序或者以順序執(zhí)行這種操作,或者執(zhí)行所有圖示的操作(一些操作可能考慮是可選的)以實現(xiàn)期望的結(jié)果。在某些情形下,多任務(wù)和/或并行處理可能是有益的且在認為適當(dāng)時執(zhí)行。

此外,上面描述的實現(xiàn)中各種系統(tǒng)模塊和組件的分開和/或集成不應(yīng)該被理解為在所有實現(xiàn)中需要這種分開和/或集成,且應(yīng)當(dāng)理解所描述的程序組件和系統(tǒng)通??梢栽趩蝹€軟件產(chǎn)品中集成在一起或者封裝到多個軟件產(chǎn)品中。

因此,示例實現(xiàn)的上述描述不定義或者限制本公開。在不脫離本公開的精神和保護范圍的情況下,其他改變、替換和變更也是可能的。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
子洲县| 桐乡市| 临朐县| 双桥区| 乌兰察布市| 黔西县| 巴青县| 广平县| 宣化县| 宜春市| 高州市| 莫力| 阿鲁科尔沁旗| 随州市| 左贡县| 松溪县| 松桃| 吴川市| 宁南县| 涡阳县| 泽普县| 胶州市| 库尔勒市| 红安县| 博爱县| 衡山县| 弥渡县| 贵港市| 安吉县| 临西县| 堆龙德庆县| 清镇市| 手游| 民权县| 屏东市| 武宁县| 灵璧县| 宝山区| 长治市| 城口县| 永康市|