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

通過(guò)映射表達(dá)式求值的web站點(diǎn)實(shí)現(xiàn)的制作方法

文檔序號(hào):6360834閱讀:210來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):通過(guò)映射表達(dá)式求值的web站點(diǎn)實(shí)現(xiàn)的制作方法
通過(guò)映射表達(dá)式求值的web站點(diǎn)實(shí)現(xiàn)
背景技術(shù)
—種形式的web站點(diǎn)實(shí)現(xiàn)發(fā)生于,例如,當(dāng)web應(yīng)用在執(zhí)行過(guò)程中檢索、倉(cāng)ll建、修改、或以其他方式提供web頁(yè)面時(shí)。有時(shí)使用web應(yīng)用框架來(lái)創(chuàng)建web應(yīng)用。例如,通過(guò)提供數(shù)據(jù)庫(kù)存取的庫(kù)、提供模板、管理進(jìn)程、和促進(jìn)代碼重用,這樣的框架可有助于web應(yīng)用開(kāi)發(fā)。Web應(yīng)用框架可有助于編程者建立動(dòng)態(tài)web站點(diǎn)、web應(yīng)用、和web服務(wù)。還可使用web-腳本工具實(shí)現(xiàn)web站點(diǎn)。內(nèi)嵌在HTML源中的腳本可由web服務(wù)器編譯來(lái)生成web頁(yè)面。

