用于web應(yīng)用的輕量化框架的制作方法
【專利摘要】本文描述的各種技術(shù)涉及使用基于腳本語言的框架來開發(fā)web應(yīng)用??山?jīng)由基于腳本語言的框架的接口來接收調(diào)用。該調(diào)用可管理基于腳本語言的框架中所包括的控件。此外,該調(diào)用可由參考基于腳本語言的框架的應(yīng)用來提供。此外,可基于由該調(diào)用管理的控件來生成用戶界面,并且可基于由該調(diào)用管理的控件來訪問云平臺上的分布式數(shù)據(jù)存儲所提供的基于云的后端服務(wù)。
【專利說明】用于web應(yīng)用的輕量化框架
[0001]背景
[0002]web應(yīng)用是可通過諸如因特網(wǎng)等網(wǎng)絡(luò)來訪問的應(yīng)用。web應(yīng)用可以用可通過客戶機側(cè)web瀏覽器或客戶機設(shè)備上的另一應(yīng)用(例如,移動應(yīng)用、桌面應(yīng)用等)來訪問和使用的瀏覽器支持的語言(例如,與標記語言相組合的腳本語言)來編碼。由于web瀏覽器的普遍性以及將web瀏覽器用作客戶機的便利,web應(yīng)用已經(jīng)變得逐漸流行。此外,web應(yīng)用的普及導(dǎo)致了集中式應(yīng)用市場的增長。
[0003]最近,云計算已經(jīng)變得更加普遍。因此,web應(yīng)用可被構(gòu)建在云平臺上,在那里web應(yīng)用可以在云中運行和/或使用云所提供的后端服務(wù)。構(gòu)建在云平臺上的應(yīng)用的常規(guī)開發(fā)通常涉及具備對各種云平臺專用信息(例如,協(xié)議、數(shù)據(jù)結(jié)構(gòu)等)的理解的web程序員,以便從云中讀取數(shù)據(jù)、向云寫入數(shù)據(jù)、使用其它后端服務(wù),等等。除了與開發(fā)云平臺上的應(yīng)用相關(guān)聯(lián)的這一復(fù)雜性之外,常規(guī)的開發(fā)經(jīng)??赡苁呛臅r的。隨著集中式應(yīng)用市場的增長,web程序員逐漸尋求以較少的時間編寫跨移動設(shè)備和web瀏覽器工作的強大應(yīng)用的方法。
[0004]概述
[0005]本文描述了涉及使用基于腳本語言的框架來開發(fā)web應(yīng)用的各種技術(shù)。可展示基于腳本語言的框架的接口。此外,可經(jīng)由基于腳本語言的框架的接口來接收調(diào)用。該調(diào)用可管理基于腳本語言的框架中所包括的控件。此外,該調(diào)用可由參考基于腳本語言的框架的應(yīng)用來提供。此外,可基于由該調(diào)用管理的控件來生成用戶界面,并且可基于由該調(diào)用管理的控件來訪問云平臺上的分布式數(shù)據(jù)存儲所提供的基于云的后端服務(wù)。
[0006]基于腳本語言的框架可包括被預(yù)編程為在被啟用時訪問基于云的后端服務(wù)并生成用戶界面的控件集合。根據(jù)一示例,可開發(fā)提供用于以下操作的調(diào)用的應(yīng)用:啟用、禁用基于腳本語言的框架中所包括的控件中的一個或多個、設(shè)置該一個或多個控件的屬性值等。例如,這些調(diào)用可以從應(yīng)用中所包括的腳本語言代碼中生成。由此,可開發(fā)采用被結(jié)合到基于腳本語言的框架中(例如通過管理控件集合)的功能的應(yīng)用,而不是通過將自定義代碼包括在應(yīng)用中來執(zhí)行這一功能。
[0007]在各種實施例中,由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)可包括以下各項中的一個或多個:向分布式數(shù)據(jù)存儲寫入數(shù)據(jù)、從分布式數(shù)據(jù)存儲中讀取數(shù)據(jù)、搜索被保存在分布式數(shù)據(jù)存儲中的數(shù)據(jù)、索引分布式數(shù)據(jù)存儲中的數(shù)據(jù),等等。另選地或另外地,可經(jīng)由云平臺上的分布式數(shù)據(jù)存儲和/或直接從基于腳本語言的框架來訪問一個或多個第三方服務(wù)。
[0008]以上概述呈現(xiàn)了簡化概述,以提供對本文描述的系統(tǒng)和/或方法的各方面的基本理解。本概述不是本文描述的系統(tǒng)和/或方法的廣義概觀。它并非意在標識關(guān)鍵/重要元素,亦非意欲描繪這類系統(tǒng)和/或方法的范圍。其唯一的目的是要以簡化形式給出一些概念以為稍后給出的更加具體的說明之序。
[0009]附圖簡述
[0010]圖1示出了方便開發(fā)web應(yīng)用的示例性系統(tǒng)的功能框圖。
[0011]圖2示出了方便開發(fā)采用第三方服務(wù)的web應(yīng)用的示例性系統(tǒng)的功能框圖。[0012]圖3示出了用于使用基于腳本語言的框架來開發(fā)應(yīng)用的示例性系統(tǒng)的功能框圖。
[0013]圖4是示出用于開發(fā)web應(yīng)用的示例性方法的流程圖。
[0014]圖5是示出用于開發(fā)web應(yīng)用的另一示例性方法的流程圖。
[0015]圖6示出了示例性計算設(shè)備。
[0016]詳細描述
[0017]現(xiàn)在參考附圖來描述涉及使用輕量化的客戶機側(cè)框架來開發(fā)web應(yīng)用的各種技術(shù),其中在附圖中貫穿始終使用相同的附圖標記來引述相同的要素。在以下描述中,出于解釋目的闡述了眾多具體細節(jié)以提供對一個或更多個方面的透徹理解。但是顯然的是,沒有這些具體細節(jié)也可實踐此(諸)方面。在其他實例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出以幫助描述一個或更多個方面。另外,可以理解,被描述為由特定系統(tǒng)組件執(zhí)行的功能可由多個組件執(zhí)行。類似地,例如,一組件可被配置成執(zhí)行被描述為由多個組件執(zhí)行的功能。
[0018]此外,術(shù)語“或”旨在表示包含性“或”而非排他性“或”。即,除非另外指明或從上下文能清楚地看出,否則短語“X采用A或B”旨在表示任何自然的可兼排列。即,短語“X米用A或B”藉由以下實例中任何實例得到滿足:X米用A ;X米用B ;或X米用A和B兩者。另外,本申請和所附權(quán)利要求書中所使用的冠詞“一”和“某”一般應(yīng)當(dāng)被解釋成表示“一個或多個”,除非另外聲明或者可從上下文中清楚看出是指單數(shù)形式。
[0019]如此處所闡述的,輕量化框架能夠方便web程序員進行快速web應(yīng)用開發(fā)。本文描述的輕量化框架可以是基于腳本語言的框架。此外,輕量化框架可使得能夠進行設(shè)備兼容用戶界面創(chuàng)建以及對云平臺上的分布式數(shù)據(jù)存儲中所保存的數(shù)據(jù)和/或由云平臺上的分布式數(shù)據(jù)存儲提供或可經(jīng)由該分布式數(shù)據(jù)存儲獲取的基于云的后端服務(wù)的訪問。相反,用于web應(yīng)用開發(fā)的常規(guī)框架通常支持用戶界面創(chuàng)建但不支持數(shù)據(jù)訪問。因此,在常規(guī)web應(yīng)用開發(fā)中,web程序員經(jīng)常需要具備云技術(shù)、數(shù)據(jù)結(jié)構(gòu)、協(xié)議等的知識,以便開發(fā)從云中讀取數(shù)據(jù)、向云寫入數(shù)據(jù)或采用其它基于云的后端服務(wù)的web應(yīng)用。
[0020]現(xiàn)在參考附圖,圖1示出了方便開發(fā)web應(yīng)用的系統(tǒng)100。系統(tǒng)100包括在一示例性實施例中是客戶機側(cè)框架的基于腳本語言的框架102。例如,基于腳本語言的框架102可以是特征豐富的輕量化框架。此外,基于腳本語言的框架102能夠通過緩解與在應(yīng)用開發(fā)期間執(zhí)行的常見活動相關(guān)聯(lián)的開銷來支持web應(yīng)用的開發(fā)。由于與這些常見活動相關(guān)聯(lián)的功能能夠被結(jié)合到基于腳本語言的框架102中,因此web程序員無需在應(yīng)用開發(fā)期間執(zhí)行這些活動,而是能夠改為創(chuàng)建使用由基于腳本語言的框架102供應(yīng)的功能的應(yīng)用。
[0021]開發(fā)web應(yīng)用通常涉及構(gòu)建用戶界面的集合以及構(gòu)建對后端系統(tǒng)的數(shù)據(jù)訪問(和/或構(gòu)建后端系統(tǒng))。用戶界面能夠收集來自用戶的各種形式的輸入并且能夠處理輸入以遵循后端系統(tǒng)的規(guī)范。此外,用戶界面可以向用戶呈現(xiàn)輸出?;谀_本語言的框架102通過允許web程序員既管理對后端系統(tǒng)的數(shù)據(jù)訪問也管理使用基本腳本語言代碼和/或標記語言代碼的用戶界面的創(chuàng)建來簡化web應(yīng)用的開發(fā)。例如,腳本語言可以是JavaScript?。
標記語言的示例可以是HTML。然而,應(yīng)該理解,所要求保護的主題不限于上述示例。
[0022]基于腳本語言的框架102包括數(shù)據(jù)訪問組件104和用戶界面(UI)創(chuàng)建組件106。數(shù)據(jù)訪問組件104與基于云的后端系統(tǒng)集成。具體而言,數(shù)據(jù)訪問組件104可訪問由云平臺110上的分布式數(shù)據(jù)存儲108提供的基于云的后端服務(wù)。例如,數(shù)據(jù)訪問組件104可以從分布式數(shù)據(jù)存儲108中讀取數(shù)據(jù)、向分布式數(shù)據(jù)存儲108寫入數(shù)據(jù)、采用由分布式數(shù)據(jù)存儲108抽象的第三方基于云的后端服務(wù),等等。數(shù)據(jù)訪問組件104可被設(shè)計成自動使用分布式數(shù)據(jù)存儲108 ;由此,由web程序員開發(fā)的web應(yīng)用能夠自動使用分布式數(shù)據(jù)存儲108,且web程序員無需集成對由分布式數(shù)據(jù)存儲108提供的基于云的后端服務(wù)的訪問。
[0023]此外,Π創(chuàng)建組件106可生成用戶界面的集合。UI創(chuàng)建組件106可生成能夠收集來自用戶的各種形式的輸入并且能夠處理輸入以遵循后端系統(tǒng)的規(guī)范的用戶界面。此外,UI創(chuàng)建組件106可生成能夠向用戶呈現(xiàn)輸出的用戶界面。
[0024]此外,基于腳本語言的框架102包括控件集合112。根據(jù)一示例,基于腳本語言的框架102可包括包含控件112的一個或多個腳本語言庫??丶?12可由Π創(chuàng)建組件106用來創(chuàng)建用戶界面且由數(shù)據(jù)訪問組件104用來訪問由云平臺110上的分布式數(shù)據(jù)存儲108提供的基于云的后端服務(wù)。根據(jù)一說明,當(dāng)來自控件112的給定控件被啟用時,Π創(chuàng)建組件106可基于該給定控件來生成用戶界面,并且數(shù)據(jù)訪問組件可基于該給定控件來訪問由云平臺110上的分布式數(shù)據(jù)存儲108提供的基于云的后端服務(wù)。由此,該給定控件能夠被web程序員利用,而不是web程序員編寫自定義代碼來提供該給定控件的功能。
[0025]基于腳本語言的框架102還可包括接口組件114。該接口組件114可以是用于應(yīng)用116 (例如,web應(yīng)用)的腳本語言接口,其中應(yīng)用116可包括腳本語言代碼和/或標記語言代碼。應(yīng)用116可經(jīng)由接口組件114來參考基于腳本語言的框架102以采用被結(jié)合到該基于腳本語言的框架102中的功能。此外,應(yīng)用116可經(jīng)由接口組件114來向基于腳本語言的框架102提供調(diào)用。例如,調(diào)用可管理控件112中的一個或多個(例如,調(diào)用可管理來自控件112的控件)。根據(jù)一示例,調(diào)用可以從應(yīng)用116中所包括的腳本語言代碼中生成;由此,應(yīng)用116可包括能夠生成管理控件112中的一個或多個的一個或多個調(diào)用的腳本語言代碼,其中該一個或多個調(diào)用可經(jīng)由接口組件114被提供給基于腳本語言的框架102。
[0026]基于腳本語言的框架102中的控件112可基于應(yīng)用116中所包括的腳本語言代碼來啟用或禁用(例如,響應(yīng)于由應(yīng)用116經(jīng)由接口組件114提供的調(diào)用)。此外,控件112可具有可由應(yīng)用116中的腳本語言來管理的屬性和效果(例如,響應(yīng)于由應(yīng)用116經(jīng)由接口組件114提供的調(diào)用)。根據(jù)一示例,控件112中的一個或多個可基于應(yīng)用116中的腳本語言代碼來動態(tài)地樣式化。作為另一示例,控件112中的一個或多個可具有可響應(yīng)于應(yīng)用116中的腳本語言代碼來設(shè)置的屬性范圍。
[0027]基于腳本語言的框架102可由web程序員在開發(fā)應(yīng)用116時使用?;谀_本語言的框架102提供與數(shù)據(jù)訪問(例如經(jīng)由數(shù)據(jù)訪問組件104)以及用戶界面生成(例如經(jīng)由UI創(chuàng)建組件106)有關(guān)的功能。因此,使用基于腳本語言的框架102可減少web程序員在開發(fā)應(yīng)用116時花費的時間量。因此,基于腳本語言的框架102能夠提高應(yīng)用116的web程序員的使用腳本語言代碼和/或標記語言代碼來管理數(shù)據(jù)訪問和用戶界面創(chuàng)建的能力。
[0028]數(shù)據(jù)訪問組件104能夠直接訪問云平臺110上的分布式數(shù)據(jù)存儲108。因此,web程序員能夠使用簡單的腳本語言代碼和/或標記語言代碼來生成對分布式數(shù)據(jù)存儲108進行讀和/或?qū)懙膽?yīng)用116。web程序員能夠在不具備云技術(shù)、數(shù)據(jù)結(jié)構(gòu)、協(xié)議等的知識的情況下創(chuàng)建應(yīng)用116。相反,應(yīng)用116可管理(例如,啟用、禁用、設(shè)置屬性或效果的值、樣式化等)控件112中的一個或多個;基于如由應(yīng)用116管理的控件112中的一個或多個,數(shù)據(jù)訪問組件104能夠直接訪問云平臺110上的分布式數(shù)據(jù)存儲108。
[0029]分布式數(shù)據(jù)存儲108被構(gòu)建在云平臺110上。分布式數(shù)據(jù)存儲108可以是云平臺110上的可完全伸縮、復(fù)制的數(shù)據(jù)存儲。在一示例性實施例中,分布式數(shù)據(jù)存儲108可以是NoSQL存儲。此外,分布式數(shù)據(jù)存儲108可被構(gòu)建在搜索組件118和索引組件120上。搜索組件118可以是提供全文本和/或圖像搜索的搜索引擎。作為對搜索組件118和索引組件120的補充或替換,云平臺110還可提供其它后端服務(wù)。由此,根據(jù)一示例,數(shù)據(jù)訪問組件104可使用搜索組件118來搜索分布式數(shù)據(jù)存儲108中的數(shù)據(jù),使用索引組件120來索引分布式數(shù)據(jù)存儲108中的數(shù)據(jù),等等。
[0030]云平臺110上的分布式數(shù)據(jù)存儲108通過應(yīng)用編程接口(API) 122的集合來展示。API122可以是具有REST(代表性狀態(tài)轉(zhuǎn)移)特性的API。此外,API122可被集成到基于腳本語言的框架102中。例如,數(shù)據(jù)訪問組件104可采用API122來訪問分布式數(shù)據(jù)存儲108。因此,基于腳本語言的框架102可抽象API122以使得web程序員無需學(xué)習(xí)如何利用API122。相反,接口組件114可展示可由web程序員用來開發(fā)應(yīng)用116的簡單腳本語言接口。作為示例,可以在基于腳本語言的框架102中獲取的控件112可經(jīng)由接口組件114來展示。
[0031]此外,第三方服務(wù)的集合可被集成到分布式數(shù)據(jù)存儲108中:即,第三方服務(wù)1124……以及第三方服務(wù)N126,其中N可以是幾乎任何整數(shù)(此處統(tǒng)稱為第三方服務(wù)124-126)。因此,分布式數(shù)據(jù)存儲108可提供對第三方服務(wù)124-126的API的訪問。此處,數(shù)據(jù)訪問組件104可經(jīng)由云平臺110上的分布式數(shù)據(jù)存儲108來訪問第三方服務(wù)124-126(例如,第三方基于云的后端服務(wù))。第三方服務(wù)124-126的示例可包括web搜索服務(wù)、圖像搜索服務(wù)、視頻搜索服務(wù)、社交網(wǎng)絡(luò)服務(wù)、微博服務(wù)、地圖服務(wù)、半結(jié)構(gòu)化數(shù)據(jù)庫搜索服務(wù)、認證服務(wù)、云平臺服務(wù),等等。然而,將會認識到所要求保護的主題不限于第三方服務(wù)124-126的上述示例,而是任何第三方服務(wù)都旨在落入所附權(quán)利要求書的范圍內(nèi)。
[0032]此外,當(dāng)完成開發(fā)時,應(yīng)用116可被上傳到web主存服務(wù)(未示出)。由于,應(yīng)用116可以用腳本語言代碼和 /或標記語言代碼來編寫,因此應(yīng)用116可被嵌入或上傳到例如幾乎任何網(wǎng)站。當(dāng)變得可用時,應(yīng)用116可被檢索并加載到客戶機設(shè)備(未示出)的web瀏覽器上以供執(zhí)行。此外,應(yīng)用116可以是客戶機設(shè)備不可知的,以使其能夠跨現(xiàn)代桌面、膝上型和移動瀏覽器工作。
[0033]以下闡述展示了一種用于開發(fā)在基于云的數(shù)據(jù)存儲中維護地址簿的應(yīng)用的常規(guī)方法。web程序員最初可定義數(shù)據(jù)對象和數(shù)據(jù)對象之間的關(guān)系(例如,人、人所屬的組織等)。之后,web程序員可構(gòu)建用戶界面的集合。根據(jù)一示例,web程序員可構(gòu)建用于創(chuàng)建聯(lián)系人的用戶界面、用于將聯(lián)系人與其它聯(lián)系人相關(guān)聯(lián)的用戶界面、用于更新聯(lián)系人的用戶界面、用于刪除聯(lián)系人的用戶界面、用于搜索聯(lián)系人的用戶界面,等等。當(dāng)開發(fā)這些用戶界面和定義數(shù)據(jù)對象時,web程序員可構(gòu)建后端服務(wù)的集合(例如,基于云的后端服務(wù))和/或構(gòu)建訪問后端服務(wù)的集合的系統(tǒng)。后端服務(wù)的示例可包括用于向基于云的數(shù)據(jù)存儲寫入數(shù)據(jù)的服務(wù)、用于從基于云的數(shù)據(jù)存儲讀取數(shù)據(jù)的服務(wù)、用于搜索被保存在基于云的數(shù)據(jù)存儲中的數(shù)據(jù)的服務(wù)、用于編輯基于云的數(shù)據(jù)存儲中的數(shù)據(jù)的服務(wù)、用于從基于云的數(shù)據(jù)存儲中刪除數(shù)據(jù)的服務(wù),等等。上述方法對于web程序員而言可能是耗時的。此外,這一開發(fā)可涉及對各種協(xié)議、數(shù)據(jù)結(jié)構(gòu)等的重要理解。
[0034]相反,基于腳本語言的框架102與云平臺110上的分布式數(shù)據(jù)存儲108集成。此外,基于腳本語言的框架102包括可根據(jù)應(yīng)用116中所包括的腳本語言代碼來管理的控件集合112。此外,控件112可以在基于腳本語言的框架102內(nèi)被預(yù)編程為訪問基于云的后端系統(tǒng)(例如,云平臺110上的分布式數(shù)據(jù)存儲108)。由此,web程序員可編寫腳本語言代碼和/或標記語言代碼以管理被集成到云平臺110上的分布式數(shù)據(jù)存儲108的豐富后端中的基于腳本語言的框架102的控件112,而不是web程序員必須執(zhí)行一定范圍的后端編程以及用戶界面開發(fā)。
[0035]現(xiàn)在參考圖2,所示的是方便開發(fā)采用第三方服務(wù)的web應(yīng)用的系統(tǒng)200。系統(tǒng)200包括基于腳本語言的框架102,該基于腳本語言的框架102可以進一步包括數(shù)據(jù)訪問組件104、Π創(chuàng)建組件106、控件集合112以及接口組件114。如上所述,數(shù)據(jù)訪問組件104能夠經(jīng)由ΑΡΙ122來直接訪問云平臺110上的分布式數(shù)據(jù)存儲108。
[0036]此外,一個或多個第三方服務(wù)可被直接集成到基于腳本語言的框架102中。由此,第三方服務(wù)1202……以及第三方服務(wù)Μ204(此處統(tǒng)稱為第三方服務(wù)202-204)的API可被展示給基于腳本語言的框架102的數(shù)據(jù)數(shù)據(jù)訪問組件104,其中M可以是幾乎任何整數(shù)。基于腳本語言的框架102可以抽象第三方服務(wù)202-204的API。因此,應(yīng)用116可包括管理控件112中的一個或多個的腳本語言代碼,其中控件112可使得數(shù)據(jù)數(shù)據(jù)訪問組件104采用第三方服務(wù)202-204中的一個或多個,而應(yīng)用116的web程序員無需具備用于該一個或多個第三方服務(wù)202-204的API的數(shù)據(jù)結(jié)構(gòu)、協(xié)議等的知識。由此,web程序員無需在開發(fā)應(yīng)用116時編寫訪問該一個或多個第三方服務(wù)202-204的代碼,因為這一集成被結(jié)合到基于腳本語言的框架102中。
[0037]第三方服務(wù)202-204的示例可包括web搜索服務(wù)、圖像搜索服務(wù)、視頻搜索服務(wù)、社交網(wǎng)絡(luò)服務(wù)、微博服務(wù)、地圖服務(wù)、半結(jié)構(gòu)化數(shù)據(jù)庫搜索服務(wù)、認證服務(wù)、云平臺服務(wù),等等。但是,所要求保護的主題不限于第三方服務(wù)202-204的上述示例。根據(jù)一示例,第三方服務(wù)可被集成到分布式數(shù)據(jù)存儲108和數(shù)據(jù)訪問組件104中(例如,第三方服務(wù)可以是第三方服務(wù)124-126中的一個以及第三方服務(wù)202-204中的一個)。另外地或另選地,第三方服務(wù)可被集成到分布式數(shù)據(jù)存儲108或數(shù)據(jù)訪問組件104中(例如,第三方服務(wù)可以是第三方服務(wù)124-126中的一個或者第三方服務(wù)202-204中的一個)。
[0038]作為示例,當(dāng)客戶機設(shè)備(例如,執(zhí)行應(yīng)用116的設(shè)備)的網(wǎng)際協(xié)議(IP)地址將被提供給第三方服務(wù)(例如,以便返回與該IP地址相關(guān)的內(nèi)容)時,一控件(例如來自控件112)可使得數(shù)據(jù)訪問組件104直接向該第三方服務(wù)提供該IP地址,而不是間接地向該第三方服務(wù)傳遞該IP地址。由此,數(shù)據(jù)訪問組件104可將IP地址發(fā)送到與其直接集成的第三方服務(wù)202-204中的一個或多個,而不是將IP地址發(fā)送到可經(jīng)由云平臺110上的分布式數(shù)據(jù)存儲108來訪問的第三方服務(wù)124-126中的一個或多個。
[0039]現(xiàn)在轉(zhuǎn)向圖3,所示的是用于使用基于腳本語言的框架102來開發(fā)應(yīng)用116的系統(tǒng)300?;谀_本語言的框架102包括數(shù)據(jù)訪問組件104、UI創(chuàng)建組件106以及接口組件114,數(shù)據(jù)訪問組件104可訪問基于云的后端系統(tǒng)(例如,圖1的云平臺上的分布式數(shù)據(jù)存儲108、圖2的第三方服務(wù)202-204等),Π創(chuàng)建組件106生成用戶界面,而接口組件114可以與應(yīng)用116接口。
[0040]此外,基于腳本語言的框架102包括控件112。控件112可以基于例如模型-視圖-控制器(MVC)模型。控件112可根據(jù)應(yīng)用116中所包括的腳本語言代碼來啟用或禁用。例如,當(dāng)控件112中的一個或多個在應(yīng)用116中被啟用時,所啟用的控件112可使得Π倉Ij建組件106生成用戶界面。此外,控件112可具有可對其應(yīng)用的屬性和效果的范圍。根據(jù)一說明,控件112中的一個或多個可基于應(yīng)用116中的腳本語言代碼來樣式化。例如,控件112中的一個或多個可由應(yīng)用116來管理以使得Π創(chuàng)建組件106動畫化呈現(xiàn)在客戶機設(shè)備的顯示器上的用戶界面。可能的動畫可被結(jié)合到基于腳本語言的框架102中所包括的控件112中。根據(jù)另一示例,基于腳本語言的框架102中所包括的控件112彼此可具有依賴性;根據(jù)該示例,控件112之間的依賴性可允許Π創(chuàng)建組件106在所生成的用戶界面中提供豐富的動畫。作為另一示例,控件112可具有多個屬性,諸如名稱、標題等。
[0041]根據(jù)一示例,控件112中的一個或多個可管理對應(yīng)用116的認證。例如,應(yīng)用116可包括從可用的認證方案集合(例如由不同的第三方服務(wù)所提供的)中選擇一認證方案的腳本語言代碼。之后,所選認證方案能夠從后端(例如圖1的云平臺110上的分布式數(shù)據(jù)存儲108)直到前端地跨系統(tǒng)采用。
[0042]此外,Π創(chuàng)建組件106可包括定制組件302,該定制組件可檢測其上正在運行應(yīng)用116的客戶機設(shè)備的能力并根據(jù)檢測到的能力來修改基于控件112中的一個或多個所生成的用戶界面。例如,如果應(yīng)用116被加載在智能電話上,定制組件302可檢測到該客戶機設(shè)備包括相機和話筒。根據(jù)該示例,定制組件302可修改由UI創(chuàng)建組件106基于控件112中的一個或多個所生成的用戶界面以包括與智能電話的相機和話筒相關(guān)的特征,而這些特征可以在定制組件302檢測到客戶機設(shè)備缺少相機和話筒時在由UI創(chuàng)建組件106生成的用戶界面中省略。通過包括定制組件302,基于腳本語言的框架102可使得應(yīng)用116能夠采用其上正在執(zhí)行應(yīng)用116的客戶機設(shè)備的能力。此外,應(yīng)用116可通過利用被結(jié)合到基于腳本語言的框架102中的定制組件302,在web程序員沒有為了支持各種類型的設(shè)備而進行編碼的情況下跨移動設(shè)備、臺式設(shè)備、膝上型設(shè)備等工作。
[0043]UI創(chuàng)建組件106還可包括可以分階段鋪排(rollout)應(yīng)用116的特征的欄柵(flighting)組件304。例如,web程序員可能期望特定用戶子集可訪問應(yīng)用116的一特征。因此,欄柵組件304能夠在針對該用戶子集所生成的用戶界面中提供應(yīng)用116的特征,而在針對應(yīng)用116的其余用戶所生成的用戶界面中隱藏該特征。通過在基于腳本語言的框架102中包括欄柵組件304,web程序員無需編寫用于允許分階段鋪排應(yīng)用116的特征的自定義代碼。
[0044]此外,基于腳本語言的框架102可包括從控件112接收通知并向控件112發(fā)送通知的通知組件306。因此,在基于腳本語言的框架102中,通知組件306可以在控件112之間交換信息,這可允許具有控件112之間的依賴性。根據(jù)一說明,應(yīng)用116可以是腳本語言外殼,其可包括生成對多個控件112的調(diào)用的腳本語言代碼。根據(jù)該說明,在應(yīng)用116內(nèi)調(diào)用的多個控件112可以從通知組件306接收外殼級通知,由此方便多個控件112之間的交互。
[0045]例如,兩個控件(例如來自控件112)可被包括在網(wǎng)頁上;例如一個控件可以是名稱的列表視圖,而另一控件可以是詳細視圖。根據(jù)該示例,這兩個控件可經(jīng)由通知組件306交換信息。因此,例如如果在該列表視圖中選擇了(例如點擊)一名稱,則詳細視圖可顯示對應(yīng)于列表視圖中的所選名稱的細節(jié)。此外,通知組件306可交換控件112所使用的信息以實現(xiàn)事件鏈接。因此,控件112的行為可基于事件(例如,加載數(shù)據(jù)、處理事務(wù)、完成動畫、接收到用戶輸入等)來鏈接。[0046]此外,數(shù)據(jù)訪問組件104可包括可將控件112綁定到數(shù)據(jù)源(例如,基于云的后端系統(tǒng))的源綁定組件308。根據(jù)一示例,源綁定組件308可將控件112中的兩個控件綁定到來自不同源的對象。根據(jù)該示例,源綁定組件308可將控件112中的一個控件綁定到來自第一社交網(wǎng)絡(luò)服務(wù)的對象,將控件112中的另一控件綁定到來自第二社交網(wǎng)絡(luò)服務(wù)的對象;但是,可以理解,所要求保護的主題不限于上述示例。由于源綁定組件308可將控件112綁定到不同的數(shù)據(jù)源,因此數(shù)據(jù)訪問組件104可以對來自各種數(shù)據(jù)源的信息采用規(guī)范化模式。這一模式規(guī)范化可允許控件112之間的靈活的信息交換。在各種實施例中,源綁定組件308可將控件112中的一個或多個綁定到開放數(shù)據(jù)協(xié)議(0D數(shù)據(jù))源;然而,可以理解,所要求保護的主題不限于此。
[0047]圖4-5示出了涉及使用基于腳本語言的框架來開發(fā)web應(yīng)用的示例性方法。盡管各方法被示出和描述為順序地執(zhí)行的一系列動作,但可以理解和感知的是,這些方法不受該順序的次序的限制。例如,一些動作能以與本文描述的不同的次序發(fā)生。另外,動作可以與另一動作并發(fā)地發(fā)生。此外,在一些實例下,實現(xiàn)本文描述的方法并不需要所有動作。
[0048]此外,本文描述的動作可以是可由一個或多個處理器實現(xiàn)的和/或存儲在一個或多個計算機可讀介質(zhì)上的計算機可執(zhí)行指令。計算機可執(zhí)行指令可包括例程、子例程、程序、執(zhí)行的線程等。另外,這些方法的動作的結(jié)果可以存儲在計算機可讀介質(zhì)中,顯示在顯不設(shè)備上,等等。
[0049]圖4示出了用于開發(fā)web應(yīng)用的方法400。在402,可展示基于腳本語言的框架的接口。在404,可經(jīng)由該接口來接收調(diào)用。經(jīng)由該接口接收到的調(diào)用可管理基于腳本語言的框架中所包括的控件。此外,該調(diào)用可由參考基于腳本語言的框架的應(yīng)用來提供。例如,該調(diào)用可啟用控件、禁用控件、設(shè)置控件的屬性或效果等。在406,可基于如通過調(diào)用管理的控件來生成用戶界面。在408,可基于如通過調(diào)用管理的控件來訪問由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)。
[0050]現(xiàn)在轉(zhuǎn)向圖5,所示的是用于開發(fā)web應(yīng)用的方法500。在502,可展示基于腳本語言的框架的接口,該框架包括被預(yù)編程為在被啟用時訪問基于云的后端服務(wù)并生成用戶界面的控件集合。在504,可經(jīng)由該接口來接收啟用來自基于腳本語言的框架中所包括的控件集合的控件的調(diào)用。該調(diào)用可由參考基于腳本語言的框架的應(yīng)用來提供。在506,可基于通過調(diào)用啟用的控件來生成用戶界面。在508,可基于通過調(diào)用啟用的控件來訪問由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)。
[0051]現(xiàn)在參考圖6,示出了可以根據(jù)本文公開的系統(tǒng)和方法使用的示例性計算設(shè)備600的高級圖示。例如,計算設(shè)備600可以在使用基于腳本語言的框架來開發(fā)web應(yīng)用的系統(tǒng)中使用。作為另一示例,計算設(shè)備600可以在執(zhí)行被構(gòu)建在基于腳本語言的框架上的web應(yīng)用的系統(tǒng)中使用。計算設(shè)備600包括執(zhí)行存儲在存儲器604中的指令的至少一個處理器602。這些指令可以是例如用于實現(xiàn)被描述為由上述一個或多個組件執(zhí)行的功能的指令或用于實現(xiàn)上述方法中的一個或多個的指令。處理器602可以通過系統(tǒng)總線606訪問存儲器604。除了存儲可執(zhí)行指令之外,存儲器604還可存儲應(yīng)用、基于腳本語言的框架等等。
[0052]計算設(shè)備600還包括可由處理器602通過系統(tǒng)總線606訪問的數(shù)據(jù)存儲608。數(shù)據(jù)存儲608可包括可執(zhí)行指令、應(yīng)用、基于腳本語言的框架等。計算設(shè)備600還包括允許外部設(shè)備與計算設(shè)備600進行通信的輸入接口 610。例如,輸入接口 610可被用于從外部計算機設(shè)備、從用戶等處接收指令。計算設(shè)備600也可包括使計算設(shè)備600和一個或多個外部設(shè)備相對接的輸出接口 612。例如,計算設(shè)備600可以通過輸出接口 612顯示文本、圖像
坐寸ο
[0053]另外,盡管被示為單個系統(tǒng),但可以理解,計算設(shè)備600可以是分布式系統(tǒng)。因此,例如,若干設(shè)備可以通過網(wǎng)絡(luò)連接進行通信并且可共同執(zhí)行被描述為由計算設(shè)備600執(zhí)行的任務(wù)。
[0054]如本文所使用的,術(shù)語“組件”和“系統(tǒng)”旨在包含用使得在被處理器執(zhí)行時執(zhí)行特定功能的計算機可執(zhí)行指令配置的計算機可讀數(shù)據(jù)存儲。計算機可執(zhí)行指令可包括例程、功能等等。還要理解組件或系統(tǒng)可以位于單個設(shè)備上或分布在若干設(shè)備之間。
[0055]另外,如此處所用的,術(shù)語“示例性”旨在是指“充當(dāng)某事物的圖示或示例”。
[0056]在此所述的各種功能可以以硬件、軟件或其任何組合來實現(xiàn)。如果在軟件中實現(xiàn),則各功能可以作為一條或更多條指令或代碼存儲在計算機可讀介質(zhì)上或藉其進行傳送。計算機可讀介質(zhì)包括計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)可以是可由計算機訪問的任何可用存儲介質(zhì)。作為示例而非限定,這樣的計算機可讀介質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或能被用來承載或存儲指令或數(shù)據(jù)結(jié)構(gòu)形式的期望程序代碼且能被計算機訪問的任何其他介質(zhì)。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(CD)、激光碟、光碟、數(shù)字多用碟(DVD)、軟盤和藍光碟(BD),其中盤(disk)往往以磁的方式再現(xiàn)數(shù)據(jù),而碟(disc)常常用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。另外,所傳播的信號不被包括在計算機可讀存儲介質(zhì)的范圍內(nèi)。計算機可讀介質(zhì)還包括通信介質(zhì),其包括促成計算機程序從一地向另一地轉(zhuǎn)移的任何介質(zhì)。連接例如可以是通信介質(zhì)。例如,如果軟件使用同軸電纜、光纖電纜、雙絞線、數(shù)字訂戶線(DSL)、或諸如紅外線、無線電、以及微波之類的無線技術(shù)來從web網(wǎng)站、服務(wù)器、或其它遠程源傳輸,則該同軸電纜、光纖電纜、雙絞線、DSL、或諸如紅外線、無線電、以及微波之類的無線技術(shù)被包括在通信介質(zhì)的定義中。上述的組合也應(yīng)被包括在計算機可讀介質(zhì)的范圍內(nèi)。
[0057]以上所描述的包括一個或多個實施例的示例。當(dāng)然,出于描繪前述各方面的目的而描述上述設(shè)備或方法的每個可以想到修改和改變是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員可以認識到,各方面的許多另外的組合和置換都是可能的。因此,所描述的各方面旨在包括所有這些屬于所附權(quán)利要求書的精神和范圍內(nèi)的改變、修改和變型。此外,就在詳細描述或權(quán)利要求書中使用術(shù)語“包括”而言,這一術(shù)語旨在以與術(shù)語“包含在被用作權(quán)利要求書中的過渡詞時所解釋的相似的方式為包含性的。
【權(quán)利要求】
1.一種開發(fā)web應(yīng)用的方法,包括: 展示基于腳本語言的框架的接口; 經(jīng)由所述接口來接收管理所述基于腳本語言的框架中所包括的控件的調(diào)用,其中所述調(diào)用是由參考所述基于腳本語言的框架的應(yīng)用提供的; 基于如通過所述調(diào)用管理的控件來生成用戶界面;以及 基于如通過所述調(diào)用管理的控件來訪問由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用是從所述應(yīng)用中所包括的腳本語言代碼中生成的。
3.如權(quán)利要求1所述的方法,其特征在于,管理所述控件的調(diào)用啟用所述控件或禁用所述控件。
4.如權(quán)利要求1所 述的方法,其特征在于,所述控件在所述基于腳本語言的框架內(nèi)被預(yù)編程為訪問由所述云平臺上的所述分布式數(shù)據(jù)存儲提供的所述基于云的后端服務(wù)。
5.如權(quán)利要求1所述的方法,其特征在于,還包括基于所述調(diào)用來設(shè)置所述控件的屬性或所述控件的效果中的至少一個的值。
6.如權(quán)利要求1所述的方法,其特征在于,基于如通過所述調(diào)用管理的控件來訪問由所述云平臺上的所述分布式數(shù)據(jù)存儲提供的所述基于云的后端服務(wù)還包括以下各項中的至少一個: 基于如通過所述調(diào)用管理的控件來向所述云平臺上的所述分布式數(shù)據(jù)存儲寫入數(shù)據(jù); 基于如通過所述調(diào)用管理的控件來從所述云平臺上的所述分布式數(shù)據(jù)存儲中讀取數(shù)據(jù); 基于如通過所述調(diào)用管理的控件來搜索所述云平臺上的所述分布式數(shù)據(jù)存儲中的數(shù)據(jù);或者 基于如通過所述調(diào)用管理的控件來索引所述云平臺上的所述分布式數(shù)據(jù)存儲中的數(shù)據(jù)。
7.如權(quán)利要求1所述的方法,其特征在于,基于如通過所述調(diào)用管理的控件來訪問由所述云平臺上的所述分布式數(shù)據(jù)存儲提供的所述基于云的后端服務(wù)還包括基于如通過所述調(diào)用管理的控件來訪問被集成到所述云平臺上的所述分布式數(shù)據(jù)存儲中的第三方服務(wù)。
8.如權(quán)利要求7所述的方法,其特征在于,被集成到所述云平臺上的所述分布式數(shù)據(jù)存儲中的所述第三方服務(wù)包括以下各項中的一個或多個:web搜索服務(wù)、圖像搜索服務(wù)、視頻搜索服務(wù)、社交網(wǎng)絡(luò)服務(wù)、微博服務(wù)、地圖服務(wù)、半結(jié)構(gòu)化數(shù)據(jù)庫搜索服務(wù)、認證服務(wù)或者云平臺服務(wù)。
9.如權(quán)利要求1所述的方法,其特征在于,還包括基于如通過所述調(diào)用管理的控件來采用被直接集成到所述基于腳本語言的框架中的第三方服務(wù)。
10.如權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用包括提供管理所述基于腳本語言的框架中所包括的多個控件的多個調(diào)用的腳本語言代碼。
11.如權(quán)利要求10所述的方法,其特征在于,還包括在由所述應(yīng)用提供的所述多個調(diào)用管理的所述多個控件之間交換信息。
12.如權(quán)利要求10所述的方法,其特征在于,還包括: 將所述多個控件中的第一控件綁定到來自第一數(shù)據(jù)源的對象;以及 將所述多個控件中的第二控件綁定到來自第二數(shù)據(jù)源的對象。
13.如權(quán)利要求1所述的方法,其特征在于,所述基于腳本語言的框架是客戶機側(cè)框架。
14.一種基于腳本語言的框架,包括: 被預(yù)編程為在被啟用時訪問基于云的后端服務(wù)并生成用戶界面的控件集合; 接收管理來自所述集合的控件的調(diào)用的接口組件,其中所述調(diào)用是由參考所述基于腳本語言的框架的應(yīng)用來提供的; 基于如通過所述調(diào)用管理的控件來生成用戶界面的用戶界面(UI)創(chuàng)建組件;以及基于如通過所述調(diào)用管理的控件來訪問由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)的數(shù)據(jù)訪問組件。
15.如權(quán)利要求14所述的基于腳本語言的框架,其特征在于,所述數(shù)據(jù)訪問組件基于如通過所述調(diào)用管理的控件來訪問被集成到所述云平臺上的所述分布式數(shù)據(jù)存儲中的第三方服務(wù)。
16.如權(quán)利要求14所述的基于腳本語言的框架,其特征在于,所述數(shù)據(jù)訪問組件基于如通過所述調(diào)用管理的控件來利用被直接集成到所述基于腳本語言的框架中的第三方服務(wù)。
17.如權(quán)利要求14所述的基于腳本語言的框架,其特征在于,還包括在所述集合中的多個控件之間交換信息的通知組件。
18.如權(quán)利要求14所述的基于腳本語言的框架,其特征在于,還包括定制組件,所述定制組件檢測其上正在運行所述應(yīng)用的客戶機設(shè)備的能力并根據(jù)所述能力來修改基于所述控件生成的用戶界面。
19.如權(quán)利要求14所述的基于腳本語言的框架,其特征在于,所述數(shù)據(jù)訪問組件執(zhí)行以下操作中的至少一個:基于如通過所述調(diào)用管理的控件來向所述云平臺上的所述分布式數(shù)據(jù)存儲寫入數(shù)據(jù)、基于如通過所述調(diào)用管理的控件來從所述云平臺上的所述分布式數(shù)據(jù)存儲中讀取數(shù)據(jù)、基于如通過所述調(diào)用管理的控件來搜索所述云平臺上的所述分布式數(shù)據(jù)存儲中的數(shù)據(jù)、或者基于如通過所述調(diào)用管理的控件來索引所述云平臺上的所述分布式數(shù)據(jù)存儲中的數(shù)據(jù)。
20.一種包括計算機可執(zhí)行指令的計算機可讀存儲介質(zhì),所述計算機可執(zhí)行指令在被處理器執(zhí)行時致使所述處理器執(zhí)行動作,所述動作包括: 展示基于腳本語言的框架的接口,所述基于腳本語言的框架包括被預(yù)編程為在被啟用時訪問基于云的后端服務(wù)并生成用戶界面的控件集合; 經(jīng)由所述接口來接收啟用來自所述基于腳本語言的框架中所包括的所述控件集合的控件的調(diào)用,其中所述調(diào)用是由參考所述基于腳本語言的框架的應(yīng)用提供的; 基于如通過所述調(diào)用啟用的控件來生成用戶界面;以及 基于如通過所述調(diào)用啟用的控件來訪問由云平臺上的分布式數(shù)據(jù)存儲提供的基于云的后端服務(wù)。
【文檔編號】G06F15/16GK103988200SQ201280061101
【公開日】2014年8月13日 申請日期:2012年12月12日 優(yōu)先權(quán)日:2011年12月12日
【發(fā)明者】S·伊克曼, D·拉斯基諾 申請人:微軟公司