專利名稱:代碼部署協(xié)助的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及代碼部署。
背景技術(shù):
分布式計(jì)算指的是其中程序或應(yīng)用的不同部分在兩個(gè)或更多個(gè)通過諸如因特網(wǎng)等網(wǎng)絡(luò)通信的自治計(jì)算機(jī)上并發(fā)運(yùn)行的計(jì)算機(jī)處理。這些計(jì)算機(jī)彼此交互以實(shí)現(xiàn)共同目標(biāo)。通常在多個(gè)計(jì)算機(jī)之間分配工作以完成靠單個(gè)或特定計(jì)算機(jī)的處理能力不可能的任務(wù)。或者,僅僅為加速處理,可跨多個(gè)計(jì)算機(jī)分配工作??刹捎酶鞣N網(wǎng)絡(luò)體系結(jié)構(gòu)、模型等來通信地耦合許多計(jì)算機(jī)并啟用分布式計(jì)算。最為眾所周知的體系結(jié)構(gòu)之一是客戶機(jī)服務(wù)器即雙層體系結(jié)構(gòu)。此處,在擔(dān)當(dāng)內(nèi)容或服務(wù)提供者的服務(wù)器以及請(qǐng)求所提供的內(nèi)容或服務(wù)的客戶機(jī)之間劃分工作。一些特定的服務(wù)器類型包括但不限于web、應(yīng)用、數(shù)據(jù)庫(kù)、郵件、文件,和打印機(jī)服務(wù)器。示例性的客戶機(jī)類型包括web瀏覽器和電子郵件客戶端等等。常規(guī)地還采用其它多層體系結(jié)構(gòu),諸如包括演示、應(yīng)用(也被稱為業(yè)務(wù)邏輯、邏輯、中間)以及數(shù)據(jù)層的三層體系結(jié)構(gòu),該體系結(jié)構(gòu)相應(yīng)地分隔演示、引用功能,以及數(shù)據(jù)存儲(chǔ)和訪問。作為對(duì)比,單層體系結(jié)構(gòu)在單個(gè)位置中包括演示、應(yīng)用和數(shù)據(jù)。不幸的是,開發(fā)分布式應(yīng)用是非常繁重的過程。具體地,需要考慮其上將執(zhí)行程序的各部分的不相似的環(huán)境。例如,計(jì)算機(jī)可能具有不同的文件系統(tǒng)、操作系統(tǒng)以及硬件組件。此外,程序員需要對(duì)多種分布式編程技術(shù)(例如,超文本標(biāo)記語(yǔ)言(HTML)、JavaScript、可擴(kuò)展標(biāo)記語(yǔ)言(XML)、結(jié)構(gòu)化查詢語(yǔ)言(SQL)、簡(jiǎn)單對(duì)象訪問協(xié)議(SOAP)...)具有超過膚淺的理解。此外,程序員需要提前對(duì)于如何跨兩個(gè)或更多層劃分程序作出決策,并被迫致力于異步回調(diào)以及其它耗時(shí)的分布式編程問題,這可能會(huì)過早地固定分布邊界并負(fù)面地影響豐富且廣泛到達(dá)的分布式應(yīng)用的開發(fā)。存在減少分布式編程的負(fù)擔(dān)的層劃分技術(shù)。更具體地,可對(duì)于單個(gè)層指定應(yīng)用,該單個(gè)層隨后可劃分成支持跨層的分布式執(zhí)行的多個(gè)層。
發(fā)明內(nèi)容
下面呈現(xiàn)了簡(jiǎn)化的發(fā)明內(nèi)容,以便提供對(duì)所公開主題的某些方面的基本概念。本發(fā)明內(nèi)容不是廣泛性的概觀。它并不旨在標(biāo)識(shí)關(guān)鍵/重要元素,也不旨在劃定所要求保護(hù)
主題的范圍。其唯一目的是以簡(jiǎn)化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更具體實(shí)施例的序言ο簡(jiǎn)而言之,本發(fā)明一般涉及代碼部署協(xié)助。在一些情況中,代碼部署十分麻煩。例如,當(dāng)?shù)谝粓?zhí)行引擎由第二執(zhí)行引擎主存時(shí),第二執(zhí)行引擎或環(huán)境可指定非常具體的協(xié)議來對(duì)于第一,或客,執(zhí)行引擎或環(huán)境來部署應(yīng)用。例如,每一代碼(例如,方法、數(shù)據(jù)類型...)和依賴代碼可能需要按照特定次序向主執(zhí)行環(huán)境注冊(cè)。部署組件和相關(guān)聯(lián)功能可用于自動(dòng)生成部署代碼以減輕程序員的負(fù)擔(dān)。更具體地,可分析應(yīng)用并查明在應(yīng)用的部署中可能有用的信息(包括依賴性信息等)。至少部分基于從應(yīng)用代碼本身獲得的信息,包括安裝、維護(hù)(例如,更新/升級(jí))和移除(例如,卸載)代碼的部署代碼可對(duì)特定的執(zhí)行引擎自動(dòng)生成。 為實(shí)現(xiàn)上述及相關(guān)目的,在此結(jié)合以下描述和附圖描述了所要求保護(hù)主題的某些說明性方面。這些方面指示可實(shí)踐本主題的各種方式,它們均落在所要求保護(hù)主題的范圍之內(nèi)。當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),本發(fā)明的其他優(yōu)點(diǎn)和新穎特征將變得顯而易見。
圖1是便于應(yīng)用部署的系統(tǒng)的框圖。
圖2是代表性部署組件的框圖。
圖3是便于分布式編程的系統(tǒng)的框圖。
圖4是代表性層劃分組件的框圖。
圖5是包括應(yīng)用層和數(shù)據(jù)層的常規(guī)的兩層體系結(jié)構(gòu)的框圖。
圖6是包括應(yīng)用層和數(shù)據(jù)層的示例性的兩層體系結(jié)構(gòu)的框圖。
圖7是包括應(yīng)用層和數(shù)據(jù)層的示例性分布式處理系統(tǒng)的框圖。
圖8是應(yīng)用部署的方法的流程圖。
圖9是安裝代碼的方法的流程圖。
圖10是更新代碼的方法的流程圖。
圖11是卸載代碼的方法的流程圖。
圖12是示出用于本公開各方面的合適的操作環(huán)境的示意性框圖。
具體實(shí)施例方式以下的細(xì)節(jié)一般針對(duì)便于應(yīng)用代碼的部署。在一些情況中,應(yīng)用代碼部署可僅涉及將應(yīng)用代碼復(fù)制到計(jì)算機(jī)上的特定位置。然而,在其它情況中,部署可能十分麻煩。例如,給定主執(zhí)行環(huán)境和客執(zhí)行環(huán)境,主執(zhí)行環(huán)境可為了安全性和/或可靠性原因而命令對(duì)特定部署協(xié)議的使用。作為示例而非限制,數(shù)據(jù)庫(kù)服務(wù)器等可允許代碼運(yùn)行以加速執(zhí)行,且包括用于代碼注冊(cè)的特定協(xié)議。可對(duì)于維護(hù)(例如,更新、升級(jí)、版本化…)以及卸載應(yīng)用代碼來強(qiáng)迫執(zhí)行類似的協(xié)議。為了減輕這種負(fù)擔(dān),可實(shí)施分析應(yīng)用代碼并至少部分地基于分析的結(jié)果自動(dòng)生成安裝、維護(hù)和/或移除代碼的機(jī)制。根據(jù)一個(gè)實(shí)施例,這樣的機(jī)制可結(jié)合層劃分技術(shù)來使用。現(xiàn)在參考附圖更詳細(xì)地描述本公開的各個(gè)方面,在全部附圖中用相似的標(biāo)記來指示相似或相應(yīng)的元素。然而應(yīng)該理解,附圖及其相關(guān)詳細(xì)描述不旨在將所要求保護(hù)的主題限于所公開的具體形式。相反,其意圖是覆蓋落在所要求保護(hù)主題的精神和范圍之內(nèi)的所有修改、等價(jià)物和替換的方案。首先參考圖1,示出了便于應(yīng)用代碼部署等的系統(tǒng)100。系統(tǒng)100包括主執(zhí)行引擎110,該主執(zhí)行引擎包括客執(zhí)行引擎120。換言之,主執(zhí)行引擎110定義了主存客執(zhí)行引擎120的第一執(zhí)行環(huán)境,而客執(zhí)行引擎定義了第二執(zhí)行環(huán)境。主執(zhí)行引擎110和客執(zhí)行引擎120之間的關(guān)系可導(dǎo)致可能的安全性或可靠性問題。例如,客執(zhí)行引擎執(zhí)行的應(yīng)用可潛在地、負(fù)面地影響主執(zhí)行引擎110和/或由其執(zhí)行的代碼。因此,主執(zhí)行引擎110可對(duì)于部署或以其它方式與針對(duì)客執(zhí)行引擎120的應(yīng)用交互來強(qiáng)加特定協(xié)議。這些協(xié)議可被設(shè)計(jì)成減少潛在的安全性和/或可靠性風(fēng)險(xiǎn),并且對(duì)程序員而言可能是麻煩的。而且,負(fù)擔(dān)的程度可根據(jù)協(xié)議的復(fù)雜度變化,程序的復(fù)雜度可基于主執(zhí)行引擎110與客執(zhí)行引擎120之間的信任程度而變化。在某些情況中,負(fù)擔(dān)是壓倒性的,使得程序員完全避免利用特定的技術(shù)。系統(tǒng)100還包括通信地耦合到主執(zhí)行引擎110并間接耦合到客執(zhí)行引擎120的部署組件130。部署組件130可減輕與部署針對(duì)客執(zhí)行引擎120而非主執(zhí)行引擎110的計(jì)算機(jī)應(yīng)用(例如,指定可由基于處理器的設(shè)備執(zhí)行的一個(gè)或多個(gè)特定任務(wù)的用戶代碼)相關(guān)聯(lián)的許多負(fù)擔(dān)(如果不是全部)。更具體地,部署組件130可生成可由主執(zhí)行引擎110執(zhí)行來相對(duì)于客執(zhí)行引擎120部署應(yīng)用或其部分之類的代碼。根據(jù)一個(gè)實(shí)施例,部署組件130可生成部署代碼并將其提供給主執(zhí)行引擎110以便執(zhí)行。在另一實(shí)施例中,可輸出部署代碼以便檢查,例如由諸如管理員的授權(quán)實(shí)體檢查,且如果代碼被認(rèn)為是可接受的,則授權(quán)實(shí)體可對(duì)于主執(zhí)行引擎110啟動(dòng)執(zhí)行。根據(jù)一個(gè)非限定性的實(shí)施例,主執(zhí)行引擎110和客執(zhí)行引擎120可駐留在數(shù)據(jù)層中(例如,數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)服務(wù)器...)。例如,主執(zhí)行引擎110可以是關(guān)系型的(例如,SQL(結(jié)構(gòu)化查詢語(yǔ)言)處理器),而客執(zhí)行引擎120可支持對(duì)于一個(gè)或多個(gè)通用編程語(yǔ)言(例如,面向?qū)ο?、過程、函數(shù)...混合)(例如,SQL-CLR(結(jié)構(gòu)化查詢語(yǔ)言-公共語(yǔ)言運(yùn)行時(shí)))指定的代碼的執(zhí)行。在這種情況中,主執(zhí)行引擎110可要求應(yīng)用在執(zhí)行之前按照復(fù)雜的方式注冊(cè)。例如,協(xié)議可命令應(yīng)用片段(例如,方法、函數(shù)...)以及依賴應(yīng)用片段鏈按照特定次序的注冊(cè)。作為示例,協(xié)議可要求1)復(fù)制代碼;幻注冊(cè)代碼;幻注冊(cè)數(shù)據(jù)類型;4)注冊(cè)第一方法力)注冊(cè)第二方法,等等。這對(duì)程序員而言是十分麻煩的,以致于程序員通常選擇避開以這種方式部署的系統(tǒng)、環(huán)境、體系結(jié)構(gòu)等。部署組件130可從程序員身上移除許多這種負(fù)擔(dān)(如果不是全部),并因此鼓勵(lì)對(duì)具有繁重的部署協(xié)議的系統(tǒng)、環(huán)境、體系結(jié)構(gòu)等(包括允許代碼運(yùn)行以加速執(zhí)行的數(shù)據(jù)庫(kù)系統(tǒng))的利用。圖2是描繪代表性部署組件130的框圖。部署組件130包括被配置成對(duì)應(yīng)用(更多地被稱為應(yīng)用代碼)進(jìn)行分析并從中收集信息的分析組件210,該信息將在對(duì)于特定執(zhí)行環(huán)境部署該應(yīng)用時(shí)有用。例如,分析組件210可標(biāo)識(shí)諸如數(shù)據(jù)類型、過程、函數(shù)以及依賴性關(guān)系的應(yīng)用片段。盡管不限于此,程序員可通過提供標(biāo)識(shí)數(shù)據(jù)類型、過程、函數(shù)(例如,標(biāo)量值、表值...)等的代碼注釋(即元數(shù)據(jù))來協(xié)助分析組件210。作為示例,一類可用“ [SQL過程]”注釋,指示該類應(yīng)被展示為SQL存儲(chǔ)過程。類似地,類上的“ [SQL數(shù)據(jù)類型],,注釋標(biāo)識(shí)新的數(shù)據(jù)類型。部署組件130包括代碼生成組件220,組件220被配置成生成部署代碼,部署代碼執(zhí)行必要?jiǎng)幼魇沟脩?yīng)用根據(jù)至少分析組件210標(biāo)識(shí)的信息可供使用。更具體地,代碼生成組件220包括安裝組件222、維護(hù)組件224以及移除組件226。安裝組件222被配置成生成用于安裝應(yīng)用的代碼(例如,腳本)。從而,安裝代碼可根據(jù)應(yīng)用以及在其上部署代碼的系統(tǒng)而變化。例如,安裝代碼可包括按照規(guī)定的次序注冊(cè)程序過程、函數(shù)和/或數(shù)據(jù)類型。維護(hù)組件224生成用于維護(hù)已安裝應(yīng)用(可包括更新或升級(jí)已安裝應(yīng)用)的代碼。在執(zhí)行環(huán)境支持更新操作的一些情況中,用組件的新版本更新一個(gè)或多個(gè)應(yīng)用組件可能是相對(duì)簡(jiǎn)單的。然而,在諸如數(shù)據(jù)庫(kù)服務(wù)器等不支持這樣的命令的其它情況中,更新可能是相當(dāng)復(fù)雜的,尤其是應(yīng)對(duì)包括大量文件以及文件或其它代碼之間的依賴性的大型且復(fù)雜的應(yīng)用時(shí)。作為示例,假設(shè)存在三個(gè)可執(zhí)行和/或不可執(zhí)行的文件,“A”、“B”和“C”,其中“A”依賴于“B”,而“B”依賴于“C”,并提供了添加和移除文件的功能。從而,如果要用新版本更新“A”,則可執(zhí)行以下系列動(dòng)作以確保不移除另一文件所依賴的文件“移除C ;移除B ;移除A ;添加A. v2 (版本2)添加B ;并添加C?!标P(guān)于這些和更復(fù)雜依賴性的信息可由分析組件210獲取并提供。移除組件2 被配置成生成代碼以移除(即卸載)應(yīng)用。類似于安裝組件222和維護(hù)組件224,移除組件2 可使用由分析組件210獲取的信息,包括但不限于文件依賴性。具體地,可生成描述如何通過顛倒安裝的次序來卸載已安裝代碼的代碼。此處,卸載的次序是至關(guān)重要的,因?yàn)槿舾蓱?yīng)用可能共享代碼并且不希望無意中破壞其它應(yīng)用。以此方式,應(yīng)用可被完全卸載。另外地或另選地,這樣的代碼可用于卸載單個(gè)文件,例如當(dāng)關(guān)于維護(hù)組件2M描述地更新文件時(shí)。盡管可從已安裝文件生成卸載代碼,但如果文件中的一個(gè)或多個(gè)丟失或找不到,則完整的應(yīng)用不能被卸載,因?yàn)榭赡懿荒苤貥?gòu)依賴性。從而,在一個(gè)或多個(gè)文件安裝時(shí)生成移除或卸載代碼是有益的。部署組件130還包括執(zhí)行啟動(dòng)組件230以及輸出組件M0,其各自對(duì)于所生成的部署代碼提供某些功能。執(zhí)行啟動(dòng)組件230被配置成啟動(dòng)所生成的部署代碼對(duì)于執(zhí)行引擎的執(zhí)行。然而,在一些情況中,這可能是不被準(zhǔn)許的。輸出組件240被配置成向授權(quán)實(shí)體(例如,數(shù)據(jù)庫(kù)管理員(DBA))輸出所生成的部署代碼,該實(shí)體可分析部署并如果被批準(zhǔn)(即被認(rèn)為可接受)則啟動(dòng)執(zhí)行。圖3示出便于分布式處理的系統(tǒng)300。該系統(tǒng)包括層劃分組件310,它被配置成從單層應(yīng)用中自動(dòng)或半自動(dòng)地生成多層應(yīng)用。得到的應(yīng)用因此可完全在多層之一上操作,或被分隔以便跨多層進(jìn)行協(xié)作執(zhí)行。關(guān)于將如何執(zhí)行應(yīng)用以及將在哪里執(zhí)行應(yīng)用的判定可由層劃分組件310基于上下文信息來作出,上下文信息包括但不限于中央處理器負(fù)載/可用性、網(wǎng)絡(luò)帶寬/等待時(shí)間、跨層的預(yù)計(jì)通信成本、歷史數(shù)據(jù),和/或指定策略。如所示,此處可對(duì)于兩層提供應(yīng)用的全部或一部分。在第一層中,應(yīng)用可對(duì)于執(zhí)行引擎320執(zhí)行。在第二層中,應(yīng)用可對(duì)于由主執(zhí)行引擎110主存的客執(zhí)行引擎120執(zhí)行。一旦層劃分組件210為層中的任一個(gè)或兩者生成了代碼,部署組件130可用于方便部署應(yīng)用。對(duì)于第一層,部署可包括將代碼復(fù)制到執(zhí)行引擎320。然而,根據(jù)第二層,部署可能會(huì)復(fù)雜得多,因?yàn)榭蓤?zhí)行引擎120被嵌入在主執(zhí)行引擎110中。為了安全性、可靠性和/或?qū)崿F(xiàn)原因,主執(zhí)行可命令特定的部署協(xié)議,包括代碼的顯式注冊(cè)。如前所述,部署組件130可分析要部署的應(yīng)用并從中獲取信息,并且自動(dòng)地生成代碼來部署應(yīng)用。根據(jù)一個(gè)實(shí)施例,執(zhí)行引擎320和客執(zhí)行引擎120可以是類似的或相同的,一個(gè)區(qū)別在于客執(zhí)行引擎120被主執(zhí)行引擎110主存。圖4示出根據(jù)本發(fā)明一方面的代表性層劃分組件310。在一些情況中,可支持各種代碼安全模式以控制客執(zhí)行環(huán)境的交互例如以便于安全和/或可靠的執(zhí)行。例如,在第一模式即“完全信任”中,可允許所有代碼運(yùn)行,在第二模式即“受限”中,可能不允許一些代碼運(yùn)行,且在第三模式即“安全”中,還有進(jìn)一步的代碼不被允許運(yùn)行。除了提供以上討論的功能,可擴(kuò)展層劃分組件310來應(yīng)對(duì)這些安全模式。具體地,層劃分組件310可包括確認(rèn)組件410和模式代碼組件420。確認(rèn)組件410被配置成確認(rèn)應(yīng)用代碼可被完全部署并鑒于指定模式而正確執(zhí)行。例如,當(dāng)將要在具有至少一些限制的執(zhí)行環(huán)境中部署應(yīng)用代碼時(shí),確認(rèn)組件410可分析代碼并確定是否可正確地部署和執(zhí)行代碼。例如,如果調(diào)用了在指定模式中不可用的函數(shù),則確認(rèn)組件410可生成對(duì)此進(jìn)行指示的出錯(cuò)消息。否則,可在有或沒有相應(yīng)消息的情況下確認(rèn)代碼。模式代碼組件420可生成適用于各種模式的代碼。更具體地,模式代碼組件420可產(chǎn)生在特定的安全模式中有效的等效代碼。例如,不被允許的調(diào)用或操作可由被允許的一個(gè)或多個(gè)調(diào)用或操作的語(yǔ)義上等效的集合來代替。此外,這樣的代碼可涉及在多個(gè)層上生成并利用代碼以允許以不同的方式返回相同的結(jié)果。作為示例,假定執(zhí)行是在數(shù)據(jù)庫(kù)的上下文內(nèi),且安全模式不允許特定的操作。此處,模式代碼組件420可生成代碼,這些代碼代替調(diào)用禁用的操作而采用允許的操作以創(chuàng)建本地?cái)?shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)例如包括關(guān)于需要執(zhí)行什么操作以及要將結(jié)果置于何處的信息。在另一層上,數(shù)據(jù)庫(kù)外(例如,進(jìn)程外),可讀取本地?cái)?shù)據(jù)庫(kù),可執(zhí)行合適的操作,并將結(jié)果返回給指定位置?;剡^來在數(shù)據(jù)庫(kù)內(nèi)(例如,進(jìn)程內(nèi)),代碼可讀取所返回的結(jié)果。換言之,使用臨時(shí)數(shù)據(jù)庫(kù)作為允許禁用操作在外部執(zhí)行并返回結(jié)果的代理。而且,在為相應(yīng)的安全模式產(chǎn)生多個(gè)版本的應(yīng)用代碼時(shí),部署組件130可為特定的安全模式確定并部署有效代碼。圖5-7示出了便于對(duì)于所要求保護(hù)的主題的某些方面的清楚性和理解的示例性場(chǎng)景。這些圖描述了其中包括應(yīng)用層510和數(shù)據(jù)層520(例如,數(shù)據(jù)服務(wù)器)的兩層系統(tǒng)的上下文中的各方面。當(dāng)然,圖5-7及相關(guān)描述不旨在按照任何方式限制所要求保護(hù)的各方面而僅是示例性的。圖5示出了包括應(yīng)用層510和數(shù)據(jù)層520的常規(guī)兩層系統(tǒng)500。可使用適配器530來允許應(yīng)用層510和數(shù)據(jù)層520之間的通信。此處,用戶代碼512經(jīng)由適配器530可對(duì)與容納數(shù)據(jù)的一個(gè)或多個(gè)表5M交互的已存儲(chǔ)的過程522 (例如,被編譯成單個(gè)執(zhí)行計(jì)劃的一組事務(wù)-SQL語(yǔ)句)作出調(diào)用。另外地或另選地,用戶代碼512可僅通過適配器530來直接與表5M交互。在表5M上直接或間接執(zhí)行的任何查詢或其它數(shù)據(jù)操縱操作的結(jié)果可被返回給用戶代碼512而非適配器530供將來使用。圖6描繪了包括應(yīng)用層510和數(shù)據(jù)層520的兩層體系結(jié)構(gòu)600。類似地,適配器530可啟用應(yīng)用層510和數(shù)據(jù)層520之間的通信。此處,用戶代碼512可直接在一個(gè)或多個(gè)表5M上執(zhí)行查詢或其它數(shù)據(jù)操縱操作(例如,創(chuàng)建新表、刪除表...)。而且,用戶代碼或片段610和612可被指定為例如在代碼注釋“在數(shù)據(jù)庫(kù)中運(yùn)行”的情況下而在數(shù)據(jù)庫(kù)中執(zhí)行。圖7示出了從對(duì)于用戶代碼512劃分的層以及對(duì)于數(shù)據(jù)層520的后續(xù)部署得到的分布式處理700。更具體地,部署所生成的代碼710,包括之前形成應(yīng)用層510上的用戶代碼512的一部分的代碼片段610和612。此外,可在應(yīng)用層510上產(chǎn)生和部署所生成的通信720以啟用用戶代碼512和所生成的代碼710之間的通信。而且,可將面向?qū)ο蟪橄蠼M件730部署以在無類型編碼和更強(qiáng)類型版本之間進(jìn)行抽象或映射。例如,無類型編碼“串名=(串)記錄[“名字”]”以及“整數(shù)年齡=(整數(shù))記錄[“年齡”]”可被分別映射為更強(qiáng)類型的版本,諸如“串名=記錄.名字”以及“整數(shù)年齡=記錄.年齡”。換言之,應(yīng)用是使用記錄的面向?qū)ο蟮挠成溥€是無類型對(duì)象是無關(guān)緊要的。此處,數(shù)據(jù)層520可支持?jǐn)?shù)據(jù)庫(kù),更具體地,支持接收結(jié)構(gòu)化查詢語(yǔ)言(SQL)查詢等并返回結(jié)果的關(guān)系執(zhí)行環(huán)境。而且,數(shù)據(jù)層520可包括用于利用另一編程語(yǔ)言針對(duì)一個(gè)或多個(gè)表5M執(zhí)行代碼的客執(zhí)行環(huán)境。用戶生成的代碼710可在客執(zhí)行環(huán)境中運(yùn)行,并由于帶寬和/或網(wǎng)絡(luò)等待時(shí)間問題等,比從應(yīng)用層510執(zhí)行操作快得多地對(duì)于一個(gè)或多個(gè)本地表5M執(zhí)行相同的操作。然而,相同的操作可完全在應(yīng)用層510上執(zhí)行,完全在數(shù)據(jù)層520上執(zhí)行,或按照這兩層的某種組合。換言之,可在進(jìn)程中或進(jìn)程外對(duì)于表5M執(zhí)行操作。應(yīng)用代碼分布的方式可基于與應(yīng)用層和數(shù)據(jù)層兩者相關(guān)的多個(gè)因素變化。例如,將操作移動(dòng)到數(shù)據(jù)層520可得到比進(jìn)程外操作快的計(jì)算。然而,這可能不是最佳的解決方案,因?yàn)樗赡軙?huì)干擾其他用戶的操作。從而,有可能一作業(yè)在晚上執(zhí)行并在半小時(shí)內(nèi)完成,而與在白天在進(jìn)程外執(zhí)行并在兩小時(shí)內(nèi)完成形成對(duì)比。而且,應(yīng)理解,數(shù)據(jù)庫(kù)執(zhí)行環(huán)境和支持各種類型(例如,面向?qū)ο蟆⑦^程、函數(shù)...混合)的一個(gè)或多個(gè)編程語(yǔ)言應(yīng)用的另一執(zhí)行環(huán)境的組合對(duì)于數(shù)據(jù)的高效處理等提供極大的好處。然而,也存在其中可采用過于麻煩的部署,包括命令代碼按照特定次序的復(fù)制和注冊(cè)以及利用多個(gè)安全模式的情況。在極大程度上,采用這樣的協(xié)議以保衛(wèi)一個(gè)或多個(gè)表5M和/或數(shù)據(jù)庫(kù)操作以避免對(duì)所主存的代碼的潛在的不安全和/或不可靠的動(dòng)作。如此處所述,可采用部署組件130和相關(guān)聯(lián)的功能以自動(dòng)地生成代碼以供部署并解除程序員的這一負(fù)擔(dān)。參考若干組件之間的交互已經(jīng)描述了上述系統(tǒng)、體系結(jié)構(gòu)、環(huán)境等。應(yīng)該理解,這樣的系統(tǒng)和組件可以包括這些組件或其中指定的子組件,某些指定的組件或子組件,和/或附加的組件。子組件也可以被實(shí)現(xiàn)為在通信上被耦合到其他組件而不是被包括在父組件中的組件。此外,一個(gè)或多個(gè)組件和/或子組件可以結(jié)合成提供聚集功能的單個(gè)組件。系統(tǒng)、組件、和/或子組件之間的通信可以根據(jù)推送和/或拉取模型來實(shí)現(xiàn)。各組件也可以與一個(gè)或多個(gè)其他組件進(jìn)行交互,出于簡(jiǎn)要考慮在此未具體描述該組件,但本領(lǐng)域的技術(shù)人員均已知。此外,以上公開系統(tǒng)以及以下方法的各個(gè)部分可以包括或包含基于人工智能、機(jī)器學(xué)習(xí)或知識(shí)或規(guī)則的組件、子組件、進(jìn)程、裝置、方法或機(jī)制(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎、分類器···)。這樣的組件和其它組件可以自動(dòng)化執(zhí)行某些機(jī)制或進(jìn)程,由此使得系統(tǒng)和方法的各部分更為自適應(yīng)、高效及智能。作為示例而非限制,部署組件130可利用這樣的機(jī)制來分析應(yīng)用以確定或推斷部署應(yīng)用時(shí)有用的信息。考慮到以上描述的示例性系統(tǒng),參考圖8-11的流程圖將可以更好地理解依照所公開的主題實(shí)現(xiàn)的方法。盡管為了說明簡(jiǎn)潔起見,作為一系列框示出和描述了方法,但是,應(yīng)該理解,所要求保護(hù)的主題不僅限于所描述框的順序,一些框可以按與此處所描繪和描述的不同的順序進(jìn)行和/或與其它框并發(fā)地進(jìn)行。此外,并非全部所示出的框都是實(shí)現(xiàn)下面所描述的方法所必需的。參考圖8,示出了應(yīng)用部署方法800。在參考標(biāo)號(hào)810,可分析應(yīng)用或更具體地應(yīng)用代碼來標(biāo)識(shí)與部署相關(guān)的信息,包括跨一個(gè)或多個(gè)應(yīng)用的代碼依賴性等。根據(jù)一個(gè)實(shí)施例,提供應(yīng)用元數(shù)據(jù)的程序員所指定的代碼注釋可在分析中使用。在標(biāo)號(hào)820,可根據(jù)應(yīng)用分析和特定執(zhí)行引擎來創(chuàng)建部署代碼。這樣的部署代碼可與代碼的安裝、維護(hù)(例如,更新/升級(jí))以及卸載相關(guān)。根據(jù)一個(gè)實(shí)施例,可將所生成的部署代碼提供給授權(quán)實(shí)體以分析、
8批準(zhǔn)并啟動(dòng)代碼的執(zhí)行。圖9描繪了安裝代碼的方法900。在參考標(biāo)號(hào)910,例如向執(zhí)行環(huán)境注冊(cè)應(yīng)用代碼或其部分。在參考標(biāo)號(hào)920,將所注冊(cè)的代碼復(fù)制到執(zhí)行環(huán)境。在930,定位依賴代碼。例如,如果“A”被注冊(cè)并安裝,且“B”依賴于“A”,則標(biāo)識(shí)“B”。在標(biāo)號(hào)640,對(duì)于標(biāo)識(shí)依賴代碼的動(dòng)作是否成功進(jìn)行檢查。如果在930,不能標(biāo)識(shí)依賴代碼(“否”),則方法終止。否則,如果在930標(biāo)識(shí)了依賴代碼(“是”),則方法900循環(huán)回注冊(cè)代碼的參考標(biāo)號(hào)910。圖10示出了更新/升級(jí)代碼的方法1000。在參考標(biāo)號(hào)1010,標(biāo)識(shí)要更新/升級(jí)的代碼。例如,代碼可對(duì)應(yīng)于包括可執(zhí)行或不可執(zhí)行代碼的文件。在標(biāo)號(hào)1020,標(biāo)識(shí)依賴于要更新的代碼的代碼。在1030,移除所標(biāo)識(shí)的依賴代碼。在標(biāo)號(hào)1040,然后移除要更新/升級(jí)的代碼。在參考標(biāo)號(hào)1050,添加代碼的更新后/升級(jí)后版本。在1060,添加依賴代碼。圖11是卸載應(yīng)用的方法1100的流程圖。在標(biāo)號(hào)1110,標(biāo)識(shí)代碼部分之間的依賴性。例如,可在應(yīng)用安裝之前確定并提供這樣的依賴性。在參考標(biāo)號(hào)1120,基于依賴性按照反向次序移除代碼。例如,如果“A”依賴于“B”而“B”依賴于“C”,則首先移除“C”,繼之以“B”,然后是“A”。貫穿此詳細(xì)描述,討論集中于應(yīng)用和數(shù)據(jù)層以及對(duì)于數(shù)據(jù)層的應(yīng)用部署。然而,注意到所要求保護(hù)的主題并不限于此。所要求保護(hù)的主題的各方面在許多其它情況中是有益的。作為示例而非限制,對(duì)于在瀏覽器中運(yùn)行的插件可存在類似的情況。例如,可能存在帶有各種依賴性的多個(gè)插件,它們可受益于處所述的自動(dòng)部署功能。在此所用的術(shù)語(yǔ)“組件”、“系統(tǒng)”和“引擎”及其各種形式意指與計(jì)算機(jī)相關(guān)的實(shí)體,其可以是硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是但不限于是,在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、實(shí)例、可執(zhí)行程序、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用和計(jì)算機(jī)都可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可位于一個(gè)計(jì)算機(jī)上和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。在本文中使用的詞語(yǔ)“示例性”或其各種形式意味著用作示例、實(shí)例或說明。在此被描述為“示例性”的任何方面或設(shè)計(jì)并不一定要被解釋為相比其它方面或設(shè)計(jì)更優(yōu)選或有利。此外,各示例只是出于清楚和理解的目的來提供的并且并不意味著以任何方式限制或約束所要求保護(hù)主題或本發(fā)明的相關(guān)部分??梢岳斫猓緛砜沙尸F(xiàn)不同范圍的多個(gè)附加或替換示例,但出于簡(jiǎn)明的目的已被省略。如此處所使用,術(shù)語(yǔ)“推論”或“推斷”通常指的是從經(jīng)由事件和/或數(shù)據(jù)捕捉的一組觀察結(jié)果來推理或推斷系統(tǒng)、環(huán)境、和/或用戶狀態(tài)的過程??梢允褂猛茢鄟順?biāo)識(shí)特定上下文或動(dòng)作,也可以生成例如狀態(tài)上的概率分布。推斷可以是概率性的,即,基于對(duì)數(shù)據(jù)和事件的考慮,計(jì)算在感興趣狀態(tài)上的概率分布。推斷也可以是指用于從一組事件和/或數(shù)據(jù)構(gòu)成較高級(jí)別的事件的技術(shù)。這樣的推斷導(dǎo)致從一組觀察到的事件和/或存儲(chǔ)的事件數(shù)據(jù)構(gòu)建新的事件或動(dòng)作,不管事件在時(shí)間上是否緊密相關(guān),以及事件和數(shù)據(jù)是來自一個(gè)還是多個(gè)事件和數(shù)據(jù)源。可采用各種分類方案和/或系統(tǒng)(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎……)來執(zhí)行關(guān)于所要求保護(hù)的主題的自動(dòng)化和/或推斷的動(dòng)作。而且,對(duì)于在詳細(xì)描述或權(quán)利要求書中使用術(shù)語(yǔ)“包括”、“包含”、“具有”、“含有”或其它形式的變型而言,這樣的術(shù)語(yǔ)旨在以類似于術(shù)語(yǔ)“包括”的方式體現(xiàn)包含性,如同“包括”在用作權(quán)利要求書中的過渡詞時(shí)所解釋的那樣。為了為所要求保護(hù)主題提供上下文,圖12以及以下討論旨在提供對(duì)其中可以實(shí)現(xiàn)本主題的各方面的合適環(huán)境的簡(jiǎn)要、概括描述。然而,合適的環(huán)境只是示例并且并非旨在對(duì)使用范圍或功能提出任何限制。盡管能夠在可以在一臺(tái)或多臺(tái)計(jì)算機(jī)上運(yùn)行的程序的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述以上公開的系統(tǒng)和方法,但是,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,各方面也可以與其他程序模塊等相結(jié)合地實(shí)現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件和數(shù)據(jù)結(jié)構(gòu)等。此外,本領(lǐng)域技術(shù)人員可以理解,上述系統(tǒng)和方法可用各種計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括單處理器、多處理器或多核處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理(PDA)、電話、手表……)、基于微處理器或可編程消費(fèi)者或工業(yè)電子設(shè)備等。各方面也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。然而,所要求保護(hù)主題的某些方面,如果不是所有方面的話,可以在獨(dú)立計(jì)算機(jī)上實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中的一個(gè)或兩者中。參考圖12,示出了示例通用計(jì)算機(jī)1210或計(jì)算設(shè)備(例如,臺(tái)式機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、手持式設(shè)備、可編程消費(fèi)或工業(yè)電子產(chǎn)品、機(jī)頂盒、游戲系統(tǒng)……)。計(jì)算機(jī)1210包括一個(gè)或多個(gè)處理器1220、存儲(chǔ)器1230、系統(tǒng)總線1M0、大容量存儲(chǔ)1250、以及一個(gè)或多個(gè)接口組件1270。系統(tǒng)總線1240與至少上述系統(tǒng)組件通信地耦合。然而,可以理解,在其最簡(jiǎn)單的形式中,計(jì)算機(jī)1210可包括耦合到存儲(chǔ)器1230的一個(gè)或多個(gè)處理器1220,該一個(gè)或多個(gè)處理器1220執(zhí)行存儲(chǔ)在存儲(chǔ)器1230中的各種計(jì)算機(jī)可執(zhí)行動(dòng)作、指令和或組件。處理器1220可以用通用處理器、數(shù)字信號(hào)處理器(DSP)、應(yīng)用程序?qū)S眉呻娐?ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或其它可編程邏輯設(shè)備、分立門或晶體管邏輯、分立硬件組件或被設(shè)計(jì)為執(zhí)行此處描述的功能的其任意組合來實(shí)現(xiàn)。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器1220還可被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如DSP和微處理器的組合、多個(gè)微處理器、多核處理器、結(jié)合一個(gè)DSP核的一個(gè)或多個(gè)微處理器、或任何其它這種配置。計(jì)算機(jī)1210可包括各種計(jì)算機(jī)可讀介質(zhì)或以其他方式與各種計(jì)算機(jī)可讀介質(zhì)交互以便于控制計(jì)算機(jī)1210來實(shí)現(xiàn)所要求保護(hù)主題的一個(gè)或多個(gè)方面。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī)1210訪問的任何可用介質(zhì),并包含易失性和非易失性介質(zhì)以及可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)……)、磁存儲(chǔ)設(shè)備(例如,硬盤、軟盤、磁帶盒、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)……)、以及固態(tài)設(shè)備(例如,固態(tài)驅(qū)動(dòng)器(SSD)、閃存驅(qū)動(dòng)器(例如,卡、棒、鍵驅(qū)動(dòng)器……)……)、或者可用于存儲(chǔ)所需信息并且可由計(jì)算機(jī)1210訪問的任何其他介質(zhì)。通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語(yǔ)“已調(diào)制數(shù)據(jù)信號(hào)”是指具有以在信號(hào)中編碼信息的方式被設(shè)定或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RFjl外及其他無線介質(zhì)之類的無線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。存儲(chǔ)器1230和大容量存儲(chǔ)1250是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例。取決于計(jì)算設(shè)備的確切配置和類型,存儲(chǔ)器1230可以是易失性的(例如RAM)、非易失性的(例如ROM、閃存……)或是兩者的某種組合。作為示例,基本輸入/輸出系統(tǒng)(BIOS),包括諸如在啟動(dòng)期間在計(jì)算機(jī)1210內(nèi)的元件之間傳輸信息的基本例程,可被存儲(chǔ)在非易失性存儲(chǔ)器中,而易失性存儲(chǔ)器可擔(dān)當(dāng)外部高速緩存存儲(chǔ)器以便于處理器1220的處理等。大容量存儲(chǔ)1250包括相對(duì)于存儲(chǔ)器1230用于存儲(chǔ)大量數(shù)據(jù)的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。例如,大容量存儲(chǔ)1250包括但不限于,諸如磁盤或光盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、閃存存儲(chǔ)器、固態(tài)驅(qū)動(dòng)器、或記憶棒的一個(gè)或多個(gè)設(shè)備。存儲(chǔ)器1230和大容量存儲(chǔ)1250可包括或其中存儲(chǔ)有操作系統(tǒng)1沈0、一個(gè)或多個(gè)應(yīng)用1沈2、一個(gè)或多個(gè)程序模塊1264和數(shù)據(jù)1266。操作系統(tǒng)1260用于控制和分配計(jì)算機(jī)1210的資源。應(yīng)用1262包括系統(tǒng)和應(yīng)用軟件中的一個(gè)或兩個(gè),并且可利用操作系統(tǒng)1260對(duì)資源的管理通過存儲(chǔ)在存儲(chǔ)器1230和/或大容量存儲(chǔ)1250中的程序模塊1264和數(shù)據(jù)1266來執(zhí)行一個(gè)或多個(gè)動(dòng)作。因此,應(yīng)用1262可根據(jù)由此提供的邏輯來將通用計(jì)算機(jī)1210變成專用機(jī)器。所要求保護(hù)主題的全部或各部分可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開功能的軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)來實(shí)現(xiàn)。作為示例而非限制,部署組件130或其一部分可以是應(yīng)用1262或形成應(yīng)用1262的一部分,并且包括存儲(chǔ)在存儲(chǔ)器和/或大容量存儲(chǔ)1250中的一個(gè)或多個(gè)模塊1264和數(shù)據(jù)1沈6,這些模塊和數(shù)據(jù)的功能可在由一個(gè)或多個(gè)處理器1220執(zhí)行時(shí)可實(shí)現(xiàn)。根據(jù)一個(gè)特定實(shí)施例,處理器1220可與片上系統(tǒng)(SOC)或在單個(gè)集成電路基座上包括或換言之集成硬件和軟件的類似體系結(jié)構(gòu)相對(duì)應(yīng)。此處,處理器1220可包括至少與處理器1220和存儲(chǔ)器1230相似的一個(gè)或多個(gè)處理器以及存儲(chǔ)器等。常規(guī)處理器包括最少量的硬件和軟件并且廣泛依賴于外部硬件和軟件。作為對(duì)比,處理器的SOC實(shí)現(xiàn)更強(qiáng)大,因?yàn)樗鼘⒂布蛙浖度肫渲幸阅軌蛴米钌俚挠布蛙浖虿灰蕾囉谕獠坑布蛙浖韱⒂锰囟üδ堋@?,部署組件130和/或相關(guān)聯(lián)的功能可被嵌入到SOC體系結(jié)構(gòu)中的硬件內(nèi)。計(jì)算機(jī)1210還包括通信地耦合到系統(tǒng)總線1240并方便與計(jì)算機(jī)1210的交互的一個(gè)或多個(gè)接口組件1270。作為示例,接口組件1270可以是端口(例如,串行、并行、PCMCIA、USB、火線……)或接口卡(例如,聲音、視頻……)等等。在一個(gè)示例實(shí)現(xiàn)中,接口組件1270可被具體化為用戶輸入/輸出接口,該用戶輸入/輸出接口使得用戶能夠通過一個(gè)或多個(gè)輸入設(shè)備(例如,諸如鼠標(biāo)等定點(diǎn)設(shè)備、跟蹤球、指示筆、觸摸墊、鍵盤、話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、照相機(jī)、其他計(jì)算機(jī)……)來將命令和信息輸入到計(jì)算機(jī)1210中。在另一示例實(shí)現(xiàn)中,接口組件1270可被具體化為輸出外圍接口,該輸出外圍接口向顯示器(例如,CRT、IXD、等離子……)、揚(yáng)聲器、打印機(jī)和/或其他計(jì)算機(jī)等提供輸出。此外,接口組件1270可被具體化為網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口使得能夠諸如通過有線或無線通信鏈路與其他計(jì)算設(shè)備(未示出)通信。 以上所已經(jīng)描述的內(nèi)容包括所要求保護(hù)主題的各方面的示例。當(dāng)然,出于描繪所要求保護(hù)主題的目的而描述每一個(gè)可以想到的組件或方法的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,所要求保護(hù)主題的許多進(jìn)一步的組合和排列都是可能的。從而,所公開的主題旨在涵蓋落入所附權(quán)利要求書的精神和范圍內(nèi)的所有這樣的變更、修改和變化。
權(quán)利要求
1.一種應(yīng)用部署的方法,包括采用至少一個(gè)處理器(1220),所述至少一個(gè)處理器被配置來執(zhí)行存儲(chǔ)在存儲(chǔ)器(1230)中的計(jì)算機(jī)可執(zhí)行指令以執(zhí)行以下動(dòng)作< 分析計(jì)算機(jī)應(yīng)用;以及根據(jù)所述分析動(dòng)作,為所述應(yīng)用對(duì)于客執(zhí)行環(huán)境的至少一部分生成部署代碼。
2.如權(quán)利要求1所述的方法,其特征在于,還包括生成部署代碼,所述部署代碼向主執(zhí)行環(huán)境注冊(cè)所述應(yīng)用的片段以及所述應(yīng)用的一個(gè)或多個(gè)依賴片段。
3.如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)所述分析動(dòng)作,為所述應(yīng)用生成維護(hù)代碼。
4.如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)所述分析動(dòng)作,為所述應(yīng)用生成卸載代碼。
5.如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)安全模式生成部署代碼。
6.一種便于應(yīng)用部署的系統(tǒng),包括耦合到存儲(chǔ)器(1230)的處理器(1220),所述處理器(1220)被配置來執(zhí)行存儲(chǔ)在所述存儲(chǔ)器(1230)中的以下計(jì)算機(jī)可執(zhí)行組件第一組件(130),被配置成根據(jù)應(yīng)用以及主執(zhí)行引擎,自動(dòng)為所述應(yīng)用對(duì)于客執(zhí)行引擎生成部署代碼。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一組件被配置成根據(jù)所述應(yīng)用和所述主執(zhí)行引擎自動(dòng)生成卸載代碼。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一組件被配置成基于與所述主執(zhí)行引擎相關(guān)聯(lián)的安全模式生成所述部署代碼。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述主執(zhí)行引擎是關(guān)系數(shù)據(jù)引擎。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述客執(zhí)行引擎是多個(gè)編程語(yǔ)言針對(duì)的運(yùn)行時(shí)環(huán)境。
全文摘要
本發(fā)明涉及代碼部署協(xié)助。通過自動(dòng)代碼生成,更具體地是部署代碼的自動(dòng)生成來協(xié)助計(jì)算機(jī)編程??煞治鰬?yīng)用,且可根據(jù)分析以及特定執(zhí)行環(huán)境來生成包括安裝、維護(hù)(例如,更新/升級(jí))以及移除(例如,卸載)代碼的部署代碼。
文檔編號(hào)G06F9/445GK102567044SQ20111038614
公開日2012年7月11日 申請(qǐng)日期2011年11月18日 優(yōu)先權(quán)日2010年11月19日
發(fā)明者D·范費(fèi)爾岑, H·J·M·梅杰 申請(qǐng)人:微軟公司