發(fā)明內(nèi)容
開(kāi)發(fā)可縮放的動(dòng)態(tài)web應(yīng)用可能是復(fù)雜且挑戰(zhàn)性的項(xiàng)目。此處描述的一些實(shí)施例提供方法,其通過(guò)允許編程者使用包含表達(dá)式(其求值按需生成web頁(yè)面)的聲明性結(jié)構(gòu)可 使得web站點(diǎn)實(shí)現(xiàn)更為容易。例如,一些實(shí)施例接收HTTP請(qǐng)求,其包括路徑、和從路徑到可套用映射數(shù)據(jù)結(jié)構(gòu)的表達(dá)式的映射;該映射數(shù)據(jù)結(jié)構(gòu)可包括共同代表web站點(diǎn)的多個(gè)表達(dá)式。在不必要對(duì)映射數(shù)據(jù)結(jié)構(gòu)的其他表達(dá)式進(jìn)行求值的情況下,求值表達(dá)式提供了結(jié)果。對(duì)于HTTP請(qǐng)求的HTTP響應(yīng),包含求值結(jié)果,被生成并被提供,如,以動(dòng)態(tài)web頁(yè)面、圖像、級(jí)聯(lián)樣式表、或另一個(gè)web資源的形式。在一些實(shí)施例中,還可生成,對(duì)于FTP請(qǐng)求、以及對(duì)于使用分層命名規(guī)范的其他網(wǎng)絡(luò)應(yīng)用層請(qǐng)求的響應(yīng)。在一些實(shí)施例中,用聲明性(相對(duì)于命令性)編程語(yǔ)言寫(xiě)成表達(dá)式。表達(dá)式的求值可包括,與特定聲明性編程語(yǔ)言的規(guī)則一致,進(jìn)行解析或進(jìn)行函數(shù)調(diào)用。求值還可使用聲明性編程語(yǔ)言的惰性求值機(jī)制。表達(dá)式可包括,例如,對(duì)于返回在路徑中被指定的文件的內(nèi)容的函數(shù)、或返回文本串的函數(shù)的調(diào)用,或者表達(dá)式可求值為文本串。在一些情況下,表達(dá)式可調(diào)用產(chǎn)生副作用的函數(shù),如,DELETE, PUT, POST等。一些實(shí)施例遞歸地將目錄名映射為文件名的映射;一些遞歸地映射可動(dòng)態(tài)建構(gòu)的記錄,記錄包括至少一個(gè)字段-值對(duì)。在一些實(shí)施例中,在映射數(shù)據(jù)結(jié)構(gòu)(用M編程語(yǔ)言版本中被聲明)中發(fā)生表達(dá)式。一些實(shí)施例提升了可縮放性。例如,一些在網(wǎng)絡(luò)中的不同機(jī)器上接收多個(gè)HTTP請(qǐng)求、在不同機(jī)器上對(duì)相同映射數(shù)據(jù)結(jié)構(gòu)的表達(dá)式(多個(gè))同時(shí)進(jìn)行求值、同時(shí)生成各個(gè)HTTP響應(yīng)、且向著請(qǐng)求的各源發(fā)送各個(gè)HTTP響應(yīng)。特定地,可生成包含web站點(diǎn)內(nèi)容流的HTTP響應(yīng)。在一些實(shí)施例中,惰性表達(dá)式求值器(lazy expression evaluator)的副本對(duì)同一個(gè)表達(dá)式求值且駐留在網(wǎng)絡(luò)中的無(wú)狀態(tài)中間層中,藉此提升可縮放性。一些實(shí)施例電子地聲明計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu),其將統(tǒng)一資源標(biāo)識(shí)符(URI)路徑的各部分映射到各個(gè)表達(dá)式。該映射可以是遞歸的?;谝呀?jīng)被聲明性作出的自動(dòng)定位的依賴(lài)性,使得數(shù)字web站點(diǎn)內(nèi)容對(duì)于全自動(dòng)的求值機(jī)制是可電子地訪問(wèn)的,求值機(jī)制可用于執(zhí)行表達(dá)式的惰性求值。一些實(shí)施例實(shí)現(xiàn)任意大的web站點(diǎn),即,在沒(méi)有表達(dá)式的惰性求值的情況下,對(duì)于存儲(chǔ)大小具有未被固定的上限的web站點(diǎn)。通過(guò)提供表達(dá)式的映射數(shù)據(jù)結(jié)構(gòu)來(lái)代表web站點(diǎn)的分層結(jié)構(gòu)、以及通過(guò)提供枚舉器、字符陣列、和/或比特陣列來(lái)代表web站點(diǎn)的內(nèi)容,一些實(shí)施例建模了 web站點(diǎn)。所給出的示例只是說(shuō)明性的。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。相反地,提供本發(fā)明內(nèi)容是為了以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明由權(quán)利要求書(shū)限定,在本發(fā)明內(nèi)容與權(quán)利要求書(shū)有沖突的情況下,應(yīng)該以權(quán)利要求書(shū)為準(zhǔn)。附圖描述將參考附圖給出更具體的描述。這些附圖只示出了選定的方面,且因此不完全確定覆蓋或范圍。圖I是示出客戶(hù)機(jī)并且還示出經(jīng)配置的存儲(chǔ)介質(zhì)實(shí)施例的框圖,該客戶(hù)機(jī)具有至少一個(gè)處理器和至少一個(gè)存儲(chǔ)器、向服務(wù)器做出請(qǐng)求的一個(gè)或多個(gè)應(yīng)用、以及操作環(huán)境中可存在于多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上的其他項(xiàng)目;
圖2是數(shù)據(jù)流程圖,示出在示例性體系結(jié)構(gòu)中使用經(jīng)惰性求值的聲明性映射表達(dá)式進(jìn)行web站點(diǎn)實(shí)現(xiàn)的各方面;和圖3和4共同是示出某種過(guò)程的步驟和經(jīng)配置的存儲(chǔ)介質(zhì)實(shí)施例的流程圖。
具體實(shí)施例方式概覽一個(gè)廣泛使用的web應(yīng)用框架是可從微軟公司獲得的ASP. NETTM框架。ASP.NET技術(shù)幫助編程者建立動(dòng)態(tài)web站點(diǎn)、web應(yīng)用、和web服務(wù);其遵循微軟的動(dòng)態(tài)服務(wù)器頁(yè)面(ASP)技術(shù)。ASP. NET環(huán)境使用微軟公共語(yǔ)言運(yùn)行時(shí)(CLR),允許編程者使用多種所支持的編程語(yǔ)言寫(xiě)ASP. NET代碼。還可使用諸如ASP和PHP腳本實(shí)現(xiàn)web站點(diǎn)。PHP,也稱(chēng)為超文本預(yù)處理器,是被廣泛使用的通用目的編程語(yǔ)言,其最初被設(shè)計(jì)用于動(dòng)態(tài)web頁(yè)面的web開(kāi)發(fā)。PHP代碼可被嵌入在HTML源中,且可由web服務(wù)器PHP處理器所編譯,所述處理器使用PHP生成web頁(yè)面。盡管ASP. NET技術(shù)和其他熟悉的技術(shù)是有幫助的,但是開(kāi)發(fā)可縮放動(dòng)態(tài)web應(yīng)用仍可是非常困難的。此處描述的一些實(shí)施例,通過(guò)允許開(kāi)發(fā)者使用惰性求值的聲明性映射數(shù)據(jù)結(jié)構(gòu),來(lái)使得可縮放動(dòng)態(tài)web應(yīng)用的創(chuàng)作更為容易。一些實(shí)施例提供使用惰性求值的聲明性映射數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)web站點(diǎn)的機(jī)制,其中通過(guò)構(gòu)成該映射數(shù)據(jù)及結(jié)構(gòu)的表達(dá)式計(jì)算web站點(diǎn)的內(nèi)容。映射指定了 HTTP響應(yīng)如何對(duì)應(yīng)于映射數(shù)據(jù)結(jié)構(gòu)的部分。在映射數(shù)據(jù)結(jié)構(gòu)中僅對(duì)于給性HTTP請(qǐng)求所請(qǐng)求的部分需要被計(jì)算,藉此提升了效率和靈活性?xún)烧摺,F(xiàn)在將參考諸如附圖中所示出的那些示例性實(shí)施例,并使用特定語(yǔ)言來(lái)對(duì)其進(jìn)行描述。但是,相關(guān)技術(shù)領(lǐng)域的且擁有本公開(kāi)內(nèi)容的技術(shù)人員將想到的對(duì)此處所示出的特征的更改和進(jìn)一步的修改以及對(duì)本文所示的原理的其他應(yīng)用,都應(yīng)該被視為在權(quán)利要求的范圍內(nèi)。在本公開(kāi)中闡明了各術(shù)語(yǔ)的含義,因此應(yīng)該在仔細(xì)關(guān)注這些闡明的情況下閱讀權(quán)利要求書(shū)。給出了具體示例,但是相關(guān)領(lǐng)域的技術(shù)人員將理解其他示例也可落在所使用的術(shù)語(yǔ)的含義范圍內(nèi)以及落在一個(gè)或多個(gè)權(quán)利要求的范圍內(nèi)。術(shù)語(yǔ)在這里不一定具有與它們?cè)谝话阌猛局?、在特定行業(yè)的用途中、或在特定詞典或詞典集中所擁有的相同含義。附圖標(biāo)記可以與各種措詞一起使用,以幫助示出術(shù)語(yǔ)的廣度。從給定文本片段中省略附圖標(biāo)記不一定意味著沒(méi)有通過(guò)文本討論附圖的內(nèi)容。發(fā)明人聲稱(chēng)并行使其對(duì)于其自己的詞典編纂的權(quán)利。這里可在具體實(shí)施方式
中和/或在申請(qǐng)文件的別處顯式地或隱式地定義術(shù)語(yǔ)。如本文所使用的,“計(jì)算機(jī)系統(tǒng)”可包括例如一個(gè)或多個(gè)服務(wù)器、主板、處理節(jié)點(diǎn)、個(gè)人計(jì)算機(jī)(便攜式或非便攜式)、個(gè)人數(shù)字助理、蜂窩或移動(dòng)電話、和/或提供至少部分地由指令控制的一個(gè)或多個(gè)處理器的其它設(shè)備。指令可以采取存儲(chǔ)器中的軟件和/或?qū)iT(mén)電路的形式。具體而言,雖然可發(fā)生許多實(shí)施例在工作站或膝上型計(jì)算機(jī)上運(yùn)行,但是其他實(shí)施例也可以在其他計(jì)算設(shè)備上運(yùn)行,并且任何一個(gè)或多個(gè)這樣的設(shè)備都可以是給定實(shí)施例的一部分。“多線程化”計(jì)算機(jī)系統(tǒng)是支持多個(gè)執(zhí)行線程的計(jì)算機(jī)系統(tǒng)。術(shù)語(yǔ)線程應(yīng)被理解為包括能夠或經(jīng)歷同步的任何代碼,并且可用另一名稱(chēng)來(lái)稱(chēng)呼,如“任務(wù)”、“進(jìn)程”或“協(xié)同例程”。線程可以并行地、按順序、或以并行執(zhí)行(例如,多處理)和順序執(zhí)行(例如,時(shí)間分片)的組合來(lái)運(yùn)行。在各種配置中都已設(shè)計(jì)了多線程化環(huán)境。執(zhí)行線程可以并行地運(yùn)行,或者線程可以被組織為并行執(zhí)行,但是實(shí)際上輪流按順序執(zhí)行。例如,多線程化可以通過(guò)在多處 理環(huán)境中在不同核上運(yùn)行不同線程、通過(guò)對(duì)單個(gè)處理器核上的不同線程進(jìn)行時(shí)間分片、或者通過(guò)時(shí)間分片和多處理器線程化的某種組合來(lái)實(shí)現(xiàn)。線程上下文切換可以例如由內(nèi)核的線程調(diào)度器、由用戶(hù)空間信號(hào)、或由用戶(hù)空間和內(nèi)核操作的組合來(lái)發(fā)起。線程可以輪流對(duì)共享數(shù)據(jù)進(jìn)行操作,或者例如每一線程都可以對(duì)其自己的數(shù)據(jù)進(jìn)行操作?!斑壿嬏幚砥鳌被颉疤幚砥鳌笔菃蝹€(gè)獨(dú)立的硬件線程處理單元。例如,每一個(gè)核運(yùn)行兩個(gè)線程的超線程化四核芯片具有8個(gè)邏輯處理器。處理器可以是通用的,或者它們可以針對(duì)諸如圖形處理、信號(hào)處理、浮點(diǎn)算術(shù)處理、加密、I/O處理等特定用途來(lái)定制?!岸嗵幚砥鳌庇?jì)算機(jī)系統(tǒng)是具有多個(gè)邏輯處理器的計(jì)算機(jī)系統(tǒng)。多處理器環(huán)境存在于各種配置中。在一給定配置中,所有處理器可在功能上相同,而在另一配置中,由于具有不同的硬件能力、不同的軟件分配或兩者,某些處理器可與其他處理器不同。取決于配置,處理器可在單個(gè)總線上緊密地彼此耦合,或它們可松散地耦合。在某些配置中,處理器共享一中央存儲(chǔ)器,在某些配置中,它們各自具有自己的本地存儲(chǔ)器,在某些配置中,存在共享和本地存儲(chǔ)器兩者。“內(nèi)核”包括操作系統(tǒng)、系統(tǒng)管理程序、虛擬機(jī)、以及類(lèi)似的硬件接口軟件?!按a”指的是處理器指令、數(shù)據(jù)(包括常量、變量、以及數(shù)據(jù)結(jié)構(gòu))、或指令和數(shù)據(jù)兩者?!白詣?dòng)地”指的是使用自動(dòng)化(例如,由用于這里所討論的特定操作的軟件配置的通用計(jì)算硬件),與沒(méi)有自動(dòng)化相對(duì)。特別地,“自動(dòng)地”執(zhí)行的步驟不是由手在紙上或在人的頭腦中執(zhí)行的,它們是用機(jī)器執(zhí)行的。貫穿本文,對(duì)可選的復(fù)數(shù)的使用意味著存在一個(gè)或多個(gè)所指示的特征。例如,“請(qǐng)求(多個(gè))”意味著“一個(gè)或多個(gè)請(qǐng)求”或等效于“至少一個(gè)請(qǐng)求”。貫穿本文,除非另外明確表明,否則對(duì)過(guò)程中的某一步驟的任何引用都假定該步驟可直接由所關(guān)注的一方執(zhí)行和/或由該方通過(guò)介入機(jī)制和/或介入實(shí)體而間接地執(zhí)行,且仍然在該步驟的范圍內(nèi)。也就是說(shuō),除非直接執(zhí)行是被明確表明的要求,否則并不要求由關(guān)注方對(duì)步驟的直接執(zhí)行。例如,涉及所關(guān)注的一方的諸如向目的地“傳送”、“發(fā)送”或“傳遞”等動(dòng)作的步驟可涉及某一其他方的諸如轉(zhuǎn)發(fā)、復(fù)制、上傳、下載、編碼、解碼、壓縮、解壓、加密、解密等中間動(dòng)作,但仍被理解為由該所關(guān)注的一方直接執(zhí)行。在參考數(shù)據(jù)或指令時(shí),要理解這些項(xiàng)目配置了計(jì)算機(jī)可讀存儲(chǔ)器,從而將其變換為特定物品,而非簡(jiǎn)單地存在于紙張上、人的頭腦中、或作為例如線路上的瞬時(shí)信號(hào)。操作環(huán)塏參看

