專利名稱:外殼會(huì)話的制作方法
外殼會(huì)話
背景
命令行解釋器或外殼處理器是與計(jì)算機(jī)系統(tǒng)交互的常用方式。命令輸入為 從鍵盤鍵入一序列字符(例如,文本和控制字符),于是便接收作為文本串的
輸出。這些序列通常采用"做某事(do something)"、"如何(how)"和"對(duì) 什么(towhat)"的形式。實(shí)際上,做某事是動(dòng)詞,如何是副詞(例如,該命 令應(yīng)被"冗長(zhǎng)地"或是"靜靜地"執(zhí)行),而對(duì)什么通常指的是命令作用于的 一個(gè)或多個(gè)文件。包括在命令序列內(nèi)的可以是其他字符,諸如對(duì)命令的輸入, 指示何處路由輸出的重定向字符,以及其他控制字符。
命令行界面是最先使用的交互界面。無(wú)論用戶圖形界面(GUI)有多先進(jìn), 命令行外殼仍然是至關(guān)重要的管理工具,因?yàn)橛脩裘钅軌虮惠p易批處理以自 動(dòng)執(zhí)行更為復(fù)雜的任務(wù)而無(wú)需用戶交互?,F(xiàn)代的操作系統(tǒng)支持多個(gè)命令行解釋 器,這些解釋器或是直接地或是在外殼中內(nèi)建的實(shí)體幫助下或被設(shè)計(jì)成與之交 互的程序幫助下允許用戶通過(guò)從鍵盤輸入命令并檢査文本輸出來(lái)與系統(tǒng)交互。 它們還允許代表用戶在批處理模式下執(zhí)行命令序列。
如上所述,歷史上這些外殼命令處理器是面向字符的。這意味著外殼命令 處理器接受來(lái)自用戶的逐字符輸入,等待指定字符(例如,"Carriagereturn"或 "Enter"(回車))來(lái)信令外殼應(yīng)該檢查該輸入并嘗試執(zhí)行。當(dāng)提供這一字符時(shí), 處理器解析輸入,確定是否為合法命令并開(kāi)始執(zhí)行。如果不是合法命令,則通 常返回錯(cuò)誤。如果是合法命令,則命令執(zhí)行并可生成其自身的字符輸出,而這 些輸出可由操作員檢查。
用戶使用的范例于是通常"open (打開(kāi))"外殼,把字符經(jīng)由鍵盤提供給 外殼,并且只要外殼接收回車鍵(或者取決于所用的語(yǔ)法的其他合適字符)作 為輸入,它就嘗試處理其至今為止作為一個(gè)單元接收到的所有字符。 一旦外殼 處理器執(zhí)行作為命令的每個(gè)單元,它隨后就報(bào)告輸出。如果遇到錯(cuò)誤輸入,處 理器可以將包括出錯(cuò)消息的一組字符返回給用戶。于是重復(fù)該循環(huán)直到用戶通
過(guò)終止外殼處理器或退出程序來(lái)"close (關(guān)閉)"該外殼處理器。
隨著計(jì)算機(jī)開(kāi)始連接至網(wǎng)絡(luò),它就需要具有遠(yuǎn)程執(zhí)行這類命令的能力。因 此開(kāi)發(fā)出多個(gè)周知的遠(yuǎn)程外殼協(xié)議(例如,Telnet、 Secure Telnet、 Secure Shell 等),這些協(xié)議仍然在逐字符的基礎(chǔ)上起作用,好像鍵盤是遠(yuǎn)程而非命令處理 器是遠(yuǎn)程的一樣。 一旦打開(kāi)外殼,字符就來(lái)回流動(dòng)并且外殼協(xié)議實(shí)質(zhì)上不知曉 命令何時(shí)被執(zhí)行甚至是否有任何命令曾被執(zhí)行。換句話說(shuō),協(xié)議簡(jiǎn)單地將輸入 和輸出字符來(lái)回傳遞。雖然這允許操作者在一處而依靠另一處的計(jì)算機(jī)執(zhí)行命 令,但是這類技術(shù)存在多個(gè)效率、互操作性和其他問(wèn)題。
例如,雖然一些命令要求輸入流處理,但是存在這一逐字符方法導(dǎo)致不正 確行為的情況。舉例來(lái)說(shuō),失敗場(chǎng)景中精確的字符序列會(huì)被命令或外殼處理器 忽略。在此情況下,輸入流會(huì)被誤認(rèn)為下一命令,或者下一命令會(huì)被誤認(rèn)為是 前一命令的輸入。例如,假設(shè)一條其中的輸入是文件的命令。如果在來(lái)自文件 的輸入字符之前沒(méi)有接收到用于執(zhí)行該命令的返回字符(例如,"Enter (回 車)"),那么該文件內(nèi)的一個(gè)輸入字符(即,返回字符)會(huì)被誤認(rèn)為是執(zhí)行 命令。
類似的,即使沒(méi)有錯(cuò)誤狀態(tài)(例如,在上述示例中在輸入字符之前接收到 返回字符),也存在輸入字符被錯(cuò)認(rèn)為其他命令和/或當(dāng)前執(zhí)行命令的控制的情 況。換句話說(shuō),因?yàn)橹鹱址斎霙](méi)有必要與逐字符命令和控制流分開(kāi),所以帶 有與命令或控制串相類似的字符串的輸入可能會(huì)被誤認(rèn)為是這類函數(shù)。例如, 如果正對(duì)其中一個(gè)字符串與終止命令序列(例如,Ctrl八X、 CtrrC等)相同的 輸入執(zhí)行命令,則處理可能會(huì)錯(cuò)誤地停止。當(dāng)然,取決于錯(cuò)誤輸入的字符串, 其他命令或控制操作可能會(huì)引起更有問(wèn)題的響應(yīng),諸如文件的重定位或重命 名、文件的刪除或移除、整個(gè)系統(tǒng)的關(guān)機(jī)或者其他有害操作。
此外,有關(guān)當(dāng)前逐字符協(xié)議遠(yuǎn)程操作外殼過(guò)程的其他問(wèn)題包括(1)無(wú)法 在命令處理過(guò)程早期識(shí)別錯(cuò)誤;以及(2)這些系統(tǒng)通常不是平臺(tái)或語(yǔ)言不可知 的。更具體地,因?yàn)榭蛻魴C(jī)簡(jiǎn)單地作為鍵盤的擴(kuò)展,所以這些客戶機(jī)通常不知 道命令是否合法、命令是否和何時(shí)被執(zhí)行、和/或外殼過(guò)程使用什么類型的操作 系統(tǒng)或句法。因而,錯(cuò)誤的命令或輸入就被發(fā)送到網(wǎng)絡(luò)線路上,并且無(wú)法在處 理周期早期被認(rèn)出。此外,用戶需要基于在遠(yuǎn)程外殼處利用的特定協(xié)議類型(例
如,UNIX外殼、SSH等)知曉并調(diào)整字符使用。因此,當(dāng)前命令行外殼協(xié)議 的上述和其他缺點(diǎn)和不足引起了效率、互操作性和其他各種問(wèn)題。
簡(jiǎn)要概述
上述標(biāo)識(shí)的當(dāng)前遠(yuǎn)程命令行機(jī)制的缺陷和不足通過(guò)本發(fā)明的示例性實(shí)施 例得以克服。例如,本文描述的實(shí)施例通過(guò)提供消息內(nèi)的綁定機(jī)制而非二進(jìn)制 或面向字符的數(shù)據(jù)流來(lái)建立命令行外殼處理會(huì)話。注意到提供本概述以便用簡(jiǎn) 化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述不旨在標(biāo)識(shí) 所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù) 的主題的范圍。
在用于執(zhí)行命令行的遠(yuǎn)程計(jì)算系統(tǒng)處并且根據(jù)一個(gè)示例性實(shí)施例,接收請(qǐng) 求消息以打開(kāi)遠(yuǎn)程命令行處理器處的外殼。隨后提供綁定機(jī)制用以將命令傳送 至外殼以供執(zhí)行。其后,接收?qǐng)?zhí)行請(qǐng)求消息以執(zhí)行命令,其中該執(zhí)行請(qǐng)求消息 包括單元形式的命令以及綁定機(jī)制。
在網(wǎng)絡(luò)計(jì)算環(huán)境中客戶機(jī)設(shè)備處的類似示例性實(shí)施例通過(guò)使用將一系列
命令綁定至遠(yuǎn)程外殼的綁定機(jī)制用消息而非二進(jìn)制數(shù)據(jù)流來(lái)建立針對(duì)各命令 的遠(yuǎn)程處理會(huì)話。在一個(gè)實(shí)施例中,發(fā)送請(qǐng)求消息以打開(kāi)遠(yuǎn)程命令行處理器處 的外殼。其后,接收綁定機(jī)制用以將命令傳送至外殼以供執(zhí)行。此外,發(fā)送執(zhí) 行請(qǐng)求消息以執(zhí)行命令,其中該執(zhí)行請(qǐng)求消息包括單元形式的命令以及綁定機(jī) 制。
本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其部分根據(jù)本描述將是 顯而易見(jiàn)的,或可通過(guò)對(duì)本發(fā)明的實(shí)踐領(lǐng)會(huì)。本發(fā)明的特征和優(yōu)點(diǎn)可通過(guò)在所 附權(quán)利要求書(shū)中特別指出的工具和組合來(lái)實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特 征將通過(guò)以下描述和所附權(quán)利要求書(shū)變得更加完全明顯,或可通過(guò)對(duì)下文中所 述的本發(fā)明的實(shí)踐來(lái)領(lǐng)會(huì)。
附圖簡(jiǎn)述
為了描述可獲取本發(fā)明的上述和其他優(yōu)點(diǎn)和特征的方式,將通過(guò)引用附圖 中示出的本發(fā)明的特定實(shí)施例來(lái)呈現(xiàn)以上簡(jiǎn)要描述的本發(fā)明的更具體描述???br>
以理解這些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對(duì)其范圍的限 制,本發(fā)明將通過(guò)使用附圖用附加特征和細(xì)節(jié)來(lái)描述和說(shuō)明,附圖中
圖1示出了根據(jù)本發(fā)明示例性實(shí)施例的利用消息協(xié)議處理程序進(jìn)行遠(yuǎn)程 命令行外殼處理的網(wǎng)絡(luò);
圖IB示出了根據(jù)本發(fā)明示例性實(shí)施例的用以建立命令會(huì)話的打開(kāi)消息和 返回外殼標(biāo)識(shí)符的使用。
圖1C示出了根據(jù)本發(fā)明示例性實(shí)施例使用消息發(fā)送命令單元給外殼處理 器以供執(zhí)行。
圖ID示出了根據(jù)本發(fā)明示例性實(shí)施例流傳送針對(duì)執(zhí)行命令的輸出。 圖1E示出了根據(jù)本發(fā)明示例性實(shí)施例的輸入流消息與命令消息的分隔。 圖IF示出了根據(jù)本發(fā)明示例性實(shí)施例的用于發(fā)送針對(duì)外殼會(huì)話的控制操
作的消息的使用。
圖1G示出了根據(jù)本發(fā)明示例性實(shí)施例用于終止命令會(huì)話的關(guān)閉消息的使 用;以及
圖2示出了根據(jù)示例性實(shí)施例用于在遠(yuǎn)程外殼處執(zhí)行命令行的協(xié)議的流 程圖。
詳細(xì)描述
本發(fā)明涉及方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品用于(1)將命令作為結(jié)構(gòu)化的 原子單元進(jìn)行遞送而非面向字符的傳輸;(2)將外殼生存期建模為一系列命令;
(3) 將改變外殼操作流的異步控制信號(hào)建模為特定類型的消息而非字符;以及
(4) 將客戶機(jī)和遠(yuǎn)程外殼之間的數(shù)據(jù)交換建模為專用的輸入和輸出消息流,也
就是不將命令和輸入/輸出流加以混合。本發(fā)明的實(shí)施例可以包括含有各種計(jì)算 機(jī)硬件或模塊的專用或通用計(jì)算機(jī),這將在以下做出進(jìn)一步討論。
本文描述的實(shí)施例基于外殼按字符單元執(zhí)行命令這一原則。因此,本文描 述的各實(shí)施例為發(fā)送方提供足夠的智能,用以隔離每個(gè)命令,執(zhí)行每個(gè)命令, 進(jìn)行一些級(jí)別的確認(rèn),并在進(jìn)行任何網(wǎng)絡(luò)操作之前將命令的結(jié)構(gòu)化表示遞送給 遠(yuǎn)程處理器。更具體地,本文描述的實(shí)施例提供一種標(biāo)識(shí)命令并將命令密封入
單個(gè)消息(例如,SOAP、 HTTPS或其他類型消息)的機(jī)制,該消息隨后就被
發(fā)送至遠(yuǎn)程外殼以便作為整個(gè)單元得到處理。因此,本文描述的實(shí)施例將命令 看作是單個(gè)單元而非面向字符的傳輸。
其它實(shí)施例還考慮用戶輸入(如果有的話)是用于運(yùn)行命令的附加信息, 但是這些輸入具有不同于命令本身的語(yǔ)義。因此,本文描述的實(shí)施例將這些用 戶提供的數(shù)據(jù)看作是一個(gè)或多個(gè)輸入流。類似地,各實(shí)施例還考慮命令發(fā)出正 常輸出和狀態(tài)或者出錯(cuò)代碼這兩種情況。因此,各實(shí)施例可將這些數(shù)據(jù)看作是 輸出流。因?yàn)橐粭l命令的輸出可能連鎖式地成為下一條命令的輸入,所以在這 里描述用于設(shè)計(jì)輸入和輸出流兩者并保持它們與命令本身分開(kāi)的正式機(jī)制。
描述將命令與流分開(kāi)并去除面向字符傳輸?shù)倪@一兩部分模型的上述和其 他實(shí)施例具有若干優(yōu)點(diǎn)。首先,網(wǎng)絡(luò)使用更為有效。由于網(wǎng)括傳輸?shù)淖钚挝?通常是512八位位組或以上,因此在面向字符的協(xié)議中,匯編命令中涉及的每 個(gè)字符可以要求一個(gè)完整的網(wǎng)絡(luò)分組。在本文描述的模型中,在執(zhí)行命令時(shí)實(shí) 際上只有一條消息被遞送。
命令的安全性和正確性也得到改善,因?yàn)槊钍歉綦x的單元于是可以在嘗 試執(zhí)行它之前檢査其完整性并針對(duì)訪問(wèn)和有效性控制列表進(jìn)行檢驗(yàn)。換句話 說(shuō),可以在網(wǎng)絡(luò)的發(fā)送方執(zhí)行某一級(jí)別的安全性和有效性,這就能在處理循環(huán) 早期認(rèn)出差錯(cuò)。
此外,按單元隔離命令去除了命令是如何遞送至處理器的區(qū)別;于是就使 得系統(tǒng)平臺(tái)和語(yǔ)言不可知。例如,命令可以使用SOAP或在HTTP請(qǐng)求中編碼 以將其與不同操作系統(tǒng)中外殼處理器的下層差異分開(kāi)。另一方面,面向字符的
協(xié)議直接反映了操作系統(tǒng)的行為;因此要求用戶理解遠(yuǎn)程外殼使用的語(yǔ)言或句 法。
再一些實(shí)施例提供改變外殼操作流程的異步控制信號(hào)的某些指定情況。例 如,在用戶希望進(jìn)行中的命令早期終止的情況下, 一些類型的"控制-斷開(kāi)" 或其他字符串通常在命令外殼內(nèi)呈現(xiàn)。因此,本文描述的實(shí)施例將這一和其他 控制信號(hào)建模成專用消息,而非輸入流中的特定字符。
雖然如下將參考附圖對(duì)有利特征的更特定引用進(jìn)行更為詳盡的描述,但是 本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于載有或具有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié) 構(gòu)存儲(chǔ)其上的計(jì)算機(jī)可讀介質(zhì)。這樣的機(jī)器可讀介質(zhì)可以是可由通用或?qū)S糜?jì)
算機(jī)訪問(wèn)的任何可用介質(zhì)。作為示例而非限制,這樣的計(jì)算機(jī)可讀介質(zhì)可包括
RAM、 ROM、 EEPROM、 CD-ROM或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ) 設(shè)備、或可用于承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼 裝置且可由通用或?qū)S糜?jì)算機(jī)訪問(wèn)的任何其他介質(zhì)。當(dāng)信息在網(wǎng)絡(luò)或另一通信 連接(硬連線、無(wú)線或硬連線或無(wú)線的組合)上傳輸或提供給計(jì)算機(jī)時(shí),計(jì)算 機(jī)將連接完全視為計(jì)算機(jī)可讀介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì)算 機(jī)可讀介質(zhì)。以上的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
計(jì)算機(jī)可執(zhí)行指令例如包括,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè) 備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。盡管用對(duì)結(jié)構(gòu)特征和/或方法動(dòng)作專 用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書(shū)中定義的主題不必限于 上述具體特征或動(dòng)作。相反,上述具體特征和動(dòng)作作為實(shí)現(xiàn)權(quán)利要求的示例形 式公開(kāi)的。
如此處所使用的,術(shù)語(yǔ)"模塊"或"組件"可指的是在計(jì)算系統(tǒng)上執(zhí)行的 軟件對(duì)象或例程。此處描述的不同的組件、模塊、引擎和服務(wù)可被實(shí)現(xiàn)為在計(jì) 算系統(tǒng)上執(zhí)行的對(duì)象或進(jìn)程(例如,作為分開(kāi)的線程)。盡管此處描述的系統(tǒng) 和方法可用軟件較佳地實(shí)現(xiàn),但用硬件或軟件和硬件的組合的實(shí)現(xiàn)也是可能的 且已被想到。在此描述中,"計(jì)算實(shí)體"可以是如上文定義的任何計(jì)算系統(tǒng), 或者在計(jì)算系統(tǒng)上運(yùn)行的任何模塊或模塊的組合。
圖1示出了根據(jù)本發(fā)明示例性實(shí)施例被配置為利用處理遠(yuǎn)程命令行的消 息協(xié)議處理程序的網(wǎng)絡(luò)。如圖所示,客戶機(jī)105包括命令行界面115,以允許 用戶使用鍵盤或其他類似接口輸入命令。根據(jù)本發(fā)明的示例性實(shí)施例,這類命 令隨后可由消息協(xié)議處理程序125進(jìn)行評(píng)估和處理。換句話說(shuō),消息協(xié)議處理 程序125定義一種能夠隔離命令、檢査命令、并進(jìn)行各種級(jí)別的有效性和其他 操作的解釋機(jī)制,如下將對(duì)其進(jìn)行更為詳盡的描述。這些命令隨后被密封到消 息內(nèi)(例如,SOAP、 HTTP等)并跨網(wǎng)絡(luò)100傳遞至遠(yuǎn)程110方,其中消息 協(xié)議處理程序130處理該消息并將命令傳遞給命令行外殼處理器120以供進(jìn)一 步處理。
注意消息協(xié)議處理程序125的使用允許以平臺(tái)和語(yǔ)言不可知的方式來(lái)處 理命令。更具體地,在客戶機(jī)105方上的消息協(xié)議處理程序125被配置為獨(dú)立于命令使用的特定語(yǔ)法類型而將命令密封入消息。類似地,遠(yuǎn)程iio方上的消 息協(xié)議處理程序130能夠獨(dú)立于外殼處理器120的語(yǔ)法對(duì)命令寫入進(jìn)行評(píng)估, 但允許外殼處理器120處理命令,無(wú)論使用的操作系統(tǒng)或?qū)崿F(xiàn)的特定語(yǔ)言是何 類型。換句話說(shuō),消息協(xié)議處理程序125、 130將命令變換成并將命令從消息 本身內(nèi)定義的獨(dú)立形式進(jìn)行轉(zhuǎn)換。
換句話說(shuō),這些實(shí)施例的一個(gè)方面是遠(yuǎn)程處理器120的平臺(tái)指定性質(zhì)被隱 藏在消息模型之下,這些性質(zhì)是跨平臺(tái)邊界統(tǒng)一的。通過(guò)建模外殼生存期(如 下詳述)以及消息(例如,SOAP)下的命令執(zhí)行,外殼120處理器中的實(shí)質(zhì) 且惱人的差別就被隱藏。
注意到雖然如下各實(shí)施例可被描述為利用上述處理程序125、 130用來(lái)以 平臺(tái)和語(yǔ)言不可知的方式提供命令,但是這些轉(zhuǎn)換對(duì)利用這些實(shí)施例不是必須 的。此外還應(yīng)注意到,雖然本文描述的實(shí)施例通常在網(wǎng)絡(luò)環(huán)境中的客戶機(jī)和遠(yuǎn) 程外殼處理器之間實(shí)現(xiàn),但是某些實(shí)施例也可應(yīng)用于本地機(jī)器。同時(shí)還應(yīng)注意 本文描述的用于執(zhí)行并建模實(shí)施例的任何數(shù)量的模塊和配置也被記及。因此, 用于實(shí)現(xiàn)本文描述實(shí)施例的任何特定編碼格式、語(yǔ)言語(yǔ)法或操作系統(tǒng)、設(shè)計(jì)布 局的任何具體使用,或者遠(yuǎn)程或其他特定外殼模塊的使用僅出于示例性目的, 并且除非另行指出,不是旨在限制或以其他方式縮小本文描述的各實(shí)施例的范 圍。
除了使用的圖1B所示計(jì)算系統(tǒng)類型之外,當(dāng)客戶機(jī)105想要打開(kāi)外殼120 以處理命令時(shí),各實(shí)施例允許發(fā)出結(jié)構(gòu)化的打開(kāi)外殼消息135,該消息直接建 模打開(kāi)命令外殼處理器這一概念。因此,這一實(shí)施例模仿在操作系統(tǒng)環(huán)境中本 地打開(kāi)"命令窗口"的動(dòng)作。消息135隨后可被遞送至遠(yuǎn)程機(jī)器110,于是機(jī) 器110本地打開(kāi)"真實(shí)的"外殼120并將其輸入和輸出附至遠(yuǎn)程會(huì)話。這一初 始消息135通常是針對(duì)外殼120環(huán)境變量、默認(rèn)目錄(未示出)和其他的初始 化(例如,覆蓋默認(rèn)變量、添加新變量以控制命令行為等)可被執(zhí)行的地方。
注意到在本文描述的這一和其他實(shí)施例中,由外殼處理器120執(zhí)行的處理 可以是模仿這類處理的實(shí)際實(shí)現(xiàn)的虛擬處理。換句話說(shuō),發(fā)生的各操作可以看 上去發(fā)生在特定外殼處理器120處,然而其他模塊或組件模仿處理命令或?qū)崿F(xiàn) 信號(hào)控制的這類行為,這將在如下詳述。因此,如本文描述并要求保護(hù)的對(duì)外
殼處理器120或其行為的任何引用應(yīng)該被廣義地解釋為包括代表著或類似于實(shí) 際外殼處理器迸行動(dòng)作的虛擬機(jī)。
在外殼處理器120方上(例如,在服務(wù)器方實(shí)現(xiàn)上),打開(kāi)外殼響應(yīng)消息
140可以被發(fā)送回客戶機(jī)105以確認(rèn)外殼120的打開(kāi)。注意到在一個(gè)實(shí)施例中, 標(biāo)識(shí)符142或令牌可以被附至消息140,用以標(biāo)識(shí)外殼120 (例如,在本例中 示出的外殼ID-123)。因此,綁定機(jī)制142 (即,標(biāo)識(shí)符142或外殼令牌)的 使用可以如下將詳述的那樣貫穿用于會(huì)話生存期始終。注意到這將允許將外殼 處理器120會(huì)話(其生存期)建模為一系列命令而非一系列字符。此外還應(yīng)注 意到,這一機(jī)制還允許打開(kāi)若干外殼120會(huì)話,藉此允許同時(shí)處理多個(gè)命令系 列。此外,注意到因?yàn)橛糜谕鈿?huì)話的綁定機(jī)制(即,標(biāo)識(shí)符142或外殼令牌) 在消息內(nèi)發(fā)送,所以與當(dāng)前外殼會(huì)話的二進(jìn)制或逐字符建立相關(guān)聯(lián)的問(wèn)題就得 以克服。
然而,應(yīng)該注意到本文描述的一些實(shí)施例并不一定需要本文描述的會(huì)話綁 定142機(jī)制或建模。例如,如果僅建立的單個(gè)會(huì)話或外殼處理器120,就可以 不需要使用外殼ID 142或令牌。因此,本文中使用外殼標(biāo)識(shí)符或令牌來(lái)建立 會(huì)話僅出于示例性目的,并且除非另行指出,不是旨在限制本文描述的各實(shí)施 例的范圍。
無(wú)論外殼標(biāo)識(shí)符142是否用于創(chuàng)建或建立會(huì)話,如提供何時(shí)發(fā)出命令至命 令外殼處理器120的圖1C實(shí)施例所示,客戶機(jī)105應(yīng)用程序可以在發(fā)送方上 組成完整的命令行單元147,該單元包括例如命令名、其開(kāi)關(guān)、以及其他成功 執(zhí)行必須的信息。換句話說(shuō),如前所述,本文的實(shí)施例標(biāo)識(shí)命令147、檢查命 令147、對(duì)其執(zhí)行一定的有效性和其他高級(jí)處理(例如,與訪問(wèn)或有效性控制 列表相比較),并將命令147單元密封入執(zhí)行命令消息145以將命令147發(fā)送 至外殼處理器120以供處理。因此,本文的實(shí)施例使用面向消息的協(xié)議將命令 147作為結(jié)構(gòu)化的原子單元遞送,這與現(xiàn)有的依賴于面向字符的傳輸模型的命 令外殼協(xié)議實(shí)現(xiàn)相反。
注意到在此示出的命令是單個(gè)"copy (復(fù)制)"命令;因此,其他類型的 命令甚至是命令組合也可包括在該消息內(nèi)。例如,執(zhí)行命令消息145可以包括 一個(gè)命令的輸出輸送到其他命令輸入的多個(gè)命令147。但通常在單個(gè)消息內(nèi)僅
包括一條命令。無(wú)論消息145內(nèi)是包括一條還是多條命令,命令都應(yīng)被表達(dá)為
一整個(gè)單元,即不應(yīng)該僅包括命令147的部分表達(dá)式。因此,本文描述的消息 145內(nèi)的任何特定類型或數(shù)量的命令147僅出于示例性的目的并且不應(yīng)該限制 或以其他方式縮小各實(shí)施例的范圍,除非另行指出。
此外,還應(yīng)注意執(zhí)行命令消息145 (以及本文描述的其他消息)可以是任 何類型的已知格式,例如HTML (超文本標(biāo)示語(yǔ)言)、XML (可擴(kuò)展標(biāo)示語(yǔ) 言)等。此外,命令147 (或本文描述的其他元素)可以位于消息的任何位置, 例如首部、正文或其他字段。還應(yīng)注意到在使用標(biāo)識(shí)符或令牌142建立會(huì)話或 外殼生存期的情況下,執(zhí)行命令消息145還應(yīng)該包括令牌142用以標(biāo)識(shí)哪個(gè)外 殼120應(yīng)該執(zhí)行這一操作。
響應(yīng)于執(zhí)行命令消息145,通常外殼處理器120將發(fā)出一個(gè)執(zhí)行響應(yīng)消息 150。注意到執(zhí)行響應(yīng)消息150可以是消息輸出的一部分,這將在如下詳述。 例如,執(zhí)行響應(yīng)消息150可以簡(jiǎn)單地是狀態(tài)碼、出錯(cuò)或者指示命令147是否已 被執(zhí)行的其他確認(rèn)消息。還應(yīng)注意到執(zhí)行響應(yīng)150可以包括可用于諸如標(biāo)識(shí)或 綁定特定輸入和輸出至命令147等的命令標(biāo)識(shí)符或令牌152 (在本例中示出為 命令03=456),這將在如下詳述。
然而注意到,類似于外殼標(biāo)識(shí)符,命令令牌152在本文描述的一些實(shí)施例 中不是必須的。例如,如果多個(gè)命令147沒(méi)有在會(huì)話中執(zhí)行和/或如果沒(méi)有輸入 /輸出生成,就不需要這一命令標(biāo)識(shí)符152。還應(yīng)注意到,執(zhí)行響應(yīng)150可以按 需并如前所述包括或不包括外殼標(biāo)識(shí)符142。
此外,如圖1D所示,客戶機(jī)105應(yīng)該開(kāi)始提取由執(zhí)行命令147生成的任 何輸出160,因?yàn)榇蟛糠置顚l(fā)出輸出并在最后發(fā)出某種最終狀態(tài)(例如, 狀態(tài)碼、出錯(cuò)碼或者其他在前提及的確認(rèn)消息)。根據(jù)一個(gè)實(shí)施例,這一過(guò)程 如圖所示以循環(huán)出現(xiàn),其中一個(gè)或多個(gè)輸出流160 (例如,標(biāo)準(zhǔn)輸出流、標(biāo)準(zhǔn) 出錯(cuò)流或其他輸出流)由客戶機(jī)105接收并且使用讀輸出消息155確認(rèn)。
典型地,客戶機(jī)105繼續(xù)重復(fù)上述循環(huán)直到命令147執(zhí)行發(fā)出的任何流(例 如,流"A" 、 "B" 、 "C")不再有輸出160。在一個(gè)實(shí)施例中,由命令147 發(fā)出的每個(gè)流(例如,流"A" 、 "B" 、 "C")的輸出160可以在消息塊 160中隔開(kāi)。在某些地方會(huì)存在有諸如流"C"中所示的流結(jié)尾標(biāo)記,這意味著
客戶機(jī)105不再為該流輸出((注意流結(jié)尾標(biāo)記可用來(lái)指示輸出內(nèi)所有流的結(jié) 尾和/或這些流或可任選項(xiàng)使得在命令終止,例如在響應(yīng)中返回退出代碼的情
況下可以暗示流的結(jié)束)。最終,命令147處理涉及的所有流都將發(fā)出流結(jié)尾 標(biāo)記,并且流結(jié)尾標(biāo)記將出現(xiàn)在響應(yīng)消息160中。還應(yīng)注意到,那些實(shí)施例允 許配置可輸出至客戶機(jī)105的流類型,例如將流"A"設(shè)置為真,同時(shí)將流"B" 設(shè)置為假。
一旦命令147隨著其所有輸出160的發(fā)出而終止,客戶機(jī)105就可如上所 述發(fā)出另一條命令147。然而,如前所述,某些實(shí)施例還允許一條以上的命令 147同時(shí)依靠同一外殼120例示執(zhí)行,或者在某些情況下依靠多個(gè)外殼120會(huì) 話執(zhí)行。
注意到代替發(fā)送每個(gè)輸出字符的多次往返,輸出160是以字符組塊而被檢 索的。因此,給定響應(yīng)160針對(duì)一個(gè)或多個(gè)流可以具有大量數(shù)據(jù),這與典型的 命令外殼協(xié)議的面向字符傳輸相反。于是,輸出160就被更有效地接收并處理 以供顯示和其他使用。還應(yīng)注意到如前所述,通常在需要時(shí),輸出消息160應(yīng) 該包括外殼和/或命令標(biāo)識(shí)符142、 152。在這類示例中,客戶機(jī)105可以正接 收,而外殼處理器120可以正生成多個(gè)外殼120會(huì)話中多個(gè)命令147執(zhí)行的多 個(gè)輸出。此外,正如以下將更詳細(xì)描述的,這類輸出160流可以基于各種考慮 和相關(guān)接收到的輸入而被動(dòng)態(tài)調(diào)整其生成和發(fā)送速率。
如前所述, 一些命令147也可要求輸入。在這一示例中,如圖1E所示, 本文的實(shí)施例允許在將命令執(zhí)行消息145 (因而和命令147)發(fā)送至外殼處理 器120之后將輸入流165 "饋送給"命令147 (然而應(yīng)注意, 一些實(shí)施例在命 令和輸入仍然保持分開(kāi)而可標(biāo)識(shí)的情況下,例如命令在首部而輸入在正文中的 SOAP消息的情況下,允許也將輸入包括在命令執(zhí)行消息147內(nèi))。在使用命 令標(biāo)識(shí)符或令牌152的情況下,輸入通常將在命令I(lǐng)D 152已知之后被發(fā)送。 同樣地,在使用外殼標(biāo)識(shí)符142的情況下,這一標(biāo)識(shí)符142應(yīng)該被包括在輸入 165內(nèi)以標(biāo)識(shí)合適的外殼120會(huì)話。類似于上述輸出流160,輸入流165以循 環(huán)類型的方式出現(xiàn),直到在任何流(例如,流"A" 、 "B" 、 "C")上都沒(méi) 有輸入數(shù)據(jù)饋送給命令147。換句話說(shuō),客戶機(jī)105接收到針對(duì)那些寫輸入消 息165內(nèi)的輸入數(shù)據(jù)流被成功遞送給外殼處理器120的確認(rèn)消息170,并且客
戶機(jī)105繼續(xù)將輸入165流傳送至外殼處理器120,直到所有的輸入被確認(rèn)170 為已接收。還應(yīng)注意到,那些實(shí)施例允許配置可被輸入的流類型,例如將流"A" 設(shè)置為真,同時(shí)將流"B設(shè)置為假。"
注意到類似于輸出流160,并非以逐字符的基礎(chǔ)傳送各輸入,輸入是按字 符組塊發(fā)送的。因此,給定寫輸入消息165針對(duì)一個(gè)或多個(gè)流可以具有大量數(shù) 據(jù),這與典型的命令外殼協(xié)議的面向字符傳輸相反。于是,輸入被更有效地接 收并處理。還應(yīng)注意到如前所述,在需要時(shí),輸入消息165應(yīng)該包括外殼和/ 或命令標(biāo)識(shí)符142、 152。在這一情況下,外殼處理器120可以正處理多個(gè)外殼 120會(huì)話中多個(gè)命令147的多個(gè)輸入。
其他實(shí)施例允許處理異步和同步出現(xiàn)的輸入165以如上關(guān)于讀輸出消息 155所述提取輸出160。因此,因?yàn)橐恍┟?47可以按比它們生成輸出160 更快/更慢的速率來(lái)要求輸入165,所以本文中的實(shí)施例可以由此靜態(tài)地或動(dòng)態(tài) 地調(diào)整輸入/輸出速率。換句話說(shuō),輸入165和輸出160消息流程之間可能存在 阻抗失配。此外,流程可以基于任何數(shù)量的問(wèn)題,諸如超時(shí)問(wèn)題、帶寬問(wèn)題、 優(yōu)選流等而被靜態(tài)或動(dòng)態(tài)調(diào)整。此外,或輸入165或輸出160的流可以基于提 示消息、配置設(shè)置或者任何其他周知機(jī)制而被調(diào)節(jié)。
其他又一些實(shí)施例允許使用特定消息來(lái)異步控制或改變外殼120操作流 程的流程。例如,如圖1F所示,信號(hào)消息175可用于終止、暫停、恢復(fù)或以 其他方式修改命令的執(zhí)行。換句話說(shuō),如果用戶希望改變命令147的執(zhí)行狀態(tài), 客戶機(jī)105能夠創(chuàng)建信號(hào)消息175并將這一消息發(fā)送給外殼處理器120,于是 外殼處理器120就可以按需采取合適動(dòng)作。注意到通過(guò)將控制或信號(hào)命令建模 為離散消息175 (以及本文中其他建模和描述的實(shí)施例),這些命令就不會(huì)像 先前描述的使用逐字符傳輸?shù)膮f(xié)議那樣被錯(cuò)誤地執(zhí)行。
類似于本文描述的其他過(guò)程,信號(hào)響應(yīng)消息180可以返回客戶機(jī)以指示命 令147的狀態(tài)。注意到這類響應(yīng)消息180可以是基于諸如命令147的狀態(tài)、期 望的修改或改變類型(例如,這些修改是否合法)等的出錯(cuò)或其他類型的確認(rèn) 消息180。還應(yīng)注意到在使用命令和/或會(huì)話標(biāo)識(shí)符142、 152的情況下,信號(hào) 消息175和響應(yīng)152通常應(yīng)該包括用于正確處理的合適令牌。還應(yīng)注意到,信 號(hào)標(biāo)識(shí)符(以及本文描述的其他標(biāo)識(shí)符)可以包括在消息的任何部分內(nèi),可以
作為代碼出現(xiàn),可以是特定字段內(nèi)的標(biāo)志,或者可以按其他類似的周知方式標(biāo) 識(shí)。
當(dāng)客戶機(jī)105不再需要外殼120時(shí),實(shí)施例還允許通過(guò)發(fā)送如圖1G所示 的關(guān)閉外殼消息185來(lái)關(guān)閉外殼。如果會(huì)話被如前所述那樣建立,則關(guān)閉外殼 消息185應(yīng)該包括外殼標(biāo)識(shí)符142 (示出為外殼ID-123)。無(wú)論如何,當(dāng)外殼 處理器120接收到關(guān)閉外殼的請(qǐng)求185時(shí),外殼會(huì)話120將終止并且當(dāng)然在假 定沒(méi)有錯(cuò)誤出現(xiàn)的情況下,將合適的狀態(tài)或關(guān)閉外殼響應(yīng)190返回給客戶機(jī) 105。
注意到在上述實(shí)施例中,標(biāo)識(shí)的消息各部分可以使用任何周知的統(tǒng)一資源 標(biāo)識(shí)符(uri)表示。例如,命令147、打開(kāi)/關(guān)閉會(huì)話、外殼標(biāo)識(shí)符142、命令 令牌152、信號(hào)標(biāo)識(shí)符(例如,終止、暫停、恢復(fù)等)和消息的其他部分可以 使用任何周知uri進(jìn)行標(biāo)識(shí)。因此,這一實(shí)施例允許從在外殼過(guò)程中執(zhí)行命令 行使用的任何指定平臺(tái)或語(yǔ)法中的另 一層提取。
本發(fā)明還被描述成包括功能性步驟和/或非功能性動(dòng)作的方法。下文是可 被執(zhí)行以實(shí)踐本發(fā)明的步驟和/或動(dòng)作的描述。通常,功能性步驟描述本發(fā)明可 以實(shí)現(xiàn)的結(jié)果,而非功能性動(dòng)作描述實(shí)現(xiàn)特定結(jié)果的更為專用的動(dòng)作。雖然功 能性步驟和/或非功能性動(dòng)作可以按特定次序描述或聲明,但是本發(fā)明沒(méi)有必須 受限于任何特定的次序或者是步驟和/或動(dòng)作的組合。此外,在權(quán)利要求的陳述 中使用步驟和/或動(dòng)作以指示這些術(shù)語(yǔ)的期望的特定使用。
圖2示出了用于本發(fā)明各示例性實(shí)施例的流程圖。以下對(duì)圖2的描述將不 時(shí)參考圖1A-G中的對(duì)應(yīng)元素。雖然可以做出對(duì)這些附圖中特定元素的參考, 但是這些參考只用于示例性目的而非旨在限制或以其他方式縮小所述實(shí)施例 的范圍,除非明確聲明。
圖2示出了根據(jù)示例性實(shí)施例用于在遠(yuǎn)程外殼處執(zhí)行命令行的協(xié)議的流 程圖。注意到圖2的流程圖包括對(duì)依賴于諸如流程圖中深度以及流程圖的哪一 方,即客戶機(jī)210或命令行外殼處理器220正被描述的多種方法(例如,200、 205)。因此,以下對(duì)流程圖的描述并非意味著指向任何特定方法,而是用于 大致描述執(zhí)行如下一項(xiàng)或多項(xiàng)的實(shí)施例(1)將命令作為結(jié)構(gòu)化的原子單元進(jìn) 行遞送而非面向字符的傳輸;(2)將外殼生存期建模為一系列命令;(3)將改
變外殼操作流的異步控制信號(hào)建模為指定類型的消息而非字符;以及(4)將客
戶機(jī)和遠(yuǎn)程外殼之間的數(shù)據(jù)交換建模為專用的輸入和輸出消息流,也就是不將 命令和輸入/輸出流加以混合。
實(shí)施例用于發(fā)送/接收215/225請(qǐng)求以打開(kāi)外殼。例如,客戶機(jī)105可以發(fā) 送打開(kāi)外殼請(qǐng)求消息135至外殼處理器120。在如上所述會(huì)話應(yīng)被建立的情況 下,實(shí)施例也可用于發(fā)送/接收235/230外殼標(biāo)識(shí)符。更具體地, 一旦接收到打 開(kāi)外殼消息135,外殼處理器將如前所述發(fā)送包括外殼令牌或標(biāo)識(shí)符142的打 開(kāi)外殼響應(yīng)140。其后,客戶機(jī)方210標(biāo)識(shí)240要由命令行外殼處理器220遠(yuǎn) 程執(zhí)行的命令,并將該命令附至245 —消息。例如,客戶機(jī)105可以標(biāo)識(shí)命令 147并將其包括在執(zhí)行命令消息145中以發(fā)送至通常遠(yuǎn)離客戶機(jī)105的外殼處 理器120。注意到在其中建立外殼會(huì)話的情況下,執(zhí)行命令消息145還應(yīng)該包 括外殼標(biāo)識(shí)符142。
命令行處理器方220接收225消息145,并在隨后標(biāo)識(shí)260命令147以供 執(zhí)行。其后,在使用命令標(biāo)識(shí)符的情況下,外殼處理器120可以將這一標(biāo)識(shí)符 142發(fā)送265至客戶機(jī)105,客戶機(jī)105接收270標(biāo)識(shí)符142用于如上所述發(fā) 送輸入或以其他方式控制命令147的執(zhí)行。如上所述根據(jù)示例性實(shí)施例可以需 要也可以不需要命令標(biāo)識(shí)符152,而這取決于諸如是否允許在單個(gè)會(huì)話中的多 個(gè)命令147、是否需要輸入/輸出等。例如,如果用于執(zhí)行命令165的寫輸入165 是必須的,則命令標(biāo)識(shí)符152 (可能甚至是外殼標(biāo)識(shí)符142)可以包括在由外 殼處理器120發(fā)送/接收275/280的流傳送輸入165中。針對(duì)接收輸入的確認(rèn) 285 (例如,出錯(cuò)代碼等170)也應(yīng)被發(fā)送275,這樣處理循環(huán)直到所有的輸入 流165已被正確發(fā)送275至外殼處理器120或由其接收280。
一旦命令147和流輸入165 (如果有的話)已被適當(dāng)接收,命令行外殼處 理器方220就能夠適當(dāng)執(zhí)行290命令147。同樣地,輸出165可被發(fā)送295至 客戶機(jī)105或被其接收202,而適當(dāng)?shù)拇_認(rèn)則發(fā)送214至命令行外殼處理器220 方。類似于輸入流165,輸出循環(huán)應(yīng)該繼續(xù),直到所有輸出160都被客戶機(jī)105 接收或發(fā)送至客戶機(jī)105。
注意到如上所述,輸入265和輸出260流可以在客戶機(jī)105和外殼處理器 120之間被異步和同步發(fā)送/接收。此外,這一流程可以基于多種因素并按各種
方式進(jìn)行靜態(tài)或動(dòng)態(tài)調(diào)整。例如,該流程可以基于為特定命令147生成一定量 輸出160所需的輸入165的量,和/或基于帶寬或其他限制。此外,該流程可以 通過(guò)提示消息、控制設(shè)置或其他周知機(jī)制來(lái)控制。
一旦用戶完成會(huì)話,用以關(guān)閉外殼185的請(qǐng)求就可以被發(fā)送204給命令行 外殼處理器方220或由其接收208,并且確認(rèn)190被發(fā)送212給客戶機(jī)方210 以通知客戶機(jī)105該外殼120會(huì)話已經(jīng)結(jié)束。還應(yīng)注意到其他實(shí)施例允許分布 信號(hào)消息175 (例如,終止、暫停、恢復(fù)等)來(lái)改變命令147的狀態(tài)或處理。 如同本文描述的大多數(shù)其他消息一樣,這類控制消息175可以使用單個(gè)響應(yīng) 180來(lái)確認(rèn)(或提出出錯(cuò))。
本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例
在所有方面都應(yīng)被認(rèn)為僅是說(shuō)明性而非限制性的。從而,本發(fā)明的范圍由所附 權(quán)利要求書(shū)而非前述描述指示。落入權(quán)利要求書(shū)的等效方式的含義和范圍內(nèi)的 所有改變應(yīng)被權(quán)利要求書(shū)的范圍涵蓋。
權(quán)利要求
1. 在網(wǎng)絡(luò)計(jì)算環(huán)境中的遠(yuǎn)程設(shè)備處,一種通過(guò)在消息內(nèi)而非以二進(jìn)制數(shù)據(jù)流提供綁定機(jī)制從而將外殼與一系列命令綁定的建立命令行外殼處理會(huì)話的方法,所述方法包括接收請(qǐng)求消息以打開(kāi)遠(yuǎn)程命令行處理器處的外殼;提供綁定機(jī)制用以將命令傳送至所述外殼以供執(zhí)行;以及接收?qǐng)?zhí)行請(qǐng)求消息以執(zhí)行命令,其中所述執(zhí)行請(qǐng)求消息包括作為單元的命令以及所述綁定機(jī)制。
2. 如權(quán)利要求1所述的方法,其特征在于,所述綁定機(jī)制是外殼標(biāo)識(shí)符、 外殼令牌或兩者。
3. 如權(quán)利要求1所述的方法,其特征在于,響應(yīng)于所述接收到的執(zhí)行請(qǐng) 求消息,所述方法還包括-發(fā)送響應(yīng)消息,所述響應(yīng)消息包括用于標(biāo)識(shí)輸入、輸出或有關(guān)所述命令執(zhí) 行的其他信號(hào)消息的命令標(biāo)識(shí)符。
4. 如權(quán)利要求1所述的方法,其特征在于,所述響應(yīng)消息包括所述命令 執(zhí)行的狀態(tài)報(bào)告。
5. 如權(quán)利要求1所述的方法,其特征在于,所述命令要求輸入以供在所 述命令行外殼處理器處執(zhí)行,其中所述輸入作為與所述執(zhí)行消息分開(kāi)的一個(gè)或 多個(gè)數(shù)據(jù)流接收,并且其中所述輸入包括所述外殼和所述命令標(biāo)識(shí)符兩者。
6. 如權(quán)利要求1所述的方法,其特征在于,所述命令執(zhí)行生成輸出,并 且其中所述輸出作為包括所述外殼和所述命令標(biāo)識(shí)符兩者的一個(gè)或多個(gè)數(shù)據(jù)流被發(fā)送給客戶機(jī)。
7. 如權(quán)利要求1所述的方法,還包括接收包括所述外殼和所述命令標(biāo)識(shí)符的用以改變所述外殼操作流程的一 個(gè)或多個(gè)異步信號(hào)消息,使得所述命令執(zhí)行被終止、暫停、恢復(fù)、退出或延遲。
8. 如權(quán)利要求1所述的方法,其特征在于,所述命令請(qǐng)求輸入流并且所 述命令執(zhí)行生成輸出流,并且其中所述輸入流的流程速率相對(duì)于所述輸出流的 流程速率被動(dòng)態(tài)調(diào)整。
9. 在網(wǎng)絡(luò)計(jì)算環(huán)境中的客戶機(jī)設(shè)備處, 一種通過(guò)使用消息而非二進(jìn)制數(shù) 據(jù)流將一系列命令與遠(yuǎn)程外殼綁定的綁定機(jī)制來(lái)建立用于命令的遠(yuǎn)程處理會(huì) 話的方法,所述方法包括-發(fā)送請(qǐng)求消息以打開(kāi)遠(yuǎn)程命令行處理器處的外殼; 接收綁定機(jī)制用以將命令傳送至所述外殼以供執(zhí)行;發(fā)送執(zhí)行請(qǐng)求消息以執(zhí)行命令,其中所述執(zhí)行請(qǐng)求消息包括作為單元的命 令以及所述綁定機(jī)制。
10. 如權(quán)利要求9所述的方法,其特征在于,所述綁定機(jī)制是外殼標(biāo)識(shí)符、外殼令牌或兩者。
11. 如權(quán)利要求9所述的方法,其特征在于,響應(yīng)于所述接收到的執(zhí)行請(qǐng) 求消息,所述方法還包括發(fā)送響應(yīng)消息,所述響應(yīng)消息包括用于標(biāo)識(shí)輸入、輸出或有關(guān)所述命令執(zhí) 行的其他信號(hào)消息的命令標(biāo)識(shí)符。
12. 如權(quán)利要求9所述的方法,其特征在于,所述響應(yīng)消息包括所述命令 執(zhí)行的狀態(tài)報(bào)告。
13. 如權(quán)利要求9所述的方法,其特征在于,所述命令要求輸入以供在所 述外殼處執(zhí)行,其中所述輸入作為與所述執(zhí)行消息分開(kāi)的一個(gè)或多個(gè)數(shù)據(jù)流發(fā) 送,并且其中所述輸入包括所述外殼和所述命令標(biāo)識(shí)符兩者。
14. 如權(quán)利要求9所述的方法,其特征在于,所述命令執(zhí)行生成輸出,并 且其中所述輸出作為包括所述外殼和所述命令標(biāo)識(shí)符兩者的一個(gè)或多個(gè)數(shù)據(jù)流而在客戶機(jī)處被接收。
15. 如權(quán)利要求9所述的方法,還包括發(fā)送包括所述外殼和所述命令標(biāo)識(shí)符的用以改變所述外殼操作流程的一 個(gè)或多個(gè)異步信號(hào)消息,使得所述命令執(zhí)行被終止、暫停、恢復(fù)、退出或延遲。
16. 如權(quán)利要求9所述的方法,其特征在于,所述命令請(qǐng)求輸入流并且所述命令執(zhí)行生成輸出流,并且其中所述輸入流的流程速率相對(duì)于所述輸出流的 流程速率被動(dòng)態(tài)調(diào)整。
17. 在網(wǎng)絡(luò)計(jì)算環(huán)境中的遠(yuǎn)程設(shè)備處, 一種計(jì)算機(jī)程序產(chǎn)品,用于實(shí)現(xiàn)一 種通過(guò)在消息內(nèi)而非以二進(jìn)制數(shù)據(jù)流提供綁定機(jī)制從而將外殼與一系列命令 綁定的建立命令行外殼處理會(huì)話的方法,所述計(jì)算機(jī)程序產(chǎn)品包括其上存儲(chǔ)有 計(jì)算機(jī)可執(zhí)行指令的一種或多個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)所述計(jì)算機(jī)可執(zhí)行指令被處理器執(zhí)行時(shí),能夠使得所述遠(yuǎn)程設(shè)備執(zhí)行如下動(dòng)作 接收請(qǐng)求消息以打開(kāi)遠(yuǎn)程命令行處理器處的外殼; 提供綁定機(jī)制用以將命令傳送至所述外殼以供執(zhí)行;以及 接收?qǐng)?zhí)行請(qǐng)求消息以執(zhí)行命令,其中所述執(zhí)行請(qǐng)求消息包括作為單元的命令以及所述綁定機(jī)制。
18. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述綁定機(jī)制是外殼標(biāo)識(shí)符、外殼令牌或兩者。
19. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,響應(yīng)于所述接 收到的執(zhí)行請(qǐng)求消息,所述計(jì)算機(jī)程序產(chǎn)品還包括可執(zhí)行指令用以使得所述命 令行處理器執(zhí)行如下動(dòng)作發(fā)送響應(yīng)消息,所述響應(yīng)消息包括用于標(biāo)識(shí)輸入、輸出或有關(guān)所述命令執(zhí) 行的其他信號(hào)消息的命令標(biāo)識(shí)符。
20. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述命令要求 輸入以供在所述命令行外殼處理器處執(zhí)行,其中所述輸入作為與所述執(zhí)行消息 分開(kāi)的一個(gè)或多個(gè)數(shù)據(jù)流接收,并且其中所述輸入包括所述外殼和所述命令標(biāo) 識(shí)符兩者。
全文摘要
本文描述的實(shí)施例基于外殼作為在消息內(nèi)發(fā)送的字符單元執(zhí)行命令這一原則。因此,通過(guò)使用消息而非二進(jìn)制數(shù)據(jù)流將一系列命令與遠(yuǎn)程外殼綁定的綁定機(jī)制來(lái)建立用于命令的遠(yuǎn)程處理會(huì)話。更具體地,本文的實(shí)施例提供將命令和綁定機(jī)制兩者密封入單個(gè)消息的機(jī)制。因此,綁定機(jī)制可貫穿會(huì)話生存期始終使用并允許將外殼處理器會(huì)話建模為一系列命令而非一系列字符。此外,注意到因?yàn)橛糜谕鈿?huì)話的綁定機(jī)制在消息內(nèi)發(fā)送,所以與當(dāng)前外殼會(huì)話的二進(jìn)制或逐字符建立相關(guān)聯(lián)的問(wèn)題就得以克服。
文檔編號(hào)G06F15/16GK101385015SQ200780005585
公開(kāi)日2009年3月11日 申請(qǐng)日期2007年1月19日 優(yōu)先權(quán)日2006年2月16日
發(fā)明者A·諾索夫, B·瑞斯泰德, J·海倫德, R·W·麥科勒姆, S·曼吉斯, S·李, V·庫(kù)巴利姆特 申請(qǐng)人:微軟公司