用于代碼虛擬化和遠(yuǎn)程進(jìn)程調(diào)用生成的方法和裝置的制造方法
【專利摘要】本發(fā)明公開了用于代碼虛擬化和遠(yuǎn)程進(jìn)程調(diào)用生成的系統(tǒng)和方法。該方法包括在用戶設(shè)備上安裝軟件開發(fā)包(SDK)以及在遠(yuǎn)程服務(wù)器上選擇遠(yuǎn)程進(jìn)程,該遠(yuǎn)程進(jìn)程與至少一個(gè)遠(yuǎn)程服務(wù)相關(guān)。該方法還包括從用于遠(yuǎn)程進(jìn)程的預(yù)定義字段解析參數(shù)以及通過(guò)遠(yuǎn)程服務(wù)器上的至少一個(gè)虛擬代碼供應(yīng)商(VCP)生產(chǎn)代碼片段以調(diào)用遠(yuǎn)程進(jìn)程。該方法將代碼片段插入本地用戶設(shè)備上的本地代碼基,使得插入的代碼片段利用安裝的SDK調(diào)用遠(yuǎn)程進(jìn)程。
【專利說(shuō)明】
用于代碼虛擬化和遠(yuǎn)程進(jìn)程調(diào)用生成的方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明的實(shí)施方式一般涉及用于進(jìn)程調(diào)用代碼生成的方法和系統(tǒng)。
【背景技術(shù)】
[0002] 計(jì)算機(jī)編程語(yǔ)言的發(fā)展和集成擴(kuò)展了現(xiàn)有語(yǔ)言的許多能力。每種語(yǔ)言提供了相應(yīng) 大小、執(zhí)行速度和在平臺(tái)和設(shè)備中的各種功能的具體優(yōu)點(diǎn)和缺點(diǎn)。正因?yàn)槿绱?,一些特定語(yǔ) 言只能利用相應(yīng)的設(shè)備進(jìn)行工作并且用戶常常必須熟悉或甚至精通多種編程語(yǔ)言。另外, 構(gòu)建現(xiàn)代應(yīng)用程序的本質(zhì)迫使開發(fā)者學(xué)習(xí)多種語(yǔ)言。從而寫應(yīng)用程序不再限于使用一種編 程語(yǔ)言。集成和學(xué)習(xí)多種語(yǔ)言是項(xiàng)困難的負(fù)擔(dān),常常需要幾個(gè)月或幾年來(lái)訓(xùn)練程序員/開發(fā) 者達(dá)到足夠的編碼熟練度。
[0003] 應(yīng)用程序可由各種語(yǔ)言構(gòu)成并且如果被部署在服務(wù)器上,則需要程序員學(xué)習(xí)前端 語(yǔ)言、服務(wù)器語(yǔ)言和后端語(yǔ)言。前端技術(shù)也由若干不同的語(yǔ)言(HTML Javascript等)構(gòu)成以 進(jìn)一步增加了編程復(fù)雜度。
[0004] 另外,更多的計(jì)算發(fā)生在網(wǎng)絡(luò)和/或因特網(wǎng)上(即,"云計(jì)算"),用各種軟件開發(fā)包 (SDK)和應(yīng)用編程接口(API)進(jìn)行編程對(duì)開發(fā)者來(lái)說(shuō)是繁瑣的必要。新興的服務(wù),例如社交 媒體(TWITTER、FACEB00K等)、數(shù)據(jù)存儲(chǔ)(DROI 3BOX、CLOUD DRIVE等)和金融交易(PAYPAL、 AMAZ0N、EBAY等)也增加了程序員的編程負(fù)擔(dān),因?yàn)槊總€(gè)服務(wù)可能需要自己的SDK或API來(lái)實(shí) 現(xiàn)由服務(wù)提供的進(jìn)程。例如,TWITTER上的TWEET ING需要與在TUMBLR上貼圖不同的代碼基。 使用這些服務(wù)還可能不方便顯示直到應(yīng)用程序被部署到服務(wù)上之后,這也可能具有不可挽 回的后果。換句話說(shuō),跨多個(gè)平臺(tái)、語(yǔ)言和服務(wù)編程在學(xué)習(xí)和理解遠(yuǎn)程服務(wù)附帶的SDK和API 方面是極其復(fù)雜的。
[0005] 因此,本技術(shù)領(lǐng)域需要集成的本地和遠(yuǎn)程編程環(huán)境。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的實(shí)施方式一般涉及用于代碼虛擬化和遠(yuǎn)程進(jìn)程調(diào)用生成的方法、裝置和 系統(tǒng)。特別地,通過(guò)利用遠(yuǎn)程服務(wù)器上的預(yù)生成的代碼庫(kù)、虛擬化SDK和片段生成器,用戶設(shè) 備上的程序利用跨多個(gè)平臺(tái)和編程語(yǔ)言的多項(xiàng)服務(wù)。用戶設(shè)備接收代碼片段和/或虛擬化 SDK以執(zhí)行遠(yuǎn)程服務(wù)器上的至少一個(gè)遠(yuǎn)程進(jìn)程調(diào)用,而且依次以不同遠(yuǎn)程服務(wù)器的本機(jī)語(yǔ) 言部署進(jìn)程,基本如結(jié)合附圖中的至少一個(gè)所示和/或所描述的,如在權(quán)利要求中更完整地 闡述的。
[0007] 本公開的這些和其它特征和優(yōu)點(diǎn)可通過(guò)結(jié)合附圖回顧本公開的以下詳細(xì)描述來(lái) 理解,在全文中相似的附圖標(biāo)記指示相似的組件。
【附圖說(shuō)明】
[0008] 因此本發(fā)明的上述特征可被詳細(xì)理解的方式、上面簡(jiǎn)要概括的本發(fā)明的更具體的 描述可參考實(shí)施方式得到,其中一些實(shí)施方式在附圖中示出。然而,應(yīng)注意,附圖僅示出了 本發(fā)明的典型實(shí)施方式,因此不被認(rèn)為限制本發(fā)明的范圍,本發(fā)明可準(zhǔn)許其它同等有效的 實(shí)施方式。
[0009] 圖1是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的代碼虛擬化系統(tǒng)的圖示;
[0010] 圖2示出了根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的通過(guò)使用代碼虛擬代碼供 應(yīng)商(VCP)執(zhí)行與CLOUD客戶接口連接的經(jīng)典服務(wù)組件的平臺(tái);
[0011] 圖3是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的使用圖2中公開的虛擬代碼供 應(yīng)商與集成開發(fā)環(huán)境接口連接的概要方法的圖示;
[0012] 圖4是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的建立進(jìn)程調(diào)用片段的方法的流 程圖;
[0013] 圖5是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的用附加的遠(yuǎn)程進(jìn)程擴(kuò)展本地開 發(fā)環(huán)境的方法的流程圖;
[0014] 圖6是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的用于各種編程語(yǔ)言的虛擬化進(jìn) 程調(diào)用代碼生成器的方法的流程圖;以及
[0015] 圖7是根據(jù)本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施方式的示例性計(jì)算服務(wù)器內(nèi)的模塊的 框圖。
【具體實(shí)施方式】
[0016] 在下面描述的實(shí)施方式中,"進(jìn)程"指已經(jīng)被存儲(chǔ)在執(zhí)行計(jì)算機(jī)(例如,服務(wù)器、個(gè) 人計(jì)算機(jī)、移動(dòng)設(shè)備等)上的隨時(shí)可運(yùn)行的代碼基或預(yù)生成的進(jìn)程代碼。每個(gè)進(jìn)程通過(guò)名 稱、進(jìn)程ID、圖標(biāo)、或其它標(biāo)識(shí)符被集成開發(fā)環(huán)境(IDE)的用戶唯一識(shí)別。"執(zhí)行"是指進(jìn)程在 計(jì)算機(jī)(本地或遠(yuǎn)程、或基于CLOUD)上的啟動(dòng)。"包"指通過(guò)公共屬性(API名稱、公共參數(shù)、 SDK、參數(shù)名稱等)組織的進(jìn)程或函數(shù)的集合。"片段"指用待被插入由用戶選擇的相應(yīng)編程 語(yǔ)言的程序中以調(diào)用遠(yuǎn)程進(jìn)程的定制代碼的生成塊。通常,所選擇的語(yǔ)言是由用戶指定的 在用戶設(shè)備上的應(yīng)用程序和/或IDE中實(shí)現(xiàn)的編程語(yǔ)言。
[0017] 本文所公開的實(shí)施方式涉及遠(yuǎn)程服務(wù)器上(例如,"在CLOUD中")的代碼庫(kù),其中用 戶可遠(yuǎn)程選擇進(jìn)程然后下載相應(yīng)的片段和/或SDK以從本地應(yīng)用程序或軟件程序訪問(wèn)進(jìn)程。 片段允許遠(yuǎn)程服務(wù)器上的遠(yuǎn)程進(jìn)程調(diào)用以在服務(wù)器上執(zhí)行進(jìn)程或?qū)⑦M(jìn)程部署到不同的遠(yuǎn) 程服務(wù)器或遠(yuǎn)程機(jī)。用戶設(shè)備使用虛擬化SDK使得片段可與執(zhí)行計(jì)算機(jī)上的遠(yuǎn)程平臺(tái)通信。 遠(yuǎn)程平臺(tái)包括附加服務(wù)的虛擬化組件(例如,編譯器、郵件、AMAZON、TWITTER、EBAY、DR0PB0X 等)以及用于服務(wù)的相應(yīng)SDK和API。計(jì)算平臺(tái)包括硬件體系結(jié)構(gòu)和軟件框架(包括應(yīng)用程序 框架),其中它們的結(jié)合允許軟件運(yùn)行。典型的平臺(tái)包括計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)和運(yùn)行 時(shí)庫(kù)。
[0018] 典型的SDK包括幫助程序員開發(fā)用于軟件包、軟件框架、硬件平臺(tái)、計(jì)算機(jī)系統(tǒng)、視 頻游戲控制臺(tái)、操作系統(tǒng)或類似開發(fā)平臺(tái)的應(yīng)用程序的許多工具、庫(kù)、文檔和樣本代碼。API 定義了應(yīng)該由程序遵循以與另一程序通信的一組規(guī)則。所述規(guī)則規(guī)定了應(yīng)如何按順序?yàn)閮?個(gè)應(yīng)用程序定義例程、數(shù)據(jù)結(jié)構(gòu)等以使彼此通信。API是允許軟件程序彼此交互的接口,而 SDK是可用于開發(fā)針對(duì)特定平臺(tái)的軟件應(yīng)用程序的一組工具。在一些示例中,SDK可包括 API。
[0019] 圖1是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的代碼虛擬化系統(tǒng)100的圖示。系統(tǒng)100 包括至少一個(gè)用戶設(shè)備(102a··· 102η)、網(wǎng)絡(luò)110和至少一個(gè)遠(yuǎn)程服務(wù)器(104a··· 104η)。至少 一個(gè)用戶設(shè)備(l〇2a"_102n)包括能夠存儲(chǔ)和執(zhí)行程序的電子設(shè)備,例如個(gè)人計(jì)算機(jī)、服務(wù) 器、虛擬服務(wù)器、微控制器(M⑶)和控制器、傳感器、致動(dòng)器、與網(wǎng)關(guān)連接的邊緣設(shè)備、專用集 成電路(ASIC)、微處理器和處理器、蜂窩電話、智能電話、平板電腦、筆記本電腦等。
[0020] 每個(gè)用戶設(shè)備(102a··· 102η)包括相應(yīng)的存儲(chǔ)器(112a··· 112η),存儲(chǔ)器(112a··· 112η)存儲(chǔ)連接至網(wǎng)絡(luò)110和認(rèn)證到網(wǎng)絡(luò)110中以連接至至少一個(gè)遠(yuǎn)程服務(wù)器(104a··· 104η) 所必要的代碼。在一些實(shí)施方式中,存儲(chǔ)器(112&···112η)存儲(chǔ)用于接收和部署來(lái)自至少一 個(gè)遠(yuǎn)程服務(wù)器(104a··· 104η)的片段的IDE。
[0021 ] 網(wǎng)絡(luò)110可包括諸如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、無(wú)線局域網(wǎng)WLAN、蜂窩網(wǎng)、Wi-Fi、 因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的有線和/或無(wú)線網(wǎng)絡(luò)中的至少一個(gè)或組合。至少一個(gè)遠(yuǎn)程服務(wù)器(l〇4a··· 104η)可包括遠(yuǎn)程應(yīng)用服務(wù)器、網(wǎng)頁(yè)服務(wù)器、郵件服務(wù)器、主機(jī)服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、存儲(chǔ) 服務(wù)器等。至少一個(gè)遠(yuǎn)程服務(wù)器(104a"_104n)包括存儲(chǔ)器(114a"_114n)以存儲(chǔ)平臺(tái)120并 且通過(guò)SDK生成器122、片段生成器124和執(zhí)行引擎126執(zhí)行具體的進(jìn)程調(diào)用。在一些實(shí)施方 式中,片段生成器124也可被存儲(chǔ)在用戶設(shè)備(102a"_102n)中用于用戶設(shè)備(102a"_102n) 上的本地片段生成。存儲(chǔ)器(114a-_114n)還可存儲(chǔ)用戶接口模塊、用戶檔案/賬戶數(shù)據(jù)庫(kù)、 進(jìn)程集、SDK和相關(guān)參數(shù)以鏈接和執(zhí)行跨網(wǎng)絡(luò)110上的其它服務(wù)器104η的進(jìn)程(例如, FACEB00K、TWITTER、郵件、SMS、MMS、FTP等)。
[0022]執(zhí)行引擎126通過(guò)使用調(diào)用參數(shù)關(guān)聯(lián)識(shí)別的調(diào)用例程和運(yùn)行/執(zhí)行進(jìn)程來(lái)處理對(duì) 庫(kù)中的例程的調(diào)用。在一些實(shí)施方式中,執(zhí)行引擎126可將輸出發(fā)送給另一進(jìn)程調(diào)用或原始 進(jìn)程調(diào)用。
[0023] 在一些實(shí)施方式中,進(jìn)程調(diào)用參數(shù)可被存儲(chǔ)在用戶設(shè)備102a或遠(yuǎn)程服務(wù)器104a 上。在其它實(shí)施方式中,用于進(jìn)程調(diào)用的參數(shù)由用戶經(jīng)由圖形用戶界面中規(guī)定的、呈現(xiàn)給用 戶的預(yù)生成、預(yù)定義的字段直接指定。在一些實(shí)施方式中,圖形用戶界面是IDE的一部分。 IDE利用由遠(yuǎn)程服務(wù)器104a生成的片段集成到用戶設(shè)備102a上的用戶選擇的編程語(yǔ)言的程 序中。
[0024] 在一些實(shí)施方式中,IDE還通過(guò)使用服務(wù)器104a上的片段執(zhí)行遠(yuǎn)程進(jìn)程調(diào)用以部 署附加的進(jìn)程和訪問(wèn)在其它服務(wù)器104η上提供的服務(wù)。通過(guò)公共的虛擬化SDK和將遠(yuǎn)程進(jìn) 程調(diào)用鏈接至下面在圖2中進(jìn)一步討論的相應(yīng)虛擬代碼供應(yīng)商的平臺(tái)來(lái)便利該執(zhí)行。
[0025] 圖2示出了根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的通過(guò)使用代碼虛擬代碼供應(yīng)商 (VCP)245r"245N執(zhí)行與CLOUD客戶205接口連接的經(jīng)典服務(wù)組件(CSC)210r"210 N的平臺(tái) 200。平臺(tái)對(duì)應(yīng)于可被存儲(chǔ)在遠(yuǎn)程服務(wù)器104a上的平臺(tái)120。下文經(jīng)典的服務(wù)組件2101…21 On 被統(tǒng)稱為CSC 210,類似地,虛擬代碼供應(yīng)商245r"245N被統(tǒng)稱為VCP245。平臺(tái)200有效地使 用虛擬化SDK,所述虛擬化SDK經(jīng)由CLOUD客戶205和VCP 245將來(lái)自用戶設(shè)備102的遠(yuǎn)程進(jìn)程 調(diào)用鏈接至CSC210r"210N〇
[0026] CSC 21(h包括遠(yuǎn)程接口206!、應(yīng)用層208!、虛擬化層212!和物理裝備215!。每個(gè)CSC 210代表由平臺(tái)200提供的特定服務(wù)。例如,CSC21(h可以是因特網(wǎng)服務(wù)和相應(yīng)的服務(wù)器(例 如,F(xiàn)ACEB00K、EBAY、POP3郵件、TWITTER、AMAZON、SMS、FTP、HTTP等),CSC 2102可以是提供傳 統(tǒng)本地?cái)?shù)據(jù)信息處理(例如,圖像渲染、代碼編譯、數(shù)據(jù)分析、數(shù)據(jù)存儲(chǔ)等)的計(jì)算機(jī)。
[0027] 物理裝備215!或機(jī)器(CPU、存儲(chǔ)器、網(wǎng)絡(luò)路由器等)在虛擬化層212!被虛擬化以進(jìn) 行處理并存儲(chǔ)應(yīng)用層208:可用的資源。虛擬化在單個(gè)計(jì)算機(jī)中建立了冗余和增加的操作帶 寬,在多個(gè)機(jī)器被虛擬化的實(shí)施方式中更甚。在這些實(shí)施方式中,處理工作量也可基于物理 位置的優(yōu)先級(jí)和獨(dú)立性被分配給各個(gè)裝備。
[0028]應(yīng)用層2081允許虛擬化機(jī)器上的諸如數(shù)據(jù)庫(kù)操作(例如,存儲(chǔ)賬戶檔案、入庫(kù)數(shù)據(jù) 等)的程序和功能的執(zhí)行運(yùn)行時(shí)間。遠(yuǎn)程接口層206:包括代碼以訪問(wèn)網(wǎng)頁(yè)服務(wù)器和利用 API。遠(yuǎn)程接口層2061與〇1)1]0客戶205 (例如,瘦客戶端、網(wǎng)頁(yè)瀏覽器、移動(dòng)應(yīng)用程序、終端仿 真器程序等)通信。
[0029] CLOUD客戶205便于去往和來(lái)自的VCP 245的數(shù)據(jù)與應(yīng)用層2081的通信。CLOUD客戶 205通過(guò)呈現(xiàn)網(wǎng)頁(yè)瀏覽器、終端仿真器或其它客戶界面簡(jiǎn)化了層接口 2061、2081、212jP 215!。本發(fā)明的上述實(shí)施方式可通過(guò)使用虛擬化SDK利用CLOUD客戶205以便于平臺(tái)200上的 片段的遠(yuǎn)程進(jìn)程調(diào)用代碼生成。虛擬化SDK將VCP 245生成和提供的進(jìn)程調(diào)用鏈接至應(yīng)用層 2081。
[0030] VCP 245是允許虛擬沙箱、規(guī)范化、通用語(yǔ)言、結(jié)果解析、自動(dòng)證書認(rèn)證、簡(jiǎn)化的宣 誓過(guò)程(oath process)、平臺(tái)維護(hù)和監(jiān)視的增強(qiáng)的主機(jī)式代碼庫(kù)。通過(guò)附加包含在程序中 的多個(gè)遠(yuǎn)程進(jìn)程和服務(wù),在將進(jìn)程和應(yīng)用/程序完全部署到遠(yuǎn)程服務(wù)器之前測(cè)試或"沙箱" 程序變得越來(lái)越重要。VCP 245通過(guò)使用被下載至用戶設(shè)備102a的虛擬化SDK協(xié)調(diào)片段進(jìn)程 調(diào)用。
[0031]從用戶設(shè)備102a的角度,VCP 245通過(guò)模板化語(yǔ)言允許由虛擬化SDK提供的通用編 程語(yǔ)言使得僅需要組件參數(shù)且僅將組件參數(shù)插入預(yù)生成的代碼中。因此進(jìn)程結(jié)果也能夠被 快速地解析。訪問(wèn)通過(guò)使用預(yù)認(rèn)證和存儲(chǔ)的密鑰的集中管理由平臺(tái)200流線型化以訪問(wèn)遠(yuǎn) 程服務(wù)。預(yù)認(rèn)證還通過(guò)防止用戶設(shè)備102a與平臺(tái)200之間傳輸?shù)目赡鼙┞睹舾行畔⒌拇a 的逆向工程產(chǎn)生更安全的代碼。VCP 245也通過(guò)將進(jìn)程縮減為片段格式來(lái)規(guī)范化編程。因 此,片段表示寫代碼的標(biāo)準(zhǔn)化方式。
[0032] 例如,5行代碼來(lái)調(diào)用CLOUD中的任意進(jìn)程被認(rèn)為是代碼規(guī)范化。VCP 245允許平臺(tái) 200顯示實(shí)時(shí)監(jiān)視和記錄建立的應(yīng)用程序如何被執(zhí)行(例如,使用統(tǒng)計(jì)、錯(cuò)誤處理等)。平臺(tái) 200還使用監(jiān)視來(lái)維護(hù)各自VCP的SDK使得進(jìn)程池230中的API繼續(xù)改進(jìn)以包括新方法、版本 和參數(shù)。
[0033] VCP 245!包括進(jìn)程池23(h、認(rèn)證模塊228!、SDK鏈接模塊225!、片段生成器124!、用戶 數(shù)據(jù)庫(kù)232:和執(zhí)行引擎126:。在一些實(shí)施方式中,單個(gè)執(zhí)行引擎126可部署所有進(jìn)程。
[0034] 為了方便解釋,每個(gè)VCP 245以--對(duì)應(yīng)關(guān)系對(duì)應(yīng)于CSC 210。然而,替換實(shí)施方式 可包括不同的比率,或者單個(gè)VCP 245代表由所有CSC 210提供的全部進(jìn)程。根據(jù)本發(fā)明的 一個(gè)或多個(gè)實(shí)施方式,VCP245被存儲(chǔ)在遠(yuǎn)程服務(wù)器104a上。VCP 245將CSC 210的平臺(tái)200上 提供的遠(yuǎn)程服務(wù)減少至存儲(chǔ)在進(jìn)程池230中的有限數(shù)量的可執(zhí)行的預(yù)定遠(yuǎn)程進(jìn)程。
[0035] 遠(yuǎn)程進(jìn)程對(duì)應(yīng)于可在給定CSC 210n上執(zhí)行的期望動(dòng)作。例如,用于FACEB00K的CSC 21(h的進(jìn)程將具有發(fā)評(píng)論、發(fā)圖片、鏈接評(píng)論或圖片、拒絕好友請(qǐng)求、發(fā)起好友請(qǐng)求、刪除帖 子和用戶期望的其它動(dòng)作的有限進(jìn)程池23(h。因此給定進(jìn)程池23(^*的進(jìn)程數(shù)量受限于與 CSC 21(h相關(guān)聯(lián)的服務(wù)可用的動(dòng)作。繼續(xù)此實(shí)例,平臺(tái)200中可以沒(méi)有用于將產(chǎn)品的評(píng)論置 于FACEB00K上的進(jìn)程。然而,這種進(jìn)程因在AMAZON上可用而由平臺(tái)200處理。
[0036] 進(jìn)程池23(h存儲(chǔ)與由遠(yuǎn)程平臺(tái)200和相應(yīng)的CSC 210提供的每個(gè)進(jìn)程相關(guān)聯(lián)的所 有預(yù)生成的代碼。在一些實(shí)施方式中,預(yù)生成的代碼是遠(yuǎn)程應(yīng)用層208:所必要的本機(jī)語(yǔ)言 以識(shí)別預(yù)生成的代碼進(jìn)程。在其它實(shí)施方式中,編程語(yǔ)言可以是對(duì)用于IDE的用戶設(shè)備102a 而目是本地的。
[0037]片段生成器12也通過(guò)插入由用戶輸入的參數(shù)和進(jìn)程名稱以用相應(yīng)的SDK建立片段 來(lái)生成片段,從而片段可從進(jìn)程池23(h調(diào)用相關(guān)聯(lián)的進(jìn)程。片段參數(shù)可通過(guò)使用GUI輸入, 其中GUI包括與所選擇的遠(yuǎn)程進(jìn)程相關(guān)聯(lián)的預(yù)定字段。片段參數(shù)還可因之前存儲(chǔ)在用戶數(shù) 據(jù)庫(kù)232:中被檢索獲得。用戶數(shù)據(jù)庫(kù)232:包括用戶檔案、歷史和所存儲(chǔ)的用于各種服務(wù)包的 證書。在其它實(shí)施方式中,片段可在用戶設(shè)備102a上本地生成。
[0038]在替換實(shí)施方式中,當(dāng)片段生成器124!例如通過(guò)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)、表述 性狀態(tài)轉(zhuǎn)移(REST)模型或cURL使用API調(diào)用來(lái)調(diào)用時(shí),生成片段。
[0039] 生成的片段是用戶指定的或平臺(tái)200所需的編程語(yǔ)言。例如,用戶可具有用JAVA寫 的預(yù)先存在于用戶設(shè)備l〇2a上的程序。相關(guān)聯(lián)的片段將需要以JAVA語(yǔ)法對(duì)虛擬化SDK和平 臺(tái)200進(jìn)行進(jìn)程調(diào)用并且在用戶設(shè)備上具有相應(yīng)的庫(kù)以直接將片段插入預(yù)先存在的程序 中。
[0040] 認(rèn)證模塊228i從用戶接收證書或使用用戶之前輸入和存儲(chǔ)的證書以訪問(wèn)與VCP 245!相關(guān)聯(lián)的CSC 21(h。認(rèn)證模塊228!也可認(rèn)證到平臺(tái)200。用戶數(shù)據(jù)庫(kù)232!是用于CSC 21(h 的給定服務(wù)的賬戶數(shù)據(jù)庫(kù)。在其它實(shí)施方式中,用戶數(shù)據(jù)庫(kù)232:是用于認(rèn)證到平臺(tái)200的用 戶賬戶的集合。隨后,平臺(tái)200協(xié)調(diào)跨多個(gè)VCP 245和相關(guān)聯(lián)的CSC 210的認(rèn)證。例如,登錄到 遠(yuǎn)程服務(wù)器(例如,TEMBOO服務(wù)器)的平臺(tái)200的用戶將類似地通過(guò)使用由用戶之前存儲(chǔ)在 遠(yuǎn)程服務(wù)器104a上的預(yù)定義的證書認(rèn)證到郵件服務(wù)器和EBAY賬戶。
[00411 SDK鏈接模塊225:由代碼構(gòu)成以允許認(rèn)證模塊228:與網(wǎng)絡(luò)110交互并且與用戶設(shè)備 102a和API通信以形成各種遠(yuǎn)程進(jìn)程包。SDK鏈接模塊225!還協(xié)調(diào)跨多個(gè)VCP 245與多個(gè)SDK 和API的通信以進(jìn)行跨平臺(tái)和跨服務(wù)交互。例如,SDK鏈接模塊225協(xié)調(diào)進(jìn)程池230和相應(yīng)的 SDK(例如,EBAY SDK、TWITTER SDK、SMS SDK等)以形成虛擬化SDK中的組合的單個(gè)進(jìn)程調(diào) 用。繼續(xù)此實(shí)例,通過(guò)鏈接來(lái)自各自進(jìn)程池的進(jìn)程,具有虛擬化SDK的單個(gè)進(jìn)程調(diào)用可基本 同時(shí)TWEET和SMS文本發(fā)送AMAZON上出售的產(chǎn)品所匹配的EBAY價(jià)格的決勝拍賣。
[0042] 最后,執(zhí)行引擎126:執(zhí)行從進(jìn)程池23(h選擇的進(jìn)程,將進(jìn)程部署到另一遠(yuǎn)程服務(wù)器 104η或相應(yīng)的CSC 21(^以執(zhí)行遠(yuǎn)程進(jìn)程。在一些實(shí)施方式中,執(zhí)行引擎126:還可將結(jié)果返回 給用戶數(shù)據(jù)庫(kù)或用戶設(shè)備l〇2a。在另外的實(shí)施方式中,當(dāng)建立的片段用于調(diào)用被嵌入本地 代碼基或用戶設(shè)備l〇2a上預(yù)先存在的程序中的進(jìn)程時(shí)執(zhí)行引擎126:也執(zhí)行來(lái)自進(jìn)程池23(h 的遠(yuǎn)程進(jìn)程。實(shí)施方式進(jìn)一步需要執(zhí)行引擎1261與501(鏈接模塊225:-起工作以使用不同的 SDK協(xié)調(diào)多個(gè)VCP 245之間的通信,例如以鏈接和執(zhí)行若干遠(yuǎn)程進(jìn)程調(diào)用。
[0043]圖3是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的使用與集成開發(fā)環(huán)境(IDE)305接口連 接的圖2中公開的虛擬代碼供應(yīng)商245的概述方法300的圖示。方法300利用用戶設(shè)備102η上 的IDE 305和存儲(chǔ)在遠(yuǎn)程服務(wù)器104η上的VCP 245。方法300下載所選擇的對(duì)IDE 305而言本 機(jī)的編程語(yǔ)言的語(yǔ)言片段以調(diào)用各種編程語(yǔ)言的遠(yuǎn)程進(jìn)程和執(zhí)行遠(yuǎn)程進(jìn)程必要的相應(yīng)CSC 210的平臺(tái)。在所描述的實(shí)施方式中示出了與單個(gè)VCP 245ν和CSC 210ν對(duì)應(yīng)的單個(gè)示例性片 段,然而其他實(shí)施方式包括多個(gè)片段和相應(yīng)的VCP 245和CSC 210。
[0044] IDE 305協(xié)調(diào)本地代碼基與遠(yuǎn)程代碼基,并且允許本地寫程序和應(yīng)用程序,但是通 過(guò)使用虛擬化SDK包括遠(yuǎn)程進(jìn)程調(diào)用。在一些實(shí)施方式中,虛擬化SDK可被下載和存儲(chǔ)在用 戶設(shè)備l〇2n中。
[0045] 向用戶設(shè)備102a顯示VCP 245ν提供的可用進(jìn)程包,并且選擇遠(yuǎn)程進(jìn)程。在一些實(shí) 施方式中,IDE 305的用戶可具有以特定編程語(yǔ)言寫的現(xiàn)有程序。在這種實(shí)施方式中,用戶 還為片段選擇與現(xiàn)有程序相同的編程語(yǔ)言。
[0046]然后將片段下載至IDE 305。在一些實(shí)施方式中,片段由片段生成器12%生成。在 其它實(shí)施方式中,片段可在之前生成并且通過(guò)認(rèn)證到位于VCP 245ν中的用戶賬戶被重新調(diào) 用。在一些實(shí)施方式中,片段由IDE 305中的用戶編輯以包括用于進(jìn)程的參數(shù)。替換地,參數(shù) 可由用戶在從進(jìn)程池230ν選擇進(jìn)程時(shí)提交,使得片段通過(guò)已經(jīng)插入片段的參數(shù)被下載。 [0047] IDE 305然后將片段部署到SDK鏈接模塊225ν。在一些實(shí)施方式中,通過(guò)使用虛擬 化SDK部署片段以將片段的遠(yuǎn)程進(jìn)程調(diào)用關(guān)聯(lián)至相應(yīng)的VCP 245。在其它實(shí)施方式中,將所 部署的片段直接部署到相應(yīng)的VCP 245。
[0048] SDK鏈接模塊225n檢索與所選擇的進(jìn)程和CSC 210的關(guān)聯(lián)的SDK相關(guān)聯(lián)的預(yù)生成的 代碼。例如,對(duì)于與AMAZON服務(wù)器對(duì)應(yīng)的CSC 210n,進(jìn)程是購(gòu)買物品,SDK鏈接模塊225n通過(guò) 使用從片段解析的用戶提交的參數(shù),以本機(jī)語(yǔ)言從進(jìn)程池230n檢索用于訪問(wèn)和執(zhí)行在 AMAZON服務(wù)器上購(gòu)買的預(yù)生成的代碼。繼續(xù)此實(shí)例,解析的用于AMAZON購(gòu)買的參數(shù)將包括 產(chǎn)品名稱和序列號(hào)、用戶名、配送地址和信用卡信息。插入有參數(shù)的預(yù)生成的代碼被發(fā)送給 執(zhí)行引擎126n,執(zhí)行引擎126n隨后將遠(yuǎn)程進(jìn)程部署到相應(yīng)的CSC 21(h。
[0049] 圖4是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的建立進(jìn)程調(diào)用片段的方法的流程圖。 該方法可由上面圖1中的系統(tǒng)100和圖2中討論的平臺(tái)200實(shí)現(xiàn)。方法400生成遠(yuǎn)程進(jìn)程調(diào)用。
[0050] 方法400從步驟405開始,繼續(xù)到步驟410,在步驟410中將與由CSC 210提供的服務(wù) 相關(guān)聯(lián)的進(jìn)程存儲(chǔ)到存儲(chǔ)器(例如,進(jìn)程池230)。進(jìn)程代碼可以是對(duì)CSC而言唯一的本機(jī)語(yǔ) 言。在一些實(shí)施方式中,VCP 245生成進(jìn)程代碼,或者替換地,進(jìn)程代碼可被預(yù)先生成并且準(zhǔn) 備好用于插入?yún)?shù)數(shù)據(jù)。
[0051] 接下來(lái)在步驟415,分析進(jìn)程代碼的屬性。屬性包括參數(shù)(例如,變量)、編程語(yǔ)言類 型、以及用于在CSC 210上接口連接和執(zhí)行進(jìn)程代碼所必要的SDK或API?;诮o定進(jìn)程的參 數(shù)和參數(shù)函數(shù)之間的對(duì)應(yīng)關(guān)系,屬性還包括區(qū)別參數(shù)。例如,發(fā)送郵件進(jìn)程需要例如源郵件 地址、目的郵件地址、主題、當(dāng)前時(shí)間、發(fā)送時(shí)間和消息主體的參數(shù)。
[0052] 接下來(lái)在步驟420,基于與提供的進(jìn)程的相對(duì)關(guān)系和在CSC 210上執(zhí)行進(jìn)程中的角 色來(lái)關(guān)聯(lián)參數(shù)。在實(shí)例中,每個(gè)參數(shù)在進(jìn)程中具有特定的對(duì)應(yīng)函數(shù)和與其它參數(shù)的關(guān)系。目 的郵件地址被指派給進(jìn)程代碼的需要與相應(yīng)的消息主題和主體相關(guān)且源郵件地址為郵件 作者的目的郵件的部分。發(fā)送時(shí)間參數(shù)包括郵件何時(shí)被發(fā)送的值,由此被關(guān)聯(lián)至用于在發(fā) 送郵件進(jìn)程中執(zhí)行的時(shí)間函數(shù)。在替換實(shí)施方式中,分析的進(jìn)程代碼對(duì)各自的CSC 210(例 如,AMAZON、TWITTER等)的SDK和API而言是本機(jī)的。在一些實(shí)施方式中,關(guān)系信息還包括原 參數(shù)組件的源。參數(shù)數(shù)據(jù)可由用戶手動(dòng)輸入,有條件地基于另一進(jìn)程的結(jié)果被自動(dòng)地輸入 (例如,存儲(chǔ)的認(rèn)證密鑰),或被關(guān)聯(lián)至另一進(jìn)程的參數(shù)。
[0053]在步驟425,將參數(shù)分配給進(jìn)程池230中的至少一個(gè)進(jìn)程。繼續(xù)之前的實(shí)例,可將源 郵件地址分配給用于發(fā)送郵件的進(jìn)程,以及將登錄證書分配給認(rèn)證到郵件服務(wù)器的另一進(jìn) 程所必要的POP3服務(wù)器。
[0054] 在步驟430,將進(jìn)程池320中的進(jìn)程鏈接至虛擬化SDK。虛擬化SDK可被下載至用戶 設(shè)備以調(diào)用進(jìn)程池230中的進(jìn)程。在一些實(shí)施方式中,調(diào)用進(jìn)程包括從片段接收被插入重新 調(diào)用的存儲(chǔ)的進(jìn)程代碼中的參數(shù)數(shù)據(jù)、以及通過(guò)使用用于鏈接至虛擬化SDK的CSC 210的 API和SDK在相應(yīng)的CSC 210上執(zhí)行具有插入的參數(shù)的進(jìn)程代碼。在這些實(shí)施方式中,還將必 需的API和SDK鏈接至進(jìn)程池230中的相關(guān)聯(lián)的進(jìn)程代碼。
[0055]在步驟435,方法400通過(guò)使用用于所選語(yǔ)言的預(yù)先存在的語(yǔ)言模板以多種編程語(yǔ) 言生成用于進(jìn)程池230中的每個(gè)進(jìn)程的進(jìn)程調(diào)用片段。方法400然后在步驟440結(jié)束。
[0056]圖5是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的用附加的遠(yuǎn)程進(jìn)程擴(kuò)展本地開發(fā)環(huán)境 的方法的流程圖。通過(guò)虛擬化SDK,方法500允許用戶設(shè)備102a上的代碼基很小且僅包括由 用戶實(shí)現(xiàn)的SDK。方法500包括認(rèn)證到處理虛擬化SDK的遠(yuǎn)程進(jìn)程調(diào)用的遠(yuǎn)程編程平臺(tái)200。 [0057] 方法500從步驟505開始,繼續(xù)進(jìn)入步驟510,在步驟510,用戶設(shè)備102a登錄到遠(yuǎn)程 平臺(tái)200。用戶賬戶被認(rèn)證且與之前存儲(chǔ)的用于CSC 210的各種遠(yuǎn)程服務(wù)(例如,數(shù)據(jù)存儲(chǔ)、 郵件、網(wǎng)站、社交媒體、傭金、銀行等)的密鑰和證書相關(guān)聯(lián)。認(rèn)證模塊228彼此協(xié)調(diào)以認(rèn)證到 VCP 245的相關(guān)聯(lián)的各個(gè)CSC中。在一些實(shí)施方式中,平臺(tái)200包括共同使用的例程、進(jìn)程、 SDK和API的檔案歷史的集中用戶賬戶。為平臺(tái)200和與相關(guān)聯(lián)的VCP 245和CSC 210對(duì)應(yīng)的 用戶數(shù)據(jù)庫(kù)232記錄和更新檔案歷史。
[0058] 方法500繼續(xù)進(jìn)入步驟515,在步驟515,將遠(yuǎn)程進(jìn)程移植和/或顯示給用戶設(shè)備 102a。在實(shí)施方式中,用戶設(shè)備102a具有顯示器,可用的進(jìn)程將經(jīng)由IDE 305被顯示給用戶。 進(jìn)程池230的遠(yuǎn)程進(jìn)程可被顯示為與為特定CSC 210提供的動(dòng)作對(duì)應(yīng)的進(jìn)程包。例如,與 TWITTER對(duì)應(yīng)的CSC 210將包括用于使用FOLLOWING函數(shù)的所有子動(dòng)作的FOLLOW包(例如, FOLLOW、停止FOLLOW、FOLLOW狀態(tài)等)、以及用于使用TWEET的子函數(shù)的TWEET包。
[0059] 方法500繼續(xù)進(jìn)入步驟520,在步驟520,從遠(yuǎn)程服務(wù)器104a請(qǐng)求與所選擇的遠(yuǎn)程進(jìn) 程相關(guān)聯(lián)的虛擬化SDK。虛擬化SDK可包括所有遠(yuǎn)程進(jìn)程調(diào)用或被定制為包括處理對(duì)所選進(jìn) 程的調(diào)用的代碼。在一些實(shí)施方式中,虛擬化SDK特定于用戶設(shè)備102a上的編程語(yǔ)言。虛擬 化SDK提供具有所有必要輔助/工具的代碼片段以調(diào)用在相應(yīng)VCP245上選擇的遠(yuǎn)程進(jìn)程。 [0060] 在無(wú)顯示器可用的實(shí)施方式中,方法500可自動(dòng)下載所選進(jìn)程的相應(yīng)SDK。虛擬化 SDK經(jīng)由SDK鏈接模塊225允許遠(yuǎn)程進(jìn)程調(diào)用,SDK鏈接模塊225將來(lái)自進(jìn)程池的進(jìn)程鏈接至 與CSC 210的至少一個(gè)遠(yuǎn)程服務(wù)相關(guān)聯(lián)的相應(yīng)SDK和API。例如,在CSC 210為G00GLE的情況 下,虛擬化SDK包括到GOOGLE SDK和API的鏈接,GOOGLE SDK和API具有用于運(yùn)行G00GLE搜索 和將來(lái)自搜索的結(jié)果返回給用于特定請(qǐng)求的具體計(jì)算機(jī)的命令。
[0061 ] 在步驟525,將相關(guān)聯(lián)的虛擬化SDK下載和安裝到本地IDE 305使得IDE 305訪問(wèn)遠(yuǎn) 程進(jìn)程并且基于用戶設(shè)備102a集成虛擬化SDK與現(xiàn)有本地代碼。虛擬化SDK是特定語(yǔ)言的本 地代碼庫(kù),開發(fā)者需要將虛擬化SDK安裝在她/他的本地代碼基中(然后安裝在所部署的用 于生產(chǎn)的代碼中)。
[0062]接下來(lái)在步驟530,下載的虛擬化SDK用于通過(guò)使用用戶在IDE305中輸入的參數(shù)允 許本地程序(例如,在用戶設(shè)備l〇2a上建立的程序)調(diào)用和執(zhí)行服務(wù)器104a上的相應(yīng)遠(yuǎn)程進(jìn) 程。參數(shù)可經(jīng)由通過(guò)圖形用戶界面呈現(xiàn)給用戶的預(yù)定義字段輸入。預(yù)定義字段限制和簡(jiǎn)化 建立遠(yuǎn)程調(diào)用片段所必要的信息。參數(shù)的數(shù)據(jù)然后被發(fā)送給遠(yuǎn)程服務(wù)器104a并且被插入到 包括遠(yuǎn)程進(jìn)程的進(jìn)程池230中的預(yù)生成代碼中。
[0063]如下面在圖6中進(jìn)一步討論的,虛擬化SDK還為生成的片段提供支持。片段以源于 用戶設(shè)備102的操作和/或編程環(huán)境(例如,IDE 305)的所選編程語(yǔ)言生成。
[0064] 在步驟535,遠(yuǎn)程服務(wù)器104a通過(guò)VCP 245和執(zhí)行引擎125將關(guān)聯(lián)的遠(yuǎn)程進(jìn)程部署 到與遠(yuǎn)程進(jìn)程和VCP 245相關(guān)聯(lián)的CSC 210。
[0065] 在步驟540,還在IDE 305中顯示來(lái)自遠(yuǎn)程服務(wù)器104a的所執(zhí)行的進(jìn)程的實(shí)時(shí)結(jié) 果。因此,成功的FACEB00K貼可向遠(yuǎn)程服務(wù)器104a返回消息,該服務(wù)器104a處理響應(yīng)以通知 IDE 305。在一些實(shí)施方式中,結(jié)果可直接從與進(jìn)程調(diào)用相關(guān)聯(lián)的CSC 210返回。例如,來(lái)自 FACEB00K貼的結(jié)果可被直接返回給IDE 305。方法500然后在步驟545結(jié)束。
[0066]圖6是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的用于各種編程語(yǔ)言的虛擬化進(jìn)程調(diào)用 代碼生成器的方法600的流程圖。方法600應(yīng)用虛擬化SDK并且通過(guò)生成為用戶設(shè)備102a和/ 或IDE 305定制的片段允許各種編程語(yǔ)言之間的轉(zhuǎn)換以調(diào)用CSC 210上的遠(yuǎn)程進(jìn)程。在一些 實(shí)施方式中,方法600在用虛擬化SDK調(diào)用遠(yuǎn)程進(jìn)程時(shí)是方法500的繼續(xù)。
[0067] 方法600從步驟605開始,繼續(xù)進(jìn)入步驟610,在步驟610中為用戶設(shè)備102a移植遠(yuǎn) 程進(jìn)程的集合。在一些實(shí)施方式中,用戶設(shè)備102a必須登錄到遠(yuǎn)程平臺(tái)200使得用戶賬戶訪 問(wèn)遠(yuǎn)程進(jìn)程。上面關(guān)于圖5進(jìn)一步詳細(xì)描述了登錄過(guò)程。
[0068] 接下來(lái)在步驟615,選擇至少一個(gè)遠(yuǎn)程進(jìn)程。在一些實(shí)施方式中,通過(guò)用戶設(shè)備 102a上的圖形用戶界面(GUI)選擇遠(yuǎn)程進(jìn)程。在其它實(shí)施方式中,通過(guò)以下載至用戶設(shè)備 102a的虛擬化SDK中的函數(shù)來(lái)調(diào)用遠(yuǎn)程進(jìn)程從而指定遠(yuǎn)程進(jìn)程。
[0069]在步驟620,用戶在用戶設(shè)備102a中輸入用于所選進(jìn)程的參數(shù)。參數(shù)可包括用于服 務(wù)的認(rèn)證密鑰、時(shí)序信息、負(fù)荷數(shù)據(jù)、文件擴(kuò)展名和成功執(zhí)行遠(yuǎn)程進(jìn)程所必要的其它信息。 參數(shù)被插入到與遠(yuǎn)程進(jìn)程相關(guān)生成的片段中。在一些實(shí)施方式中,參數(shù)由用戶經(jīng)由本地IDE 305輸入,在其它實(shí)施方式中,一些參數(shù)輸入可通過(guò)使用遠(yuǎn)程服務(wù)器104a上的存儲(chǔ)的證書或 數(shù)據(jù)遠(yuǎn)程地完成。IDE 305與存儲(chǔ)在遠(yuǎn)程服務(wù)器104a上的平臺(tái)200通信。
[0070] 在步驟625,用戶設(shè)備102a上的程序(例如,IDE 305)本地觸發(fā)將具有相關(guān)聯(lián)的進(jìn) 程參數(shù)的所選遠(yuǎn)程進(jìn)程部署到遠(yuǎn)程平臺(tái)200。部署利用片段和虛擬化SDK以調(diào)用遠(yuǎn)程平臺(tái) 200上的合適的VCP 245和進(jìn)程池230。
[0071]在步驟626,從片段解析參數(shù)。解析包括將參數(shù)引向通過(guò)虛擬化SDK鏈接的所選進(jìn) 程的VCP。
[0072]在步驟628,將解析的參數(shù)插入預(yù)生成的代碼中。在一些實(shí)施方式中,預(yù)生成的代 碼是CSC 210的本機(jī)語(yǔ)言并且位于進(jìn)程池230中。
[0073] 在步驟630,在實(shí)際的遠(yuǎn)程環(huán)境(例如,CSC 210)中執(zhí)行進(jìn)程。例如,使用AMAZON月艮 務(wù)器進(jìn)行購(gòu)買或發(fā)送POP3郵件等。然而,替換實(shí)施方式可在測(cè)試環(huán)境中執(zhí)行所選的進(jìn)程以 用于在將進(jìn)程和程序完全部署到遠(yuǎn)程服務(wù)器之前測(cè)試和"沙箱"程序。通過(guò)在程序中包括多 個(gè)遠(yuǎn)程進(jìn)程和服務(wù),沙箱變得越來(lái)越重要。
[0074] 接下來(lái)在步驟635,向用戶IDE實(shí)時(shí)顯示結(jié)果。在一些實(shí)施方式中,被部署在CSC 210上的進(jìn)程調(diào)用的結(jié)果還通過(guò)使用遠(yuǎn)程平臺(tái)200向VCP 245提供監(jiān)視和維護(hù)。處理應(yīng)用程 序的片段使得本機(jī)代碼通過(guò)使用來(lái)自片段的參數(shù)數(shù)據(jù)在遠(yuǎn)程服務(wù)器(例如,CSC 210)上被 執(zhí)行。在該實(shí)施方式中,平臺(tái)200然后監(jiān)視和記錄應(yīng)用程序以將例如使用和錯(cuò)誤數(shù)據(jù)的統(tǒng)計(jì) 返回給IDE 305并且更新VCP 245中的API和SDK。然后將更新集成到進(jìn)程池235中的相應(yīng)的 預(yù)生成代碼中以減少后續(xù)的運(yùn)行時(shí)間錯(cuò)誤。
[0075] 在步驟640,通過(guò)相應(yīng)的VCP 245以第一默認(rèn)編程語(yǔ)言生成用于觸發(fā)所選的遠(yuǎn)程進(jìn) 程調(diào)用的代碼片段。在一些實(shí)施方式中,可在將所選的遠(yuǎn)程進(jìn)程部署到CSC 210的同時(shí)生成 代碼片段。在其它實(shí)施方式中可在不需要部署或執(zhí)行進(jìn)程的情況下生成代碼片段。
[0076] 在一些實(shí)施方式中,代碼片段可調(diào)用/訪問(wèn)也在網(wǎng)絡(luò)110上的遠(yuǎn)程服務(wù)。例如,可在 同時(shí)用于TWEET用戶特定消息和使用與用戶賬戶相關(guān)聯(lián)的預(yù)先認(rèn)證的密鑰/證書在 FOURSQUARE上簽到的ECLIPSE來(lái)寫程序。為了訪問(wèn)這些服務(wù),片段生成器生成待被插入 ECLIPSE的代碼片段以調(diào)用遠(yuǎn)程TWITTER和FOURSQUARE服務(wù)并執(zhí)行前述進(jìn)程。如將在下面進(jìn) 一步描述的,在一些實(shí)施方式中來(lái)自IDE的參數(shù)然后可被提取以經(jīng)由片段生成器124創(chuàng)建片 段格式。
[0077] 在一些實(shí)施方式中,代碼片段還可包括執(zhí)行時(shí)序信息。代碼片段由用于具體的編 程語(yǔ)言的預(yù)定義模板在用戶設(shè)備102a上形成,用戶設(shè)備102a通過(guò)使用安裝的虛擬化SDK將 進(jìn)程調(diào)用傳輸至遠(yuǎn)程平臺(tái)200。
[0078] 在步驟645,方法600確定用戶是否已經(jīng)在IDE 305中選擇了不同的編程語(yǔ)言。在一 些實(shí)施方式中,方法600可通過(guò)比較用戶輸入的現(xiàn)有的編程代碼以及經(jīng)由平臺(tái)200存儲(chǔ)的用 戶檔案偏好或歷史檢測(cè)期望的編程語(yǔ)言。如果方法600確定未選擇其他語(yǔ)言或者默認(rèn)語(yǔ)言 為正確的語(yǔ)言,則在步驟655將片段發(fā)送給用戶設(shè)備102a。然而,如果方法600確定選擇或檢 測(cè)到另一語(yǔ)言,則在步驟650使用用于相應(yīng)的所選語(yǔ)言的模板重新生成或重新格式化片段。 在一些實(shí)施方式中,模板用之前存儲(chǔ)在用戶設(shè)備102a或服務(wù)器104a上的參數(shù)(例如,變量、 對(duì)遠(yuǎn)程API的訪問(wèn)密鑰、令牌、證書等)補(bǔ)充用戶輸入的參數(shù)。
[0079] 方法還繼續(xù)從步驟650進(jìn)入步驟655并且向用戶設(shè)備102a和/或IDE 305發(fā)送新片 段。接下來(lái),在步驟660,將片段插入本地代碼基使得除了在機(jī)器上(例如,僅在用戶設(shè)備 102a上)本地運(yùn)行的代碼之外用戶寫的本地程序可在網(wǎng)絡(luò)110上調(diào)用服務(wù)器104a上的遠(yuǎn)程 進(jìn)程。在一些實(shí)施方式中,本地代碼基可訪問(wèn)其他網(wǎng)絡(luò)機(jī)器。在其他實(shí)施方式中,本地代碼 基可位于開發(fā)者工作站或已經(jīng)(直接或通過(guò)代碼管理系統(tǒng),如GITHUB)被部署在服務(wù)器上。
[0080] 在步驟665,可在用戶IDE中或在用戶選擇的本機(jī)開發(fā)環(huán)境中執(zhí)行本地代碼和遠(yuǎn)程 進(jìn)程調(diào)用。方法600然后在步驟670結(jié)束。
[0081] 圖7是根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的示例性計(jì)算服務(wù)器內(nèi)的模塊的簡(jiǎn)化框 圖。計(jì)算機(jī)系統(tǒng)700包括與前述實(shí)施方式中的結(jié)構(gòu)基本類似的包括服務(wù)器和電子設(shè)備的結(jié) 構(gòu)。
[0082] 如本文中所述的,用于片段生成和遠(yuǎn)程進(jìn)程調(diào)用的方法和系統(tǒng)的各個(gè)實(shí)施方式可 在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上執(zhí)行,所述一個(gè)或多個(gè)計(jì)算機(jī)可與各種其它設(shè)備交互。一個(gè)這 種計(jì)算機(jī)系統(tǒng)是圖7所示的計(jì)算機(jī)系統(tǒng)700,計(jì)算機(jī)系統(tǒng)700可在各個(gè)實(shí)施方式中實(shí)現(xiàn)圖1至 圖6中所示的任一元件或功能。在各個(gè)實(shí)施方式中,計(jì)算機(jī)系統(tǒng)700可被配置為實(shí)現(xiàn)上述的 方法。計(jì)算機(jī)系統(tǒng)700可用于實(shí)現(xiàn)上述實(shí)施方式的任意其它系統(tǒng)、設(shè)備、元件、功能或方法。 在所示實(shí)施方式中,計(jì)算機(jī)系統(tǒng)700可被配置為在各個(gè)實(shí)施方式中作為處理器可執(zhí)行的可 執(zhí)行程序指令722(例如,處理器710可執(zhí)行的程序指令)實(shí)現(xiàn)方法400、500和600。
[0083]在所示實(shí)施方式中,計(jì)算機(jī)系統(tǒng)700包括經(jīng)由輸入/輸出(I/O)接口730耦接至系統(tǒng) 存儲(chǔ)器720的一個(gè)或多個(gè)處理器710a-710n。計(jì)算機(jī)系統(tǒng)700還包括耦接至I/O接口 730的網(wǎng) 絡(luò)接口 740、以及一個(gè)或多個(gè)輸入/輸出設(shè)備760,例如光標(biāo)控制設(shè)備760、鍵盤770和顯示器 780。在一些實(shí)施方式中,鍵盤770可以是觸摸屏輸入設(shè)備。
[0084] 在各個(gè)實(shí)施方式中,任一組件可由系統(tǒng)利用以路由和執(zhí)行如上所述的遠(yuǎn)程進(jìn)程調(diào) 用。在各個(gè)實(shí)施方式中,用戶接口可在顯示器780上生成和顯示。在一些情況下,可想到,實(shí) 施方式可使用計(jì)算機(jī)系統(tǒng)700的單個(gè)示例實(shí)現(xiàn),而在其它實(shí)施方式中多個(gè)這種系統(tǒng)、或構(gòu)成 計(jì)算機(jī)系統(tǒng)700的多個(gè)節(jié)點(diǎn)可被配置為主持各個(gè)實(shí)施方式的一部分或示例。例如,在一個(gè)實(shí) 施方式中,一些元件可經(jīng)由計(jì)算機(jī)系統(tǒng)700的一個(gè)或多個(gè)節(jié)點(diǎn)實(shí)現(xiàn),所述一個(gè)或多個(gè)節(jié)點(diǎn)不 同于實(shí)現(xiàn)其它元件的節(jié)點(diǎn)。在另一實(shí)施方式中,多個(gè)節(jié)點(diǎn)可以分布式實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)700。
[0085] 在不同的實(shí)施方式中,計(jì)算機(jī)系統(tǒng)700可以是包括但不限于個(gè)人計(jì)算機(jī)系統(tǒng)、主框 架計(jì)算機(jī)系統(tǒng)、手持式計(jì)算機(jī)、工作站、網(wǎng)絡(luò)計(jì)算機(jī)、應(yīng)用服務(wù)器、存儲(chǔ)設(shè)備、外圍設(shè)備(如變 換器、調(diào)制解調(diào)器、路由器)、或通常任意類型的計(jì)算或電子設(shè)備的多種類型的設(shè)備中的一 種。
[0086]在各種實(shí)施方式中,計(jì)算機(jī)系統(tǒng)700可以是包括一個(gè)處理器710的單處理器系統(tǒng)、 包括若干處理器710(例如,兩個(gè)、四個(gè)、八個(gè)或其它合適的數(shù)量)的多處理器系統(tǒng)。包括一個(gè) 處理器710的單處理器系統(tǒng)可劃分單個(gè)處理器的功能以表現(xiàn)為用于處理和執(zhí)行程序的同步 數(shù)據(jù)的多個(gè)處理器。處理器710可以是能夠執(zhí)行指令的任意合適的處理器。例如,在各個(gè)實(shí) 施方式中,處理器610可以是實(shí)現(xiàn)各種指令集體系結(jié)構(gòu)(ISA)中的任一種的通用處理器或嵌 入式處理器。在多處理器系統(tǒng)中,處理器710中的每個(gè)可通常地,但非必要,實(shí)現(xiàn)相同的ISA。 [0087]系統(tǒng)存儲(chǔ)器720可被配置為存儲(chǔ)處理器710可訪問(wèn)的程序指令722和/或數(shù)據(jù)732。 在各個(gè)實(shí)施方式中,系統(tǒng)存儲(chǔ)器720可使用任意合適的存儲(chǔ)器技術(shù)實(shí)現(xiàn),存儲(chǔ)器技術(shù)例如, 靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、同步動(dòng)態(tài)RAM(SDRAM)、非易失性/閃存型存儲(chǔ)器、或任意其它 類型存儲(chǔ)器。在所示的實(shí)施方式中,實(shí)現(xiàn)上述實(shí)施方式的任一元件的程序指令和數(shù)據(jù)可被 存儲(chǔ)在系統(tǒng)存儲(chǔ)器720中。在其它實(shí)施方式中,程序指令和/或數(shù)據(jù)可被接收、發(fā)送或存儲(chǔ)在 不同類型的計(jì)算機(jī)可訪問(wèn)媒介上或與系統(tǒng)存儲(chǔ)器720或計(jì)算機(jī)系統(tǒng)700分離的類似媒介上。 [0088] 在一個(gè)實(shí)施方式中,I/O接口 730可被配置為協(xié)調(diào)處理器710、系統(tǒng)存儲(chǔ)器720和設(shè) 備中的任意外圍設(shè)備之間的業(yè)務(wù),包括網(wǎng)絡(luò)接口740或其它外圍接口,例如輸入/輸出設(shè)備 750。在一些實(shí)施方式中,I/O接口 730可執(zhí)行任意必要的協(xié)議、時(shí)序或其它數(shù)據(jù)轉(zhuǎn)變以將來(lái) 自一個(gè)組件(例如,系統(tǒng)存儲(chǔ)器720)的數(shù)據(jù)信號(hào)轉(zhuǎn)換成適于由另一組件(例如,處理器710) 使用的格式。在一些實(shí)施方式中,I/O接口 730可包括對(duì)通過(guò)各種類型的外圍總線附接的設(shè) 備的支持,例如外圍組件互連(PCI)總線標(biāo)準(zhǔn)或通用串行總線(USB)標(biāo)準(zhǔn)的變型。在一些實(shí) 施方式中,I/O接口 730的功能可被劃分成兩個(gè)或更多個(gè)單獨(dú)的組件,例如,北橋和南橋。此 外,在一些實(shí)施方式中,I/O接口 730的一些或所有功能(例如,對(duì)系統(tǒng)存儲(chǔ)器720的接口)可 被直接并到處理器710中。
[0089]網(wǎng)絡(luò)接口 740可被配置為允許在計(jì)算機(jī)系統(tǒng)700與附接至網(wǎng)絡(luò)(例如網(wǎng)絡(luò)790)的其 它設(shè)備(例如,一個(gè)或多個(gè)外部系統(tǒng))之間或計(jì)算機(jī)系統(tǒng)700的節(jié)點(diǎn)之間交換數(shù)據(jù)。在各個(gè)實(shí) 施方式中,網(wǎng)絡(luò)790可包括一個(gè)或多個(gè)網(wǎng)絡(luò),包括但不限于局域網(wǎng)(LAN)(例如,以太網(wǎng)或企 業(yè)網(wǎng))、廣域網(wǎng)(WAN)(例如,因特網(wǎng))、無(wú)線數(shù)據(jù)網(wǎng)、蜂窩網(wǎng)、Wi-Fi、一些其它電子數(shù)據(jù)網(wǎng)、或 它們的一些組合。在各個(gè)實(shí)施方式中,網(wǎng)絡(luò)接口740可經(jīng)由有線或無(wú)線通用數(shù)據(jù)網(wǎng)絡(luò)(例如, 任意合適類型的以太網(wǎng))、經(jīng)由電信/電話網(wǎng)絡(luò)(例如,模擬語(yǔ)言網(wǎng)絡(luò)或數(shù)字光纖網(wǎng)絡(luò))、經(jīng)由 存儲(chǔ)區(qū)域網(wǎng)絡(luò)(例如,光纖通道SAN)、或經(jīng)由任意其它合適類型的網(wǎng)絡(luò)和/或協(xié)議支持通信。
[0090] 在一些實(shí)施方式中,輸入/輸出設(shè)備750可包括一個(gè)或多個(gè)顯示終端、鍵盤、小鍵 盤、觸摸板、觸摸屏、掃描設(shè)備、語(yǔ)音或光學(xué)識(shí)別設(shè)備、或適于通過(guò)一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng) 700輸入或訪問(wèn)數(shù)據(jù)的任意其它設(shè)備。多個(gè)輸入/輸出設(shè)備750可存在于計(jì)算機(jī)系統(tǒng)700中或 者可分布在計(jì)算機(jī)系統(tǒng)700的各個(gè)節(jié)點(diǎn)上。在一些實(shí)施方式中,類似的輸入/輸出設(shè)備可與 計(jì)算機(jī)系統(tǒng)700分離并且可通過(guò)有線或無(wú)線連接(例如,通過(guò)網(wǎng)絡(luò)接口 740)與計(jì)算機(jī)系統(tǒng) 700的一個(gè)或多個(gè)節(jié)點(diǎn)交互。
[0091] 在一些實(shí)施方式中,所示的計(jì)算機(jī)系統(tǒng)可實(shí)現(xiàn)上述任一方法,例如圖3至圖6的流 程圖所示的方法。在其它實(shí)施方式中,可包括不同的元件和數(shù)據(jù)。
[0092]本領(lǐng)域技術(shù)人員將理解,計(jì)算機(jī)系統(tǒng)700僅是說(shuō)明性的并且并非旨在限制實(shí)施方 式的范圍。具體地,計(jì)算機(jī)系統(tǒng)和設(shè)備可包括可執(zhí)行各個(gè)實(shí)施方式所指示的功能的硬件或 軟件的任意組合,包括計(jì)算機(jī)、網(wǎng)絡(luò)設(shè)備、因特網(wǎng)裝置、智能電話、平板電腦、PDA、無(wú)線電話、 尋呼機(jī)等。計(jì)算機(jī)系統(tǒng)700還可連接至未示出的其它設(shè)備,或者可取代地作為獨(dú)立系統(tǒng)操 作。另外,在一些實(shí)施方式中,所示組件提供的功能可被組合到更少的組件中或分布到附加 的組件中。類似地,在一些實(shí)施方式中,可能未提供所示組件中的一些的功能和/或其它附 加的功能可能是可用的。
[0093]本領(lǐng)域技術(shù)人員還將理解,盡管各個(gè)項(xiàng)被說(shuō)明為在被使用時(shí)存儲(chǔ)在存儲(chǔ)器或存儲(chǔ) 設(shè)備中,但是這些項(xiàng)或它們的一部分可在存儲(chǔ)器與其它存儲(chǔ)設(shè)備之間轉(zhuǎn)移以用于存儲(chǔ)器管 理和數(shù)據(jù)完整性目的。替換地,在其它實(shí)施方式中,一些或所有軟件組件可在另一設(shè)備的存 儲(chǔ)器中執(zhí)行并且經(jīng)由計(jì)算機(jī)間通信與所示的計(jì)算機(jī)系統(tǒng)通信。一些或所有系統(tǒng)組件或數(shù)據(jù) 結(jié)構(gòu)還可(例如,作為指令或結(jié)構(gòu)數(shù)據(jù))被存儲(chǔ)在計(jì)算機(jī)可存取介質(zhì)或便攜式物體中以由合 適的驅(qū)動(dòng)器讀取,它們的各個(gè)實(shí)施例已在上面描述。在一些實(shí)施方式中,存儲(chǔ)在與計(jì)算機(jī)系 統(tǒng)700分離的計(jì)算機(jī)可存取介質(zhì)上的指令可經(jīng)由傳輸媒介或通過(guò)通信介質(zhì)(例如,網(wǎng)絡(luò)和/ 或無(wú)線鏈路)傳送的信號(hào)(例如,電信號(hào)、電磁信號(hào)或數(shù)字信號(hào))被發(fā)送給計(jì)算機(jī)系統(tǒng)700。各 個(gè)實(shí)施方式還可包括基于計(jì)算機(jī)可存取介質(zhì)或經(jīng)由通信介質(zhì)接收、發(fā)送或存儲(chǔ)根據(jù)上面描 述實(shí)現(xiàn)的指令和/或數(shù)據(jù)。通常,計(jì)算機(jī)可存取介質(zhì)可包括存儲(chǔ)介質(zhì)或存儲(chǔ)器介質(zhì),例如磁 性或光學(xué)媒介(例如磁盤或DVD/⑶-ROM)、易失性或非易失性媒介(例如,RAM(例如SDRAM、 DDR、RDRAM、SRAM等)、ROM等。
[0094] 所生成的用于插入JAVA程序調(diào)用中的示例性片段,EMBOO虛擬化SDK包括:
[0095] package TembooDemoHCOs; import com.tcmboo.Library.NYTimcs.ArliclcScarchtQ)ucryArticles; import com.lemboo. Library .NYTimcs.AriiclcScarch.Query Arlicics.Qucry Articles! npulSct; import coniAcmboo. Library-NYTimesfArticIcScarch.Query ArticlcsfQucryArticlcsRcsullScl; import com,temboo,core.T embooException; import com.lcmboo.corc.TcmbooSession; public class TcmbooDcmoECOs j 產(chǎn) ^ (?:param args Hthro'vs TcmbooException 氣/ public static void nuiin(Siring[] args) thnms TcmbooExccption { // Instantiate a Temboo session TcmbooSession session 二 new TembooScssion("dcmo' "myFirsiApp", n6d975bf6-c761-47c7-8M); // Instantiate the Chorco, using a previously inslanliaicd TcmbooScssion object QuoryAriiclcs qucryArlicIcsCliorco == new QucryArliclcs(scssion); // Get an InputSct object for Ihc chorco QucryAriiclcsInputScl queryArticlcsinpuls = qucryArticlcsChoreo.ncwInpuiScL(); // Set credential Io use for execution query ArliclcsI nputs.setCredential^'NYTimesCrcfr'), /7 Set inputs qucryArlicicsInpuis.set_Query(,,Gbamai1); // Execute Chorco OucryAriiclesRcsultSctqucry ArticlosRcsuIis= queryArticlesChorco.execute(qucryArticlesinpuis); // Print results using ECOs
[0096] for (ini i = 0; i < query ArliclcsRcsults.gclAriiclcs().lcngLh; i++) {System.oi/^prinllnt'qucryArliclcsRcsulls.gclArticlcsOfiJ.gctTiilcl) + " :: " + query ArticlcsRcsuks.gotArticics( i[i].gclByLinc()); } :} }
[0097] 在上面的實(shí)施例中,片段包括能夠被插入任意Java程序中的5行代碼。從用于"發(fā) 起Temboo會(huì)話"的代碼開始并且以用于"執(zhí)行Choreo"的代碼結(jié)束。這些行代碼能夠在本地 IDE中作為文本被編輯并且在將來(lái)被編輯,只要用戶知道他或她想要叫的choreos的名字。 "package TembooDemoECOs"行通過(guò)導(dǎo)入特定類QueryArticIes調(diào)用虛擬化SDK。上面的實(shí)施 例能夠安裝包括用于QueryArticle的代碼的示例性SDK:
[0098] public class QueryArticles extends Choreogfaphy { /*? (^Yeatc a new instancc oi' the QueryArlicIcs Choreo, A TembooSession object, containing a valid set of Tcmboo crcdcnlials, must be supplied. V public QueryArtiGles(TembooSessi〇n session) { supcr(session, TcmbooPath.palhFromSlringNoExccplionC^/Library/NYTimcs/ArliclcScarch/Qucry Article s")); ) Obtain an InpulScl object., used to define inputs for an excculion of this ('horco. (ajrciurn QueryArlidcsInputScl n public QucryAriidcslnpulScl ncw!npuiSct() j return new QucryArliclcsInpulScl();
[0099] } ^ Execute the Choree using Ihc socciilcd InputSci as parameters, wait lor the Choree to complete ^ and return a ResultSet containing the execution results, A (? param choicoinputs ^ (prelum ^ @throws TemboqException 卑]' (^Override public Q \ \ ciy A r Li clesResullS el ex;eGule(Iiip UtSet ehoreolnputs) throws TembooExccption j JSONObjocl result = supcr.excculcWii.hRcsuils(chorcOlnpuis); return new QucryAriiclcsResuIiScKresult); /^t' An InpuiSct with methods appropriate for specifying the inputs to the QueryAnicles Chorco> The InpuiScl object is used ?ο specify input parameters when executing this chorea, 鮮 public sialic class QucryAriiclcsInpuiScl extends InpulSct i / 轉(zhuǎn) Set ihe value oHhe APIKey inpu【fbr iliis Chorco· @param String - (required, siring) The API Key provided by NY Times, public void scl_APIKcy(Slring value) | this.setlnputC'APIKey1', value);
[0100] } /料 Set the value £)f the BeginDaic input for this Chorco. (a:parani Siring - (opliomii, dulc) Scls the starting point (which is inclusive) of the range of publication dal.es to return. Musi be used wilh HnclUalcf Dale should be formaUcdlikc Y'YYYMMDD. public void sci_BcgiriDaic(Siring value) J this ,setInput(nBegin伽 te" 5 valu 翁 } 嚴(yán)雄 S^i ihc value ofthc EndDaic input for this Chorco. (i/jparam Siring - (optional, date) Sets ihc end point (which is inclusive) of the range of publication dales io return. Must be used with BcginDatc. Date should be Pormaiicd like YYYYMMDD. _ public void sei_EndDate(Striiig value) { this. setInput(HEndDate" s value); } 產(chǎn)譯 Set the value of the Facets input for this Ghoreo. (a)param Siring - (optional, siring) A comma-dclimilcd list of up io 5 facets. This indicates the scls of lacci values io include in lho response. Sec Chorco documcntalion ibr more inibrmation about accepted values for this input. 唞/ public void set_FaGets(String value) { this.、etlnput("Facets",vahie); } Set the value of the Fields input for this Clloreo>
[0101] ^;param String - (opiional, sti'ing) A comma-dclimitcd list of fields to return. These Helds arc returned by defaull: body, byline, dale, title, find url. 私/. public void set_Fic!ds(Slring value) { this.setInpui("Ficldsn, value); } 嚴(yán)* Scl lhc value oflhc OlTsci inpul for this Chorco, (aipararn Integer - (oplional, integer) This corresponds ?ο which set of 10 results is returned. Used Io page through results. Sci to 0 to return records 0-9, set to I Io return records 10-19, etc, public void set_Offset(Integer value) { this.scUnpiU("〇n、sct' value): 辦 Set the value of the Offset input for this Choreo as a String. uuparam Siring - (optional, integer) This corresponds Io which scl of 10 results is returned. Used to page through results. Set to 0 to return records 0-9, set. to ! to return records 10-19, etc. public void set_Ollsot(String value) { IhisfSCtlnpul("〇r!sci'\ value); }: 產(chǎn) * Set the value of the Query input for this Choreo, urparam Siring - (required, string) Search kcywoixls (optionally applied to spcciiic Helds) and/or facets. See Choree documentation Ibrsynlax examples, public void set_Quer>7(String value) { this.se;tInput(,'Queryu, value); 嚴(yán) * Set the value of the Rank input for this Chore?. (i:param Siring - (oplional, siring) Sets the order of the results. Accepted values are: newest (the dclaulis). oldest, or closest. 電/ public void set_Raixk(String value) { this;setInput("RaakH5 value); } /雄* A RcsuliScl with methods iailorcd to the values returned by the QueifyArticies Gho rco.
[0102] The ResultSet object is used to retrieve ihc results of a Chorco cxccutiori, I:卻I publie static class QueryAtlielesResxittSet extends ResultSet { public QueryArticicsResultSei(JSONObjeet doc) throws TembooExeeption { supendoc), /電諱 Retrieve the value for the "Response" output from this Choreo execution @retum String - (jsGn) The response irom the NY Times API. public Siring gcl Rcsponscf) ! return this.getfcs曲(''Respcmse'');
[0103] The value of offset corresponds to a set of 10 results (i.o. OlTsci=O for results O-Q5 offset=! for results 10-19, etc) 參/ public String gciO(I sot() { return (String) (iJSONUbjcct)gclJSONFromSlring(lhis.gciRcsu!l(" Response") )).opL(M〇r(sclt,); } Gel an ariiclc mulching the search critcriej 舉/ public; NyTitnesArticle[] getArticles() { JSONArray list = (JSONArray) ((iSONObjccOgcUSONFromSlringilhis^gciRcsultC'Rcsponse'^.optC'results"); NYTinicsArl.iclc[] resuUArray - new l^TimcsAriic!c[(lisl !- null) ? Iist.length(): 0]; if(list != null) { for(int i=0i; i<listJength(); i+-l·) { t ry { resultArray[i] = new NYTimesArticie(list,get(i)); } catch (j SON exception e) {} } } return resultArray; } /** Contains the search tokens provided for the query public Slring[] getTokens() { JSONArray list = (JSONArray) ((JSONObjcc?)gcLJS0^1FromString(lhis.gcLRcsulL(?,Rcsponsc M))).opι(i?lokcns,^); Siringf] rcsultArray = new Siring[(lisi != null) ? lisi.longih(): 0]; if(list I= null) { for(inl i=0; i<lisi.length(); i+-H) { iry rcsullArray[i] = (Siring) list.gcl(i); } caich (JSON Exception c) ! j }
[0104] } rclurn result Array; } /* * 丁he total number of articles for Ihis search public Number gctTotal() { return (Number) (iJSONObjcci)geUSONFromSlring{lhis.geLRcsuli(,'Rcsponsc i,))).opi("iotar,); } } }
[0105] 通過(guò)安裝上面的示例性虛擬化SDK,片段現(xiàn)在可執(zhí)行對(duì)遠(yuǎn)程進(jìn)程的調(diào)用。代碼片段 鏈接至虛擬化SDK代碼以通過(guò)相關(guān)聯(lián)的VCP 245調(diào)用遠(yuǎn)程服務(wù)器104a上的實(shí)際進(jìn)程。在一些 實(shí)施方式中,SDK包括確保輸入的參數(shù)是正確的格式、然后調(diào)用相應(yīng)的遠(yuǎn)程進(jìn)程。在上面的 實(shí)施例中,"choreo"是遠(yuǎn)程進(jìn)程在用戶設(shè)備102a和/或本地IDE 305上的圖形表示。
[0106] 在不同的實(shí)施方式中,本文描述的方法可以軟件、硬件或它們的組合實(shí)現(xiàn)。另外, 可改變方法的次序,可添加、重新排序、組合、省略或以其它方式修改各種元件。本文描述的 所有實(shí)施例以非限制的方式給出。對(duì)本領(lǐng)域技術(shù)人員顯而易見的是可對(duì)本公開進(jìn)行各種修 改和改變。已經(jīng)在【具體實(shí)施方式】的背景下描述了根據(jù)實(shí)施方式的實(shí)現(xiàn)。這些實(shí)施方式是說(shuō) 明性的而非限制性的。許多變型、修改、添加和改進(jìn)是可行的。由此,可為本文作為單個(gè)示例 描述的組件提供多個(gè)示例。各個(gè)組件、操作和數(shù)據(jù)存儲(chǔ)之間的邊界一定程度上是任意的,具 體的操作是在特定說(shuō)明性配置的背景下被說(shuō)明的。可預(yù)想到功能的其它分配,并且其落入 下面權(quán)利要求的范圍內(nèi)。最后,示例性配置中的作為獨(dú)立組件給出的結(jié)構(gòu)和功能可作為組 合結(jié)構(gòu)或組件實(shí)現(xiàn)。這些和其它變型、修改、添加和改進(jìn)可落入下面權(quán)利要求限定的實(shí)施方 式的范圍內(nèi)。
[0107] 盡管前面是針對(duì)本發(fā)明的實(shí)施方式,但是在不偏離本發(fā)明的基本范圍的情況下可 想到本發(fā)明的其它實(shí)施方式,本發(fā)明的范圍由所附權(quán)利要求確定。
【主權(quán)項(xiàng)】
1. 一種用于代碼虛擬化的方法,包括: 接收遠(yuǎn)程服務(wù)器上的遠(yuǎn)程進(jìn)程的選擇,所述遠(yuǎn)程進(jìn)程與至少一個(gè)遠(yuǎn)程服務(wù)相關(guān); 從所述遠(yuǎn)程服務(wù)器上的至少一個(gè)虛擬代碼供應(yīng)商(VCP)生成代碼片段,所述代碼片段 具有來(lái)自預(yù)定義字段的參數(shù)以調(diào)用所述遠(yuǎn)程進(jìn)程;以及 提供所述代碼片段以用于插入到用戶設(shè)備上的本地代碼基中,使得所述代碼片段從所 述用戶設(shè)備調(diào)用所述遠(yuǎn)程進(jìn)程,其中所述用戶設(shè)備上安裝有軟件開發(fā)包(SDK)。2. 根據(jù)權(quán)利要求1所述的方法,其中所述代碼片段和所述本地代碼基具有相同的編程 語(yǔ)言。3. 根據(jù)權(quán)利要求1所述的方法,其中生成所述代碼片段還包括協(xié)調(diào)用于多個(gè)經(jīng)典服務(wù) 組件(CSC)的多個(gè)SDK。4. 根據(jù)權(quán)利要求3所述的方法,還包括接收具有參數(shù)數(shù)據(jù)的所述代碼片段以及提取所 述參數(shù)數(shù)據(jù)的參數(shù)值以執(zhí)行與所述CSC上的進(jìn)程對(duì)應(yīng)的命令。5. 根據(jù)權(quán)利要求1所述的方法,還包括認(rèn)證到托管所述至少一個(gè)VCP的遠(yuǎn)程平臺(tái)。6. 根據(jù)權(quán)利要求1所述的方法,顯示部署所述代碼片段以從所述用戶設(shè)備調(diào)用所述遠(yuǎn) 程進(jìn)程的實(shí)時(shí)結(jié)果。7. 根據(jù)權(quán)利要求1所述的方法,其中接收所述遠(yuǎn)程進(jìn)程的選擇還包括接收用于生成所 述代碼片段的編程語(yǔ)言的選擇。8. -種用于至少一個(gè)虛擬代碼供應(yīng)商(VCP)中的遠(yuǎn)程進(jìn)程調(diào)用生成的方法,包括: 存儲(chǔ)用于由至少一個(gè)經(jīng)典服務(wù)組件(CSC)提供的至少一個(gè)遠(yuǎn)程進(jìn)程的進(jìn)程代碼; 分析與至少一個(gè)進(jìn)程對(duì)應(yīng)的所述進(jìn)程代碼; 基于與所述進(jìn)程代碼的至少一個(gè)相關(guān)聯(lián)的函數(shù)和其它參數(shù)的關(guān)系關(guān)聯(lián)所述進(jìn)程代碼 中的參數(shù); 將參數(shù)指定給進(jìn)程池中的需要所述參數(shù)的進(jìn)程; 將來(lái)自所述進(jìn)程池的每個(gè)進(jìn)程鏈接至虛擬化軟件開發(fā)包(SDK);以及 生成代碼片段以在使用所述虛擬化SDK調(diào)用來(lái)自所述進(jìn)程池的相關(guān)進(jìn)程時(shí)插入?yún)?shù)值 并執(zhí)行來(lái)自所述進(jìn)程池的所述相關(guān)進(jìn)程。9. 根據(jù)權(quán)利要求8所述的方法,其中生成的進(jìn)程代碼是所述至少一個(gè)CSC的本機(jī)編程語(yǔ) 言。10. 根據(jù)權(quán)利要求8所述的方法,其中基于關(guān)系進(jìn)行關(guān)聯(lián)還包括為所述進(jìn)程代碼中的參 數(shù)指定源。11. 根據(jù)權(quán)利要求8所述的方法,還包括從所述至少一個(gè)VCP的進(jìn)程池重新調(diào)用存儲(chǔ)的 遠(yuǎn)程進(jìn)程代碼以及將參數(shù)插入所述存儲(chǔ)的進(jìn)程代碼。12. 根據(jù)權(quán)利要求11所述的方法,還包括將所述進(jìn)程代碼部署到至少一個(gè)對(duì)應(yīng)的CSC。13. 根據(jù)權(quán)利要求11所述的方法,其中所述至少一個(gè)VCP將所述存儲(chǔ)的進(jìn)程代碼鏈接至 所述至少一個(gè)CSC的本機(jī)SDK和API。14. 根據(jù)權(quán)利要求8所述的方法,還包括接收對(duì)所述片段的請(qǐng)求,其中所述片段的編程 語(yǔ)言與用戶設(shè)備上的程序的編程語(yǔ)言相同。15. -種用于遠(yuǎn)程進(jìn)程調(diào)用生成的系統(tǒng),包括: a)至少一個(gè)處理器; b)至少一個(gè)輸入設(shè)備,耦接至至少一個(gè)網(wǎng)絡(luò);以及 C)至少一個(gè)存儲(chǔ)設(shè)備,存儲(chǔ)處理器可執(zhí)行指令,所述處理器可執(zhí)行指令在被所述至少 一個(gè)處理器執(zhí)行時(shí)執(zhí)行權(quán)利要求1至7中的任一項(xiàng)權(quán)利要求所述的方法。
【文檔編號(hào)】G06F9/44GK105849691SQ201480035186
【公開日】2016年8月10日
【申請(qǐng)日】2014年6月17日
【發(fā)明人】特里薩拉·坎達(dá)利亞, 吉恩-巴普蒂斯特·萊奧內(nèi)利
【申請(qǐng)人】西安姆貝拉有限公司