圖1,實(shí)施例的操作環(huán)境100可包括客戶(hù)機(jī)101設(shè)備(多個(gè))和服務(wù)器103設(shè)備(多個(gè)),其中每一個(gè)可包括計(jì)算機(jī)系統(tǒng)102。計(jì)算機(jī)系統(tǒng)102的每一個(gè)可以是多處理器計(jì)算機(jī)系統(tǒng),或者不是。操作環(huán)境可包括給定計(jì)算機(jī)系統(tǒng)中的一個(gè)或多個(gè)機(jī)器,它們可以是群集的、客戶(hù)機(jī)-服務(wù)器聯(lián)網(wǎng)的、和/或?qū)Φ嚷?lián)網(wǎng)的。人類(lèi)用戶(hù)104可以通過(guò)使用顯示器、鍵盤(pán)、及其他外圍設(shè)備106與計(jì)算機(jī)系統(tǒng)102進(jìn)行交互。系統(tǒng)管理員、開(kāi)發(fā)人員、工程技術(shù)人員、以及最終用戶(hù)各自都是特定類(lèi)型的用戶(hù)104。代表一個(gè)或多個(gè)人操作的自動(dòng)化代理也可以是用戶(hù)104。在某些實(shí)施例中,存儲(chǔ)設(shè)備 和/或聯(lián)網(wǎng)設(shè)備可以被認(rèn)為是外圍設(shè)備。圖I中未示出的其他計(jì)算機(jī)系統(tǒng)可以與計(jì)算機(jī)系統(tǒng)102進(jìn)行交互,或者例如通過(guò)網(wǎng)絡(luò)接口設(shè)備使用到網(wǎng)絡(luò)108的一個(gè)或多個(gè)連接與另一系統(tǒng)實(shí)施例進(jìn)行交互。每一個(gè)計(jì)算機(jī)系統(tǒng)102包括至少一個(gè)邏輯處理器110。所示出的每一個(gè)計(jì)算機(jī)系統(tǒng)102與其他合適的系統(tǒng)一樣,還包括一個(gè)或多個(gè)計(jì)算機(jī)可讀非瞬態(tài)存儲(chǔ)介質(zhì)112。介質(zhì)112可以是不同的物理類(lèi)型。介質(zhì)112可以是易失性存儲(chǔ)器、非易失性存儲(chǔ)器、被安裝就位的介質(zhì)、可移動(dòng)介質(zhì)、磁介質(zhì)、光學(xué)介質(zhì)、和/或其他類(lèi)型的非瞬態(tài)介質(zhì)(而不是諸如只傳播信號(hào)的線路之類(lèi)的瞬態(tài)介質(zhì))。具體而言,諸如CD、DVD、記憶棒、或其他可移動(dòng)非易失性存儲(chǔ)器介質(zhì)之類(lèi)的經(jīng)配置的介質(zhì)114在被插入或以其他方式安裝時(shí)可以在功能上變?yōu)橛?jì)算機(jī)系統(tǒng)的一部分,從而使其內(nèi)容可被訪問(wèn)以供處理器110使用??梢苿?dòng)的經(jīng)配置的介質(zhì)114是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)112的示例。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)112的某些其他示例包括內(nèi)置RAM、ROM、硬盤(pán)、以及其他不能被用戶(hù)104輕松地移走的存儲(chǔ)設(shè)備。介質(zhì)114用可由處理器110執(zhí)行的指令116來(lái)配置;“可執(zhí)行”在此以寬泛的意義被使用以包括機(jī)器代碼、可解釋代碼、以及在例如虛擬機(jī)上運(yùn)行的代碼。介質(zhì)114還被配置有數(shù)據(jù)118,該數(shù)據(jù)通過(guò)指令116的執(zhí)行被創(chuàng)建、修改、引用和/或以別的方式使用。指令116和數(shù)據(jù)118配置它們所駐留的介質(zhì)114 ;當(dāng)該存儲(chǔ)器是給定計(jì)算機(jī)系統(tǒng)的功能部分時(shí),指令116和數(shù)據(jù)118還配置該計(jì)算機(jī)系統(tǒng)。在某些實(shí)施例中,數(shù)據(jù)118的一部分代表了諸如產(chǎn)品特征、清單、物理測(cè)量值、設(shè)定、圖像、讀數(shù)、目標(biāo)、卷等等之類(lèi)的現(xiàn)實(shí)世界的項(xiàng)。也如本文中所討論地來(lái)變換這樣的數(shù)據(jù),例如,通過(guò)定位、映射、惰性求值、聲明、生成、調(diào)用、綁定、部署、執(zhí)行、修改、顯示、創(chuàng)建、加載和/或其他操作來(lái)變換請(qǐng)求。諸如web瀏覽器、媒體播放器、電子郵件管理器、和/或游戲管理器之類(lèi)的應(yīng)用120,例如,做出請(qǐng)求122 (—般通過(guò)協(xié)議棧或其他網(wǎng)絡(luò)層124的方式)經(jīng)由網(wǎng)絡(luò)108來(lái)獲得web站點(diǎn)126內(nèi)容128 (諸如文件130),從而更新顯示器132。圖中所示的應(yīng)用程序120、其他軟件、請(qǐng)求122、和其它項(xiàng)可以部分地或全部地駐留在一個(gè)或多個(gè)介質(zhì)112中,從而配置這些介質(zhì)。操作環(huán)境也可以包括其他硬件134,例如,總線、電源,和圖形加速器。在圖I中以輪廓形式示出了各項(xiàng)以強(qiáng)調(diào)它們不必是所示出的操作環(huán)境的一部分,但是可以與操作環(huán)境中的項(xiàng)進(jìn)行交互操作,如此處所討論的。未采用輪廓形式的項(xiàng)在任何附圖或任何實(shí)施例中也不一定是必需的。
MM圖2示出了適合與一些實(shí)施例一起使用的體系架構(gòu)。系統(tǒng)實(shí)施例可被看做支持過(guò)程實(shí)施例,反之亦然。假設(shè)客戶(hù)機(jī)101經(jīng)由網(wǎng)絡(luò)108向服務(wù)器103發(fā)送請(qǐng)求122。使用熟悉的web瀏覽器或其他熟悉的應(yīng)用120可創(chuàng)建請(qǐng)求122。在一些實(shí)施例中,在請(qǐng)求122中不要求特殊的語(yǔ)法或語(yǔ)義;在這個(gè)程度上而言,服務(wù)器中的實(shí)施例的存在對(duì)于客戶(hù)機(jī)而言是透明的。請(qǐng)求122具有各部分202。例如,HTTP請(qǐng)求具有諸如“http://”或“https://”之類(lèi)的前綴、諸如GET之類(lèi)的方法或動(dòng)詞、和諸如統(tǒng)一資源標(biāo)識(shí)符(URI)之類(lèi)的路徑204或另一路徑204。在獲取文件130的請(qǐng)求122中,路徑204 —般包括目錄名206和文件名208。一些實(shí)施例在服務(wù)器103使用映射數(shù)據(jù)結(jié)構(gòu)210處理請(qǐng)求122,該映射數(shù)據(jù)結(jié)構(gòu)包括請(qǐng)求部分(多個(gè))202到表達(dá)式214的映射212,一旦對(duì)該表達(dá)式214求值,產(chǎn)生對(duì)于該請(qǐng) 求的響應(yīng)。惰性表達(dá)式求值器216對(duì)表達(dá)式(多個(gè))214求值,在映射212下,該表達(dá)式對(duì)應(yīng) 于特定請(qǐng)求122。該表達(dá)式可用聲明性編程語(yǔ)言218寫(xiě),諸如M編程語(yǔ)言的一個(gè)版本、或配備被有惰性表達(dá)式求值器216的另一個(gè)編程語(yǔ)言,該求值器216用于對(duì)表達(dá)式求值,其描述了應(yīng)該提供什么結(jié)果220,而不是描述如何去計(jì)算該結(jié)果。表達(dá)式求值的結(jié)果220,諸如文件內(nèi)容222、128,在響應(yīng)224中發(fā)送回客戶(hù)機(jī)101。在一些實(shí)施例中,在響應(yīng)224中不要求特殊的語(yǔ)法或語(yǔ)義;其中,服務(wù)器的實(shí)施例的存在對(duì)于客戶(hù)機(jī)而言是透明的。參看圖I和2,一些實(shí)施例向計(jì)算機(jī)系統(tǒng)102提供邏輯處理器110和存儲(chǔ)器介質(zhì)112,該存儲(chǔ)器介質(zhì)112由電路、固件和/或軟件來(lái)配置以通過(guò)此處描述的將請(qǐng)求部分映射為惰性求值的表達(dá)式將請(qǐng)求122變換成響應(yīng)224。例如,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)102包括至少一個(gè)邏輯處理器110和與該邏輯處理器(多個(gè))進(jìn)行可操作通信的存儲(chǔ)器112。該存儲(chǔ)器位于至少一個(gè)機(jī)器中;在一些實(shí)施例中,存儲(chǔ)器位于多個(gè)服務(wù)器103中。映射212駐留在存儲(chǔ)器中且將網(wǎng)絡(luò)應(yīng)用層124的部分202映射為各個(gè)表達(dá)式214。惰性表達(dá)式求值器216也駐留在存儲(chǔ)器中。求值器216用于響應(yīng)于請(qǐng)求來(lái)對(duì)表達(dá)式求值,且更特定地,響應(yīng)于尋求對(duì)內(nèi)容128進(jìn)行訪問(wèn)的請(qǐng)求的一部分P,來(lái)對(duì)表達(dá)式E求值。通過(guò)映射數(shù)據(jù)結(jié)構(gòu)210,請(qǐng)求部分P被映射至表達(dá)式E。映射數(shù)據(jù)結(jié)構(gòu)210包括一個(gè)或多個(gè)表達(dá)式、和用于選擇部分202并將它們映射至表達(dá)式(多個(gè))的相關(guān)聯(lián)的映射212代碼。如此處所使用的,“服務(wù)器” 103可以是單個(gè)目的地機(jī)器,或其可以是中間機(jī)器,或機(jī)器的集合。例如,可在并非將響應(yīng)224發(fā)送至客戶(hù)機(jī)的服務(wù)器機(jī)器的不同服務(wù)器機(jī)器上計(jì)算響應(yīng)結(jié)果220。在一些實(shí)施例中,該系統(tǒng)包括配置介質(zhì)122的HTTP請(qǐng)求122和/或FTP請(qǐng)求122。在一些實(shí)施例中,該系統(tǒng)包括使用某個(gè)其他分層命名方案的網(wǎng)絡(luò)應(yīng)用層請(qǐng)求122。惰性表達(dá)式求值器216用于響應(yīng)于請(qǐng)求122來(lái)對(duì)表達(dá)式求值。盡管此處使用HTTP作為常用示例,在一些實(shí)施例中,映射數(shù)據(jù)結(jié)構(gòu)210將FTP請(qǐng)求映射至表達(dá)式。像HTTP —樣,F(xiàn)TP具有適于這樣的映射的分層命名方案。在一些實(shí)施例中,惰性表達(dá)式求值器216的副本駐留(配置存儲(chǔ)器和/或其他介質(zhì)112)在網(wǎng)絡(luò)108中的無(wú)狀態(tài)中間層中。在一些情況下,這些多個(gè)求值器(或其子集)對(duì)同一個(gè)表達(dá)式214求值??衫斫獾氖牵瑢⒂?jì)算的無(wú)狀態(tài)副本放在多個(gè)機(jī)器上傾向于提升可縮放性。
在一些實(shí)施例中,在一些情況下,可直接對(duì)映射中的表達(dá)式214求值,而在其他情況下,該表達(dá)式調(diào)用返回值是表達(dá)式值的計(jì)算的一部分的函數(shù)。在一些情況下,在表達(dá)式214中所調(diào)用的函數(shù)(多個(gè))可包括在聲明性編程語(yǔ)言環(huán)境中所支持的任何函數(shù)。函數(shù)可以是通用目的,諸如數(shù)據(jù)庫(kù)訪問(wèn)或電子郵件通知生成器、或函數(shù)可被修改以適應(yīng)特定動(dòng)態(tài)web站點(diǎn)。在一個(gè)實(shí)施例中,例如,映射中的表達(dá)式214包括對(duì)于File-Contents函數(shù)的調(diào)用,該函數(shù)用于返回文件的內(nèi)容作為二進(jìn)制數(shù)據(jù)。在映射數(shù)據(jù)結(jié)構(gòu)210的鍵-值對(duì)實(shí)現(xiàn)中,例如,鍵“b. gif”的值是用路徑“c: \b. gif”調(diào)用函數(shù)File: Contents的結(jié)果,其將文件內(nèi)容返回為二進(jìn)制數(shù)據(jù)。在一些實(shí)施例中,該系統(tǒng)在存儲(chǔ)器中包含標(biāo)識(shí)文件130的網(wǎng)絡(luò)應(yīng)用層請(qǐng)求122、請(qǐng)求被映射至其的表達(dá)式214、和惰性表達(dá)式求值的結(jié)果220。在一些情況下,結(jié)果220包括為文件指定內(nèi)容類(lèi)型的元數(shù)據(jù)。文件內(nèi)容類(lèi)型可由,例如,文件名208內(nèi)的擴(kuò)展所確定。在一些實(shí)施例中,映射212是遞歸的。例如,一個(gè)映射數(shù)據(jù)結(jié)構(gòu)210被遞歸地聲明 如下
權(quán)利要求
1.一種用數(shù)據(jù)和指令配置的計(jì)算機(jī)可讀非瞬態(tài)存儲(chǔ)介質(zhì),所述指令在被至少一個(gè)處理器執(zhí)行時(shí)使所述處理器(多個(gè))執(zhí)行用于實(shí)現(xiàn)web站點(diǎn)的過(guò)程,所述過(guò)程包括以下步驟 接收包括路徑的HTTP請(qǐng)求; 映射所述路徑的至少一部分來(lái)定位可嵌套數(shù)據(jù)結(jié)構(gòu)中的表達(dá)式E,所述數(shù)據(jù)結(jié)構(gòu)包含共同代表所述web站點(diǎn)的多個(gè)表達(dá)式; 對(duì)所述表達(dá)式E求值,藉此獲得結(jié)果R,同時(shí)避免對(duì)所述數(shù)據(jù)結(jié)構(gòu)的其他表達(dá)式求值;和 對(duì)連續(xù)的表達(dá)式(多個(gè))E和對(duì)應(yīng)的連續(xù)結(jié)果(多個(gè))R重復(fù)所述映射和求值步驟,直到求值步驟獲得web站點(diǎn)內(nèi)容作為結(jié)果R-最后;且然后 生成對(duì)于所述HTTP請(qǐng)求的HTTP響應(yīng),所述HTTP響應(yīng)包含所述結(jié)果R-最后。
2.如權(quán)利要求I所述的經(jīng)配置的介質(zhì),其特征在于,所述表達(dá)式E用聲明性(相對(duì)于命令性)編程語(yǔ)言編寫(xiě),且所述求值步驟包括下列各項(xiàng)中的至少一項(xiàng) 使用至少基于所述聲明性編程語(yǔ)言的句法規(guī)則的解析器,解析所述表達(dá)式E ; 執(zhí)行函數(shù),所述函數(shù)是使用所述聲明性編程語(yǔ)言的調(diào)用機(jī)制被調(diào)用的; 使用所述聲明性編程語(yǔ)言的惰性求值機(jī)制。
3.如權(quán)利要求I所述的經(jīng)配置的介質(zhì),其特征在于,所述映射步驟包括下列各項(xiàng)中的至少一項(xiàng) 將文件名映射至表達(dá)式,所述表達(dá)式包含對(duì)于返回所述文件的內(nèi)容的函數(shù)的調(diào)用; 將文件名映射至表達(dá)式,所述表達(dá)式包含對(duì)于返回文本串的函數(shù)的調(diào)用; 將文件名映射至表達(dá)式,所述表達(dá)式對(duì)文本串求值; 遞歸地將目錄名映射至文件名的映射; 遞歸地映射可動(dòng)態(tài)構(gòu)建記錄,所述記錄包括至少一個(gè)字段-值對(duì)。
4.如權(quán)利要求I所述的經(jīng)配置的介質(zhì),其特征在于,如所聲明的依賴(lài)性(多個(gè))所指示地,所述過(guò)程至多對(duì)所述數(shù)據(jù)結(jié)構(gòu)的最小部分,即,其求值是用于生成所述HTTP響應(yīng)的預(yù)先條件的部分,進(jìn)行求值。
5.如權(quán)利要求I所述的經(jīng)配置的介質(zhì),其特征在于,所述映射步驟至少將所述路徑的一部分映射至數(shù)據(jù)結(jié)構(gòu)中的表達(dá)式E,所述數(shù)據(jù)結(jié)構(gòu)采用動(dòng)態(tài)類(lèi)型化的編程語(yǔ)言被聲明。
6.如權(quán)利要求I所述的經(jīng)配置的介質(zhì),其特征在于,所述經(jīng)配置的介質(zhì)駐留在網(wǎng)絡(luò)中的不同機(jī)器上,且所述過(guò)程包括 在所述不同機(jī)器上接收來(lái)自多個(gè)源的多個(gè)HTTP請(qǐng)求; 在所述不同機(jī)器上同時(shí)對(duì)同一個(gè)數(shù)據(jù)結(jié)構(gòu)的表達(dá)式(多個(gè))求值; 同時(shí)生成各個(gè)HTTP響應(yīng);和 向所述多個(gè)源發(fā)送所述各個(gè)HTTP響應(yīng)。
7.一種用于實(shí)現(xiàn)web站點(diǎn)的過(guò)程,所述過(guò)程包括 電子地聲明計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu),其將統(tǒng)一資源標(biāo)識(shí)符(URL)路徑的部分映射至各個(gè)表達(dá)式,被聲明的數(shù)據(jù)結(jié)構(gòu)駐留在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并配置所述介質(zhì);和 基于已經(jīng)被聲明性作出的自動(dòng)定位的依賴(lài)性,使得數(shù)字web站點(diǎn)內(nèi)容對(duì)于全自動(dòng)的求值機(jī)制是可電子地訪問(wèn)的,所述求值機(jī)制用于執(zhí)行所述表達(dá)式的惰性求值。
8.如權(quán)利要求7所述的過(guò)程,其特征在于,所述聲明步驟電子地聲明如下各項(xiàng)中的至少一項(xiàng) 從文件名到表達(dá)式的映射,所述表達(dá)式包含對(duì)于返回所述文件的內(nèi)容的函數(shù)的調(diào)用; 從文件名到表達(dá)式的映射,所述表達(dá)式對(duì)文本串求值; 動(dòng)態(tài)可構(gòu)建的記錄的遞歸映射。
9.如權(quán)利要求7所述的過(guò)程,其特征在于,所述過(guò)程實(shí)現(xiàn)任意大的web站點(diǎn),S卩,在沒(méi)有表達(dá)式的惰性求值的情況下,對(duì)于存儲(chǔ)大小具有未被固定的上限的web站點(diǎn)。
10.如權(quán)利要求7所述的過(guò)程,其特征在于,通過(guò)建模所述數(shù)據(jù)結(jié)構(gòu)來(lái)代表web站點(diǎn)分層結(jié)構(gòu)、以及通過(guò)提供以下各項(xiàng)中的至少一項(xiàng)來(lái)代表web站點(diǎn)內(nèi)容,該過(guò)程建模所述web站點(diǎn)枚舉器、字符陣列、和字節(jié)陣列。
11.一種計(jì)算機(jī)系統(tǒng),包括 至少一個(gè)邏輯處理器; 可操作地與所述邏輯處理器(多個(gè))進(jìn)行通信的存儲(chǔ)器,所述存儲(chǔ)器位于至少一個(gè)機(jī)器中; 映射,駐留在所述存儲(chǔ)器中,其將網(wǎng)絡(luò)應(yīng)用層的部分映射為各表達(dá)式,這些表達(dá)式一旦求值,產(chǎn)生對(duì)于所述請(qǐng)求的響應(yīng); 惰性表達(dá)式求值器,駐留在所述存儲(chǔ)器中,且用于響應(yīng)于對(duì)被映射至表達(dá)式的請(qǐng)求部分進(jìn)行訪問(wèn)的請(qǐng)求,對(duì)表達(dá)式求值。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括以下各項(xiàng)中的至少一項(xiàng)HTTP請(qǐng)求、FTP請(qǐng)求、使用分層命名方面的另一個(gè)網(wǎng)絡(luò)應(yīng)用層請(qǐng)求;且其中,所述惰性表達(dá)式求值器用于響應(yīng)于所述請(qǐng)求對(duì)表達(dá)式求值。
13.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述系統(tǒng)包括對(duì)同一個(gè)表達(dá)式求值、且駐留在網(wǎng)絡(luò)中無(wú)狀態(tài)中間層的多個(gè)機(jī)器上的惰性表達(dá)式求值器的副本。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述映射是遞歸的。
15.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述映射中的表達(dá)式包括對(duì)于用于產(chǎn)生副作用的函數(shù)的調(diào)用。
全文摘要
使用從路徑到表達(dá)式的映射來(lái)建模web站點(diǎn)。表達(dá)式的映射數(shù)據(jù)結(jié)構(gòu)代表web站點(diǎn)的分層結(jié)構(gòu)、且枚舉器、字符陣列、或字節(jié)陣列代表了web站點(diǎn)的內(nèi)容。表達(dá)式用聲明性編程語(yǔ)言編寫(xiě),且被惰性地求值來(lái)提供用在HTTP響應(yīng)中的結(jié)果。映射可以是遞歸的。例如,表達(dá)式可包含函數(shù)調(diào)用,該函數(shù)返回在HTTP請(qǐng)求路徑中所指定的文件的內(nèi)容,或該表達(dá)式可求值為文本串。表達(dá)式可調(diào)用產(chǎn)生副作用的函數(shù)。表達(dá)式可遞歸地將目錄名映射至文件名的映射。通過(guò)同時(shí)對(duì)無(wú)狀態(tài)中間層上的不同機(jī)器上的表達(dá)式(多個(gè))進(jìn)行求值、且通過(guò)流傳送結(jié)果,促進(jìn)了可縮放性。以此方式可實(shí)現(xiàn)任意大的web站點(diǎn)。
文檔編號(hào)G06F17/20GK102934104SQ201180028523
公開(kāi)日2013年2月13日 申請(qǐng)日期2011年5月20日 優(yōu)先權(quán)日2010年6月8日
發(fā)明者E·B·克里斯騰森 申請(qǐng)人:微軟公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
SHOW| 泰宁县| 驻马店市| 贵阳市| 阿拉尔市| 常德市| 鄂尔多斯市| 定边县| 启东市| 长海县| 漠河县| 南昌市| 玉环县| 鄂伦春自治旗| 东至县| 朝阳市| 常德市| 玉环县| 时尚| 舒兰市| 洪泽县| 沂南县| 龙井市| 电白县| 资讯 | 曲阳县| 社会| 中阳县| 邹城市| 尼木县| 麻栗坡县| 大港区| 崇信县| 肥东县| 喜德县| 安庆市| 博乐市| 兴安盟| 四平市| 清流县| 浠水县|