亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置與流程

文檔序號(hào):12007789閱讀:189來源:國知局
一種在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置與流程
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,更具體地說,涉及一種在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置。

背景技術(shù):
隨著全社會(huì)各行業(yè)信息化程度的提高,互聯(lián)網(wǎng)和云計(jì)算的普及,在工信融合的大方向大趨勢(shì)下,企業(yè)的管理信息化市場(chǎng)需求日益旺盛,特別是廣大中小、小微企業(yè)市場(chǎng)將快速成長。小微企業(yè)IT預(yù)算少,然而對(duì)于應(yīng)用的需求一樣旺盛。而在現(xiàn)有技術(shù)中,各種應(yīng)用(應(yīng)用程序)大多是單獨(dú)設(shè)置在獨(dú)立的物理設(shè)備上的。對(duì)于小微企業(yè)而言,各種應(yīng)用如果單獨(dú)安裝部署在獨(dú)立的物理設(shè)備上,成本很難接受。一種解決的辦法是,通過虛擬化技術(shù),小微企業(yè)能夠在同一物理設(shè)備上部署多個(gè)虛擬機(jī),并且把應(yīng)用分別安裝部署在虛擬機(jī)上。這種方法雖然在一定程度上解決了上述的成本問題。但是,由于每個(gè)虛擬機(jī)運(yùn)行獨(dú)立的OS(操作系統(tǒng)),一方面仍然耗費(fèi)著大量的計(jì)算資源,另一方面,應(yīng)用以及應(yīng)用管理的數(shù)據(jù)之間本質(zhì)上仍然是隔離的。而對(duì)于企業(yè)而言,信息在各個(gè)應(yīng)用間實(shí)現(xiàn)共享卻非常必要(比如客戶信息,既要在CRM中存在,也應(yīng)該在ERP中存在,OA中也應(yīng)當(dāng)能夠獲?。R虼?,一種既能解決上述成本問題,又能實(shí)現(xiàn)應(yīng)用間的數(shù)據(jù)共享的在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法就變得很有必要。

技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,針對(duì)現(xiàn)有技術(shù)的上述成本高、應(yīng)用數(shù)據(jù)隔離的缺陷,提供一種成本低、應(yīng)用數(shù)據(jù)可以共享的在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:構(gòu)造一種在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法,包括如下步驟:A)在系統(tǒng)平臺(tái)上運(yùn)行第一進(jìn)程,所述第一進(jìn)程創(chuàng)建委派對(duì)象并將其開放給注冊(cè)在所述第一進(jìn)程上的多個(gè)應(yīng)用;B)在運(yùn)行的第一進(jìn)程上部署多個(gè)應(yīng)用,每個(gè)應(yīng)用在所述第一進(jìn)程上分別具有單獨(dú)的注冊(cè)碼和文件集合;所述文件集合包括由所述第一進(jìn)程指定的在系統(tǒng)指定位置存放該應(yīng)用數(shù)據(jù)的位置;C)所述第一進(jìn)程取得各應(yīng)用的文件集合中的數(shù)據(jù)類型定義文件,創(chuàng)建該應(yīng)用的數(shù)據(jù)庫表;D)運(yùn)行所述各應(yīng)用;其中,所述各應(yīng)用在運(yùn)行中通過所述委派對(duì)象查詢并得到數(shù)據(jù)庫或?qū)Ψ竭\(yùn)用的數(shù)據(jù);所述各應(yīng)用通過描述式的引用訪問內(nèi)存。更進(jìn)一步地,所述步驟D)進(jìn)一步包括:D1)所述各應(yīng)用定義其操作的數(shù)據(jù)模型,其中,通過所述數(shù)據(jù)庫表訪問的為普通實(shí)體,需要跨應(yīng)用訪問的為視圖實(shí)體。更進(jìn)一步地,所述步驟D)中還進(jìn)一步包括:D2)應(yīng)用開始查詢,判斷本次查詢需要操作的實(shí)體是否為本應(yīng)用實(shí)體,如是,執(zhí)行步驟D3);否則,返回查詢失敗信息;D3)判斷所述實(shí)體是否普通實(shí)體,如是,執(zhí)行步驟D4);否則,執(zhí)行步驟D5);D4)調(diào)用所述委派對(duì)象生成查詢語句,數(shù)據(jù)庫執(zhí)行并返回結(jié)果;所述委派對(duì)象封裝結(jié)果并返回;D5)所述實(shí)體為視圖實(shí)體,判斷所述視圖實(shí)體是否得到對(duì)方應(yīng)用授權(quán),如是,執(zhí)行步驟D4);否則,執(zhí)行步驟D6);D6)向?qū)Ψ綉?yīng)用申請(qǐng)授權(quán),并判斷是否得到授權(quán),如是,執(zhí)行步驟D4);否則,返回查詢失敗信息。更進(jìn)一步地,所述步驟B)中,通過同樣運(yùn)行在所述第一進(jìn)程上的控制界面,對(duì)所述多個(gè)應(yīng)用進(jìn)行部署。更進(jìn)一步地,在所述步驟B)中,所述第一進(jìn)程為其上注冊(cè)的應(yīng)用分配單獨(dú)的、以其注冊(cè)碼區(qū)別的文件目錄;所述每個(gè)應(yīng)用只能訪問其自己的目錄;所述第一進(jìn)程提供一個(gè)文件管理器對(duì)象,所述每個(gè)應(yīng)用通過所述文件管理器對(duì)象對(duì)其文件進(jìn)行管理。更進(jìn)一步地,還包括如下步驟:E)所述應(yīng)用封裝其業(yè)務(wù)邏輯作為一個(gè)服務(wù),按照設(shè)定的格式定義所述服務(wù)和描述所述服務(wù)信息,并發(fā)送到所述第一進(jìn)程發(fā)布,便于其他應(yīng)用調(diào)用該服務(wù)。更進(jìn)一步地,所述第一進(jìn)程依據(jù)其收到的服務(wù)定義,查找到所述服務(wù)的實(shí)現(xiàn),驗(yàn)證后發(fā)布;所述其他應(yīng)用通過所述第一進(jìn)程運(yùn)行時(shí)創(chuàng)建的服務(wù)引擎調(diào)用所述服務(wù)。本發(fā)明還涉及一種實(shí)現(xiàn)上述方法的裝置,包括:第一進(jìn)程運(yùn)行模塊:用于在系統(tǒng)平臺(tái)上運(yùn)行第一進(jìn)程,所述第一進(jìn)程創(chuàng)建委派對(duì)象并將其開放給注冊(cè)在所述第一進(jìn)程上的多個(gè)應(yīng)用;應(yīng)用部署模塊:用于在運(yùn)行的第一進(jìn)程上部署多個(gè)應(yīng)用,每個(gè)應(yīng)用在所述第一進(jìn)程上分別具有單獨(dú)的注冊(cè)碼和文件集合;所述文件集合包括由所述第一進(jìn)程指定的在系統(tǒng)指定位置存放該應(yīng)用數(shù)據(jù)的位置;數(shù)據(jù)表建立模塊:用于所述第一進(jìn)程取得各應(yīng)用的文件集合中的數(shù)據(jù)類型定義文件,創(chuàng)建該應(yīng)用的數(shù)據(jù)庫表;應(yīng)用運(yùn)行模塊:用于在所述各應(yīng)用在運(yùn)行中通過所述委派對(duì)象查詢并得到數(shù)據(jù)庫或?qū)Ψ竭\(yùn)用的數(shù)據(jù);所述各應(yīng)用通過描述式的引用訪問內(nèi)存。跟進(jìn)一步地,所述應(yīng)用運(yùn)行模塊進(jìn)一步包括:實(shí)體定義單元:用于所述各應(yīng)用定義其操作的數(shù)據(jù)模型(數(shù)據(jù)類型?),其中,通過所述數(shù)據(jù)庫表訪問的為普通實(shí)體,需要跨應(yīng)用訪問的為視圖實(shí)體;查詢判斷單元:用于在應(yīng)用開始查詢時(shí),判斷本次查詢需要操作的實(shí)體是否為本應(yīng)用實(shí)體;實(shí)體判斷單元:用于判斷所述實(shí)體是否普通實(shí)體;查詢單元:用于調(diào)用所述委派對(duì)象生成查詢語句,數(shù)據(jù)庫執(zhí)行并返回結(jié)果;并使所述委派對(duì)象封裝結(jié)果并返回;授權(quán)判斷單元:用于在所述實(shí)體為視圖實(shí)體時(shí),判斷所述視圖實(shí)體是否得到對(duì)方應(yīng)用授權(quán);授權(quán)取得單元:同于向?qū)Ψ綉?yīng)用申請(qǐng)授權(quán),并判斷是否得到授權(quán)。更進(jìn)一步地,還包括:服務(wù)形成模塊:用于使所述應(yīng)用封裝其業(yè)務(wù)邏輯作為一個(gè)服務(wù),按照設(shè)定的格式定義所述服務(wù)和描述所述服務(wù)信息,并發(fā)送到所述第一進(jìn)程發(fā)布,便于其他應(yīng)用調(diào)用該服務(wù)。實(shí)施本發(fā)明的在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置,具有以下有益效果:由于在第一進(jìn)程上運(yùn)行各應(yīng)用,且將各應(yīng)用的文件、數(shù)據(jù)分別存放,所以可以實(shí)現(xiàn)在一個(gè)硬件平臺(tái)上運(yùn)行多個(gè)應(yīng)用;同時(shí),由于使用委派對(duì)象(delegate)查詢其他應(yīng)用的數(shù)據(jù),所以,可以實(shí)現(xiàn)不同應(yīng)用之間的數(shù)據(jù)共享。綜上,其成本較低、數(shù)據(jù)可以共享。附圖說明圖1是本發(fā)明在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置實(shí)施例中的方法流程圖;圖2是所述實(shí)施例中數(shù)據(jù)共享步驟的具體流程圖;圖3是所述實(shí)施例中的裝置結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步說明。如圖1所示,在本發(fā)明在系統(tǒng)平臺(tái)上運(yùn)行多個(gè)應(yīng)用的方法及裝置實(shí)施例中,包括如下步驟:步驟S11運(yùn)行第一進(jìn)程:在本步驟中,由于需要在一個(gè)硬件平臺(tái)上運(yùn)行多個(gè)應(yīng)用(或應(yīng)用程序),而多個(gè)應(yīng)用均是在運(yùn)行在第一進(jìn)程(或稱為應(yīng)用沙箱)上的,所以,首先需要在系統(tǒng)平臺(tái)上運(yùn)行第一進(jìn)程,當(dāng)?shù)谝贿M(jìn)程開始運(yùn)行后,其創(chuàng)建委派對(duì)象(delegate),并將創(chuàng)建的委派對(duì)象開放給注冊(cè)在第一進(jìn)程上的多個(gè)應(yīng)用。如果該系統(tǒng)平臺(tái)是第一次運(yùn)行第一進(jìn)程,則可能還沒有應(yīng)用在該第一進(jìn)程上注冊(cè),此時(shí),委派對(duì)象將被創(chuàng)建為開放給后續(xù)注冊(cè)的引用??傊还軕?yīng)用在上述第一進(jìn)程注冊(cè)的時(shí)間是否在上述委派對(duì)象創(chuàng)建之前,只要在第一進(jìn)程上注冊(cè)的應(yīng)用,上述委派對(duì)象都將對(duì)其開放;也就是這些應(yīng)用均可以調(diào)用該委派對(duì)象。在本實(shí)施例中,委派對(duì)象是一種中間對(duì)象,可以將調(diào)用者和被調(diào)用者進(jìn)行解耦;采用委派對(duì)象這種模式,對(duì)數(shù)據(jù)庫的訪問處理和控制邏輯進(jìn)行封裝,從而應(yīng)用沙箱只需要把委派對(duì)象提供給各應(yīng)用,就可以實(shí)現(xiàn)數(shù)據(jù)訪問、隔離以及共享。例如,應(yīng)用調(diào)用delegate.execute(“example1”,condition,option)來訪問數(shù)據(jù),其中第一個(gè)參數(shù)是實(shí)體或者視圖實(shí)體名稱,condition為條件對(duì)象,option為其他查詢參數(shù)比如排序,去重等??傊?,委派對(duì)象提供了對(duì)后臺(tái)數(shù)據(jù)庫訪問所需的接口,并實(shí)現(xiàn)了數(shù)據(jù)隔離和有限的共享。步驟S12在第一進(jìn)程上部署多個(gè)應(yīng)用:在本步驟中,在上述運(yùn)行的第一進(jìn)程上部署(包括注冊(cè))多個(gè)應(yīng)用。其中,每個(gè)應(yīng)用在第一進(jìn)程上分別具有單獨(dú)的注冊(cè)碼和文件集合;該文件集合包括由第一進(jìn)程指定的在系統(tǒng)指定位置存放該應(yīng)用數(shù)據(jù)的位置。通常,應(yīng)用的文件包括數(shù)據(jù)模型定義文件、服務(wù)聲明文件和服務(wù)實(shí)現(xiàn)腳本文件;展現(xiàn)層模板文件和展現(xiàn)層控制腳本文件;這些文件通過第一進(jìn)程存儲(chǔ)在系統(tǒng)為上述第一進(jìn)程劃出的、指定的存儲(chǔ)區(qū)域內(nèi)。僅有第一進(jìn)程能夠直接讀取這些文件。對(duì)于系統(tǒng)而言,這些文件(包括數(shù)據(jù))是第一進(jìn)程運(yùn)行中得到的文件或數(shù)據(jù),也可以理解為第一進(jìn)程中的一個(gè)線程文件或一個(gè)操作的文件。步驟S13取得各應(yīng)用的數(shù)據(jù)類型文件,創(chuàng)建對(duì)應(yīng)各應(yīng)用的數(shù)據(jù)庫表:在本步驟中,第一進(jìn)程取得各應(yīng)用的文件集合中的數(shù)據(jù)類型定義文件,創(chuàng)建該應(yīng)用的數(shù)據(jù)庫表;在本實(shí)施例中,每個(gè)應(yīng)用均有一個(gè)數(shù)據(jù)庫表,該應(yīng)用通過該數(shù)據(jù)庫表對(duì)數(shù)據(jù)庫進(jìn)行訪問,也就是說,該應(yīng)用不能直接對(duì)數(shù)據(jù)庫進(jìn)行訪問,而是必須通過第一進(jìn)程和數(shù)據(jù)庫表對(duì)數(shù)據(jù)庫進(jìn)行訪問。步驟S14運(yùn)行各應(yīng)用:在本步驟中,在上述第一進(jìn)程注冊(cè)的各應(yīng)用開始運(yùn)行;其中,各應(yīng)用在運(yùn)行中通過所述委派對(duì)象查詢并得到數(shù)據(jù)庫或?qū)Ψ綉?yīng)用(其他的應(yīng)用)的數(shù)據(jù);且各應(yīng)用通過描述式的引用訪問內(nèi)存。在本實(shí)施例中,上述描述式的引用訪問內(nèi)存是內(nèi)存管理、回收的一種機(jī)制,其允許對(duì)象通過描述式的引用來調(diào)用其他對(duì)象的方法、訪問其他對(duì)象的數(shù)據(jù),但禁止類似C語言的指針方式的尋址,從而防止對(duì)象數(shù)據(jù)受到有意或者無意的破壞。當(dāng)然,在本實(shí)施例中,本步驟可以分解為多個(gè)具體的步驟。在本實(shí)施例中,上述步驟S14可以進(jìn)一步分解為如圖2所示的步驟,包括:步驟S21判斷本次查詢的實(shí)體是否是本應(yīng)用實(shí)體:在本實(shí)施例中,當(dāng)一個(gè)應(yīng)用需要查詢數(shù)據(jù)庫或需要取得別的應(yīng)用的數(shù)據(jù)時(shí),并不能直接訪問該數(shù)據(jù),而是需要執(zhí)行一定的步驟取得其需要的數(shù)據(jù)。整體上來講,當(dāng)一個(gè)應(yīng)用開始運(yùn)行時(shí),通常會(huì)取得該應(yīng)用的操作數(shù)據(jù)模型。在本實(shí)施例中,每個(gè)應(yīng)用需要操作的數(shù)據(jù)模型也可以稱為實(shí)體;其中,通過該應(yīng)用的數(shù)據(jù)庫表訪問數(shù)據(jù)塊并取得數(shù)據(jù)的數(shù)據(jù)模型為普通實(shí)體,而需要跨應(yīng)用訪問數(shù)據(jù)的數(shù)據(jù)模型的為視圖實(shí)體。這些實(shí)體的定義是在應(yīng)用開始運(yùn)行時(shí)就定義好的。而當(dāng)應(yīng)用需要取得數(shù)據(jù)時(shí),就需要本步驟中的判斷,判斷該需要取得數(shù)據(jù)步驟所涉及的實(shí)體是否是本應(yīng)用的實(shí)體,具體的判斷方式是通過該實(shí)體的名稱及參數(shù)進(jìn)行的。如果是本應(yīng)用涉及的實(shí)體,則執(zhí)行下一步驟;否則,直接跳轉(zhuǎn)到步驟S27。步驟S22判斷該實(shí)體是否普通實(shí)體:在本步驟中,判斷上述實(shí)體是否是普通實(shí)體,其判斷同樣是通過該實(shí)體的名稱及參數(shù)進(jìn)行的。如果是普通實(shí)體,執(zhí)行下一步驟;否則,就是視圖實(shí)體,跳轉(zhuǎn)到步驟S24執(zhí)行。步驟S23調(diào)用委派對(duì)象生成查詢語句,數(shù)據(jù)庫執(zhí)行并返回查詢結(jié)果:在本步驟中,應(yīng)用通過調(diào)用第一進(jìn)程提供給該應(yīng)用的委派對(duì)象,生成查詢語句,對(duì)數(shù)據(jù)庫進(jìn)行查詢,從而得到需要的數(shù)據(jù);同樣,這些數(shù)據(jù)也并不是直接返回給該應(yīng)用的,而是通過上述委派對(duì)象,將查詢到的數(shù)據(jù)封裝后再生成相關(guān)對(duì)象,返回到該應(yīng)用??傊?,上述數(shù)據(jù)的取得并不意味著對(duì)原始數(shù)據(jù)的修改,而是通過一定的步驟將對(duì)方運(yùn)用或數(shù)據(jù)庫允許訪問的數(shù)據(jù)拷貝到本應(yīng)用中,因而不會(huì)對(duì)對(duì)方運(yùn)用或數(shù)據(jù)庫的數(shù)據(jù)造成影響。步驟S24判斷是否得到對(duì)方應(yīng)用授權(quán):在本步驟中,由于當(dāng)前的實(shí)體是視圖實(shí)體,也就是說,需要查詢的數(shù)據(jù)是其他應(yīng)用的數(shù)據(jù),為此需要得到對(duì)方的授權(quán),也就是要對(duì)方運(yùn)行才能取得這些數(shù)據(jù)。為此,在本步驟中,判斷該視圖實(shí)體是否得到對(duì)方授權(quán),如是,執(zhí)行步驟S23;否則,執(zhí)行下一步驟。步驟S25向?qū)Ψ綉?yīng)用申請(qǐng)授權(quán):在本步驟中,該應(yīng)用通過第一進(jìn)程向涉及的相關(guān)應(yīng)用申請(qǐng)授權(quán)。步驟S26判斷是否得到對(duì)方應(yīng)用授權(quán):在本步驟中,判斷上述授權(quán)申請(qǐng)是否被批準(zhǔn),如是,跳轉(zhuǎn)到步驟S23執(zhí)行;否則,執(zhí)行步驟S27。步驟S27返回查詢失敗信息:在本步驟中,返回查詢失敗信息。也就是說,未查詢到數(shù)據(jù)。此外,上述步驟S12中,通過同樣運(yùn)行在第一進(jìn)程上的控制界面,對(duì)所述多個(gè)應(yīng)用進(jìn)行部署。應(yīng)用注冊(cè)時(shí),第一進(jìn)程為其上注冊(cè)的應(yīng)用分配單獨(dú)的、以其注冊(cè)碼區(qū)別的文件目錄;每個(gè)應(yīng)用只能訪問其自己的目錄;第一進(jìn)程提供一個(gè)文件管理器對(duì)象,所述每個(gè)應(yīng)用通過所述文件管理器對(duì)象對(duì)其文件進(jìn)行管理。在本實(shí)施例中,如果一個(gè)應(yīng)用需要為其他應(yīng)用提供服務(wù),則該應(yīng)用首先封裝其業(yè)務(wù)邏輯作為一個(gè)服務(wù),按照設(shè)定的格式定義該服務(wù)和描述該服務(wù)信息,并發(fā)送到第一進(jìn)程發(fā)布,便于其他應(yīng)用調(diào)用該服務(wù)。而第一進(jìn)程依據(jù)其收到的服務(wù)定義,查找到所述服務(wù)的實(shí)現(xiàn),驗(yàn)證后發(fā)布;當(dāng)其他應(yīng)用調(diào)用該服務(wù)時(shí),首先需要告知第一進(jìn)程其所需服務(wù)的定義,其他應(yīng)用通過所述第一進(jìn)程運(yùn)行時(shí)創(chuàng)建的服務(wù)引擎調(diào)用該服務(wù)。因此,第一進(jìn)程在開始運(yùn)行之初要?jiǎng)?chuàng)建一個(gè)服務(wù)引擎。在本實(shí)施例中,上述方法可以實(shí)施在目前可獲取的各種架構(gòu)的平臺(tái)上,例如:硬件平臺(tái):包括但不限于x86、ARM架構(gòu);操作系統(tǒng):包括但不限于Linux、Windows、MacOSX操作系統(tǒng);虛擬機(jī)宿主:包括但不限于KVM、XEN、VMWare。在本實(shí)施例中,從應(yīng)用的性質(zhì)上來看,如果將一個(gè)應(yīng)用視為一個(gè)節(jié)點(diǎn)的話,應(yīng)用可以分為管理節(jié)點(diǎn)和應(yīng)用節(jié)點(diǎn),管理節(jié)點(diǎn)獨(dú)立于應(yīng)用節(jié)點(diǎn)運(yùn)行,提供對(duì)應(yīng)用節(jié)點(diǎn)的監(jiān)控;通過應(yīng)用運(yùn)行時(shí)環(huán)境的接口對(duì)各個(gè)應(yīng)用進(jìn)行干預(yù),自動(dòng)備份應(yīng)用的數(shù)據(jù)和配置;除此以外,還能通過控制臺(tái)(或稱為控制界面)進(jìn)行上述管理操作,并可以進(jìn)行應(yīng)用的部署和卸載,應(yīng)用數(shù)據(jù)或者配置的恢復(fù);第一進(jìn)程(應(yīng)用沙箱)是一個(gè)獨(dú)立的操作系統(tǒng)進(jìn)程,同時(shí)是其他企業(yè)應(yīng)用的容器,應(yīng)用沙箱負(fù)責(zé)管理線程調(diào)度、并發(fā)控制以及事務(wù)控制,應(yīng)用負(fù)責(zé)模型定義、業(yè)務(wù)邏輯實(shí)現(xiàn)、展現(xiàn);應(yīng)用沙箱將應(yīng)用運(yùn)行時(shí)平臺(tái)中的持久化資源——數(shù)據(jù)庫和文件系統(tǒng)進(jìn)行封裝,然后提供給應(yīng)用使用,通過應(yīng)用沙箱的數(shù)據(jù)庫訪問機(jī)制和文件訪問機(jī)制確保隔離性;應(yīng)用沙箱提供給應(yīng)用的編程語言不得通過指針直接尋址內(nèi)存。相反,應(yīng)用必須通過描述式的引用來訪問內(nèi)存,應(yīng)用不能從應(yīng)用沙箱中獲得對(duì)其他應(yīng)用中的對(duì)象的引用,從而確保一個(gè)進(jìn)程內(nèi)的對(duì)象的互不影響;(Java和大多數(shù)腳本語言都有類似的特性,應(yīng)用沙箱可以支持這些語言作為應(yīng)用的編程語言)此外應(yīng)用沙箱通過一種服務(wù)引擎的機(jī)制來提供應(yīng)用之間更加松耦合的交互方式。在本實(shí)施例中,每個(gè)應(yīng)用包括一個(gè)唯一的“應(yīng)用ID”和一個(gè)文件的集合,包括以下文件:數(shù)據(jù)模型定義文件、服務(wù)聲明文件和服務(wù)實(shí)現(xiàn)腳本文件;展現(xiàn)層模板文件和展現(xiàn)層控制腳本文件;應(yīng)用的部署包括以下過程:應(yīng)用沙箱注冊(cè)“應(yīng)用ID”,在文件系統(tǒng)上分配/runtime/appdata/應(yīng)用ID作為該應(yīng)用文件存儲(chǔ)的位置;應(yīng)用沙箱讀取數(shù)據(jù)模型定義文件,創(chuàng)建所需的數(shù)據(jù)庫表;應(yīng)用沙箱注冊(cè)服務(wù),每個(gè)應(yīng)用的服務(wù)都以“應(yīng)用ID”+服務(wù)名進(jìn)行區(qū)分;應(yīng)用沙箱將其他文件保存在/deployment/應(yīng)用ID的對(duì)應(yīng)目錄下。在本實(shí)施例中,每個(gè)應(yīng)用都要定以它需要操作的數(shù)據(jù)模型稱為“實(shí)體”,應(yīng)用沙箱中包括兩類實(shí)體:普通實(shí)體:映射為數(shù)據(jù)庫的表;視圖實(shí)體:應(yīng)用沙箱將通過視圖實(shí)體實(shí)現(xiàn)跨應(yīng)用數(shù)據(jù)的訪問。應(yīng)用沙箱在啟動(dòng)時(shí)創(chuàng)建一個(gè)委派對(duì)象(delegate),并將委派對(duì)象的引用暴露給各個(gè)應(yīng)用使用。委派對(duì)象提供了對(duì)后臺(tái)數(shù)據(jù)庫訪問所需的接口,并實(shí)現(xiàn)了數(shù)據(jù)隔離和有限的共享。應(yīng)用之間的實(shí)體訪問授權(quán)可以有多種實(shí)現(xiàn)方式,比如基于PKI的證書授權(quán)方式實(shí)現(xiàn)。每個(gè)應(yīng)用可以定義授權(quán)的策略,由應(yīng)用沙箱根據(jù)策略判斷是否授權(quán)。在任何情況下,委派保證應(yīng)用不能更改另一個(gè)應(yīng)用的實(shí)體,只能通過關(guān)聯(lián)實(shí)體的方式在本應(yīng)用的schema內(nèi)創(chuàng)建關(guān)聯(lián)表來增加實(shí)體的信息字段,并通過視圖實(shí)體來查詢。如果一個(gè)應(yīng)用一定要增加另一個(gè)應(yīng)用的數(shù)據(jù)行,比如ERP應(yīng)用中要增加一個(gè)客戶(CRM應(yīng)用),則需要通過后面描述的服務(wù)機(jī)制來實(shí)現(xiàn)。應(yīng)用沙箱為每個(gè)應(yīng)用分配一個(gè)目錄。目錄名為/runtime/appdata/應(yīng)用ID。每個(gè)應(yīng)用只能訪問自己的目錄。應(yīng)用沙箱提供給應(yīng)用一個(gè)文件管理器對(duì)象(fileManager),應(yīng)用只能通過fileManager在自己的目錄下:創(chuàng)建/刪除子目錄、創(chuàng)建/更新/讀取/刪除文件。應(yīng)用沙箱提供對(duì)文件訪問的并發(fā)控制。如果應(yīng)用需要訪問其他應(yīng)用的文件,僅當(dāng)其他應(yīng)用發(fā)布了相關(guān)的服務(wù)時(shí),可以通過服務(wù)調(diào)用來實(shí)現(xiàn)。應(yīng)用之間如果需要進(jìn)一步共享數(shù)據(jù)、文件,或者應(yīng)用希望將自己的業(yè)務(wù)邏輯封裝好后提供給其他應(yīng)用使用,就可以用到服務(wù)引擎機(jī)制;服務(wù)的定義和實(shí)現(xiàn)為應(yīng)用通過統(tǒng)一的格式定義服務(wù)和描述服務(wù)信息,并通過應(yīng)用沙箱支持的編程語言實(shí)現(xiàn)。例如:服務(wù)的發(fā)布:應(yīng)用沙箱根據(jù)服務(wù)定義,尋找到服務(wù)實(shí)現(xiàn),驗(yàn)證后進(jìn)行發(fā)布。發(fā)布之后的服務(wù)可以被其他應(yīng)用所調(diào)用。服務(wù)的調(diào)用。應(yīng)用沙箱在啟動(dòng)時(shí)創(chuàng)建服務(wù)引擎,并將服務(wù)引擎的訪問控制器(dispatcher)提供給各個(gè)應(yīng)用使用,各個(gè)應(yīng)用可以通過類似于dispatcher.run(“createParty”,“crm”,{name=testname,date=now})的方式調(diào)用某個(gè)應(yīng)用發(fā)布的服務(wù)。本發(fā)明還涉及一種實(shí)現(xiàn)上述方法的裝置,如圖3所示,該裝置包括:第一進(jìn)程運(yùn)行模塊31、應(yīng)用部署模塊32、數(shù)據(jù)表建立模塊33、應(yīng)用運(yùn)行模塊34以及服務(wù)形成模塊35;其中,第一進(jìn)程運(yùn)行模塊31用于在系統(tǒng)平臺(tái)上運(yùn)行第一進(jìn)程,第一進(jìn)程創(chuàng)建委派對(duì)象并將其開放給注冊(cè)在所述第一進(jìn)程上的多個(gè)應(yīng)用;應(yīng)用部署模塊32用于在運(yùn)行的第一進(jìn)程上部署多個(gè)應(yīng)用,每個(gè)應(yīng)用在第一進(jìn)程上分別具有單獨(dú)的注冊(cè)碼和文件集合;文件集合包括由第一進(jìn)程指定的在系統(tǒng)指定位置存放該應(yīng)用數(shù)據(jù)的位置;數(shù)據(jù)表建立模塊33用于使第一進(jìn)程取得各應(yīng)用的文件集合中的數(shù)據(jù)類型定義文件,創(chuàng)建該應(yīng)用的數(shù)據(jù)庫表;應(yīng)用運(yùn)行模塊34用于在所述各應(yīng)用在運(yùn)行中通過所述委派對(duì)象查詢并得到數(shù)據(jù)庫或?qū)Ψ竭\(yùn)用的數(shù)據(jù);所述各應(yīng)用通過描述式的引用訪問內(nèi)存;服務(wù)形成模塊35用于使應(yīng)用封裝其業(yè)務(wù)邏輯作為一個(gè)服務(wù),按照設(shè)定的格式定義所述服務(wù)和描述所述服務(wù)信息,并發(fā)送到所述第一進(jìn)程發(fā)布,便于其他應(yīng)用調(diào)用該服務(wù)。在本實(shí)施例中,應(yīng)用運(yùn)行模塊34進(jìn)一步包括:實(shí)體定義單元341,用于所述各應(yīng)用定義其操作的數(shù)據(jù)模型,,通過所述數(shù)據(jù)庫表訪問的為普通實(shí)體,需要跨應(yīng)用訪問的為視圖實(shí)體;查詢判斷單元342,用于在應(yīng)用開始查詢時(shí),判斷本次查詢需要操作的實(shí)體是否為本應(yīng)用實(shí)體;實(shí)體判斷單元343,用于判斷所述實(shí)體是否普通實(shí)體;查詢單元344,用于調(diào)用所述委派對(duì)象生成查詢語句,數(shù)據(jù)庫執(zhí)行并返回結(jié)果;并使所述委派對(duì)象封裝結(jié)果并返回;授權(quán)判斷單元345,用于在所述實(shí)體為視圖實(shí)體時(shí),判斷所述視圖實(shí)體是否得到對(duì)方應(yīng)用授權(quán);授權(quán)取得單元346,同于向?qū)Ψ綉?yīng)用申請(qǐng)授權(quán),并判斷是否得到授權(quán)。一般來講,以iOS為代表的個(gè)人應(yīng)用平臺(tái)和本實(shí)施例中的方法及裝置有著以下顯著的區(qū)別:iOS為代表的個(gè)人應(yīng)用平臺(tái)管理的應(yīng)用在運(yùn)行時(shí)每一個(gè)是一個(gè)獨(dú)立的操作系統(tǒng)進(jìn)程,iOS應(yīng)用平臺(tái)本身不提供請(qǐng)求派發(fā)、并發(fā)控制和事務(wù)控制(當(dāng)然這些對(duì)于個(gè)人應(yīng)用而言并不重要),而本裝置中應(yīng)用沙箱管理的應(yīng)用只是被管理的一組文件,運(yùn)行時(shí)由沙箱負(fù)責(zé)請(qǐng)求處理、線程調(diào)度、調(diào)用應(yīng)用業(yè)務(wù)邏輯和事務(wù)控制;iOS為代表的個(gè)人應(yīng)用通過為應(yīng)用創(chuàng)建不同的操作系統(tǒng)用戶來進(jìn)行權(quán)限的區(qū)分,如果應(yīng)用通過一些計(jì)算或者通過偽造破解了根用戶的證書,那么可以通過操作系統(tǒng)獲得根用戶的權(quán)限,從而整個(gè)平臺(tái)就被劫持了(比如設(shè)備的越獄);對(duì)于本裝置,應(yīng)用不能調(diào)用應(yīng)用沙箱提供之外的其他接口,而且應(yīng)用邏輯的觸發(fā)也完全由應(yīng)用沙箱控制,安全性更高。同樣地,以J2EE為代表的企業(yè)應(yīng)用平臺(tái),也能夠在一個(gè)進(jìn)程內(nèi)提供對(duì)多個(gè)應(yīng)用的管理,并提供多線程和事務(wù)管理的支持。本實(shí)施例中的方法及裝置與J2EE為代表的企業(yè)應(yīng)用平臺(tái)的顯著區(qū)別在于:本裝置能夠?qū)崿F(xiàn)持久化資源在應(yīng)用之間的隔離,而J2EE的應(yīng)用能夠直接以容器進(jìn)程的用戶身份和權(quán)限訪問文件與數(shù)據(jù)庫資源,無法實(shí)現(xiàn)應(yīng)用之間的隔離。而應(yīng)用之間的隔離對(duì)于管理多個(gè)共存的第三方應(yīng)用來講,是非常必要的一個(gè)特性;本裝置通過特殊的數(shù)據(jù)訪問機(jī)制,不僅能保證隔離,更能夠支持必要的數(shù)據(jù)信息共享,而J2EE平臺(tái)并不提供這種機(jī)制在將OA、CRM、ERP三個(gè)應(yīng)用分別以獨(dú)立VM部署方式和本實(shí)施例中的方法進(jìn)行部署,以下為一個(gè)典型部署所需求的硬件指標(biāo)和測(cè)得的平均交易響應(yīng)時(shí)間:可見通過本發(fā)明所描述的裝置對(duì)應(yīng)用的管理方式,可以實(shí)現(xiàn)許多第三方應(yīng)用在一個(gè)低成本、低功耗的廉價(jià)硬件上的同時(shí)運(yùn)行,并支持這些應(yīng)用之間共享信息。并且仍然能夠很好的支持中小企業(yè)規(guī)模的用戶請(qǐng)求規(guī)模。以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1