本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,尤其涉及一種軟件發(fā)布方法與系統(tǒng)。
背景技術(shù):
在軟件更新時(shí),通常在現(xiàn)有軟件的穩(wěn)定版本的基礎(chǔ)上逐步發(fā)布過(guò)渡版本,直至完全升級(jí)到新的穩(wěn)定版本,從而穩(wěn)定地實(shí)現(xiàn)軟件更新。
同時(shí),為了應(yīng)對(duì)軟件更新中的問(wèn)題,有效地控制軟件更新所帶來(lái)的問(wèn)題的波及范圍,防止核心用戶流失,在軟件更新時(shí),可采用基于用戶的更新策略,即對(duì)用戶進(jìn)行分類,對(duì)于不同類別的用戶請(qǐng)求采用不同軟件版本進(jìn)行處理,對(duì)于一部分用戶請(qǐng)求使用過(guò)渡版本,而對(duì)另一部分用戶請(qǐng)求仍然使用穩(wěn)定版本。如此,在影響重要業(yè)務(wù)或用戶之前該新版本引入的問(wèn)題就能被發(fā)現(xiàn),那樣就很好地降低了軟件升級(jí)可能產(chǎn)生的影響范圍。
現(xiàn)有技術(shù)中的基于用戶的軟件發(fā)布方法中,通常采用基于路由的發(fā)布方法。具體而言,該方法在后端系統(tǒng)之前增加一個(gè)路由模塊,所有訪問(wèn)后端系統(tǒng)的請(qǐng)求首先經(jīng)過(guò)該路由模塊。該方法需要同時(shí)啟動(dòng)多個(gè)后端系統(tǒng)用于應(yīng)對(duì)不同的軟件版本,一個(gè)軟件版本對(duì)應(yīng)一個(gè)后端系統(tǒng)。由路由模塊解析用戶請(qǐng)求后,根據(jù)用戶請(qǐng)求所對(duì)應(yīng)的軟件版本,訪問(wèn)對(duì)應(yīng)版本的后端系統(tǒng)。發(fā)布升級(jí)軟件時(shí),將路由表中需要升級(jí)的用戶從舊軟件版本指向新軟件版本,然后路由模塊動(dòng)態(tài)加載更新后的路由信息即可。
然而,上述的現(xiàn)有技術(shù)需要額外設(shè)置路由模塊,增加了路由模塊的開發(fā)與維護(hù)成本。現(xiàn)有技術(shù)需要同時(shí)啟動(dòng)多個(gè)后端系統(tǒng),操作復(fù)雜,維護(hù)麻煩。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種軟件的發(fā)布方法與軟件系統(tǒng),在基于用戶進(jìn)行軟件更新時(shí),操作維護(hù)簡(jiǎn)單,不易出錯(cuò)。
根據(jù)本發(fā)明的一個(gè)方面,提供一種軟件發(fā)布方法,包括步驟:接收用戶請(qǐng)求信息;基于用戶請(qǐng)求信息,確定與用戶請(qǐng)求信息相關(guān)聯(lián)的請(qǐng)求方的特征;基于特征,確定向請(qǐng)求方發(fā)布的軟件的版本標(biāo)識(shí);構(gòu)建帶有版本標(biāo)識(shí)以及請(qǐng)求內(nèi)容的后臺(tái)請(qǐng)求信息;基于后臺(tái)請(qǐng)求信息的版本標(biāo)識(shí),確定相對(duì)應(yīng)的處理函數(shù),不同版本標(biāo)識(shí)綁定不同處理函數(shù);使用與后臺(tái)請(qǐng)求信息的版本標(biāo)識(shí)相對(duì)應(yīng)的處理函數(shù)處理后臺(tái)請(qǐng)求信息。
根據(jù)本發(fā)明的另一個(gè)方面,提供一種軟件系統(tǒng),包括系統(tǒng)入口,系統(tǒng)入口基于接收的用戶請(qǐng)求信息,確定與用戶請(qǐng)求信息相關(guān)聯(lián)的請(qǐng)求方的特征,并基于特征,確定向請(qǐng)求方發(fā)布的軟件的版本標(biāo)識(shí),系統(tǒng)入口構(gòu)建帶有版本標(biāo)識(shí)以及請(qǐng)求內(nèi)容的后臺(tái)請(qǐng)求信息;至少一個(gè)后臺(tái)模塊,每一個(gè)后臺(tái)模塊包括多個(gè)處理函數(shù),每一個(gè)后臺(tái)模塊執(zhí)行至少一個(gè)服務(wù),每一個(gè)服務(wù)調(diào)用后臺(tái)模塊中的多個(gè)處理函數(shù)中的一個(gè)或者一組包含多個(gè)處理函數(shù)的組合,至少一個(gè)后臺(tái)模塊接收系統(tǒng)入口發(fā)送來(lái)的后臺(tái)請(qǐng)求信息并基于后臺(tái)請(qǐng)求信息的版本標(biāo)識(shí),確定相對(duì)應(yīng)的處理函數(shù),使用處理函數(shù)處理后臺(tái)請(qǐng)求信息,其中不同版本標(biāo)識(shí)綁定不同處理函數(shù)。
本發(fā)明通過(guò)系統(tǒng)入口構(gòu)建帶有版本標(biāo)識(shí)以及請(qǐng)求內(nèi)容的后臺(tái)請(qǐng)求信息,后臺(tái)模塊通過(guò)版本標(biāo)識(shí)確定處理函數(shù),并使用相應(yīng)的處理函數(shù)處理后臺(tái)請(qǐng)求信息,即不同版本通過(guò)版本標(biāo)識(shí)與處理函數(shù)綁定。由于存在多個(gè)處理函數(shù),通過(guò)不同版本標(biāo)識(shí)對(duì)應(yīng)不同處理函數(shù),因此基礎(chǔ)版本與過(guò)渡版本能通過(guò)處理函數(shù)的形式同時(shí)存在,處理函數(shù)通過(guò)版本標(biāo)識(shí)被后臺(tái)模塊匹配并使用,從而無(wú)需使用路由模塊,避免了額外開發(fā)維護(hù)路由模塊的成本。由于同一個(gè)后臺(tái)模塊可以同時(shí)包括多個(gè)處理函數(shù),每次處理時(shí),一個(gè)服務(wù)調(diào)用該后臺(tái)模塊中的多個(gè)處理函數(shù)中的一個(gè)或者一組包含多個(gè)處理函數(shù)的組合,因此可以僅布置一個(gè)服務(wù),即線上只需要運(yùn)行一個(gè)系統(tǒng)進(jìn)程,而無(wú)需布置多個(gè)服務(wù)或是多套后端系統(tǒng)。
附圖說(shuō)明
以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的說(shuō)明,以使本發(fā)明的特性和優(yōu)點(diǎn)更為明顯。
圖1為本發(fā)明的軟件發(fā)布方法的一個(gè)實(shí)例的流程圖;
圖2為包含本發(fā)明的軟件系統(tǒng)以及用戶的一個(gè)實(shí)例的數(shù)據(jù)流向示意圖;
圖3為本發(fā)明的后臺(tái)請(qǐng)求信息的一個(gè)實(shí)例的數(shù)據(jù)結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將對(duì)本發(fā)明的實(shí)施例給出詳細(xì)的說(shuō)明。盡管本發(fā)明將結(jié)合一些具體實(shí)施方式進(jìn)行闡述和說(shuō)明,但需要注意的是本發(fā)明并不僅僅只局限于這些實(shí)施方式。相反,對(duì)本發(fā)明進(jìn)行的修改或者等同替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對(duì)應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
圖1為本發(fā)明的軟件發(fā)布方法的一個(gè)實(shí)例的流程圖。圖2為包含本發(fā)明的軟件系統(tǒng)以及用戶的一個(gè)實(shí)例的數(shù)據(jù)流向示意圖。
結(jié)合圖1以及圖2所示,通常作為請(qǐng)求方的用戶201在其用戶設(shè)備上裝有客戶端,客戶端可以運(yùn)行于特定客戶端程序,例如安裝在移動(dòng)設(shè)備上的APP(application,應(yīng)用程序),客戶端也可以運(yùn)行于瀏覽器。用戶201通過(guò)客戶端向軟件系統(tǒng)202發(fā)送用戶請(qǐng)求信息301,用戶請(qǐng)求信息301中包括請(qǐng)求內(nèi)容,例如結(jié)算選中的商品,請(qǐng)求內(nèi)容通過(guò)代碼方式表示。需要注意的是,在本實(shí)施例中用戶請(qǐng)求信息301來(lái)自于特定用戶,在其他實(shí)施例中用戶請(qǐng)求信息301也可是來(lái)自系統(tǒng)自運(yùn)行的實(shí)例,例如監(jiān)控系統(tǒng)是否正常工作的實(shí)例。
根據(jù)如圖1所示的軟件方法S100,軟件系統(tǒng)202主要實(shí)施以下步驟:
步驟S101:接收用戶請(qǐng)求信息。
步驟S102:確定請(qǐng)求方特征。
步驟S103:確定向所述請(qǐng)求方發(fā)布的軟件的版本標(biāo)識(shí)。
步驟S104:構(gòu)建帶有所述版本標(biāo)識(shí)以及請(qǐng)求內(nèi)容的后臺(tái)請(qǐng)求信息。
步驟S105:確定與后臺(tái)請(qǐng)求信息的版本標(biāo)識(shí)相對(duì)應(yīng)的處理函數(shù)。
步驟S106:使用處理函數(shù)處理所述后臺(tái)請(qǐng)求信息。
步驟S107:構(gòu)建響應(yīng)信息返回請(qǐng)求方。
具體而言,首先如步驟S101,軟件系統(tǒng)202的系統(tǒng)入口203接收用戶請(qǐng)求信息301。
如步驟S102,系統(tǒng)入口203基于用戶請(qǐng)求信息301,確定與用戶請(qǐng)求信息301相關(guān)聯(lián)的請(qǐng)求方201的特征。這里的特征可以包括用戶名、用戶IP地址、用戶設(shè)備通信物理地址、用戶客戶端版本號(hào)、用戶歷史使用習(xí)慣、用戶設(shè)備操作系統(tǒng)等。軟件系統(tǒng)202可以通過(guò)讀取與用戶請(qǐng)求信息相關(guān)聯(lián)的cookie信息、用戶設(shè)備通信物理地址,解析用戶請(qǐng)求信息301,查詢數(shù)據(jù)庫(kù)等方式獲得上述特征。
接著如步驟S103,系統(tǒng)入口203基于步驟S102所確定的特征,根據(jù)軟件發(fā)布策略,匹配特征所對(duì)應(yīng)的向該請(qǐng)求方發(fā)布的軟件的版本標(biāo)識(shí)(message type ID)。軟件發(fā)布策略是根據(jù)實(shí)際需要事先指定的一條或多條規(guī)則,例如根據(jù)用戶名確認(rèn)該用戶為新用戶時(shí),則向其發(fā)布最新的過(guò)渡版本,確定該用戶為長(zhǎng)期穩(wěn)定客戶時(shí),則向其發(fā)布穩(wěn)定的基礎(chǔ)版本。在其他實(shí)施例中,用戶請(qǐng)求信息301來(lái)自于實(shí)例時(shí),例如可以通過(guò)該實(shí)例的重要度評(píng)級(jí)特征,確定使用過(guò)渡版本還是基礎(chǔ)版本處理該實(shí)例的用戶請(qǐng)求信息301。軟件發(fā)布策略也可以是多個(gè)規(guī)則的組合,多個(gè)規(guī)則例如可以根據(jù)優(yōu)先級(jí)進(jìn)行排列,當(dāng)特征滿足多個(gè)規(guī)則時(shí),根據(jù)優(yōu)先級(jí)在先的規(guī)則確定向其發(fā)布的版本,多個(gè)規(guī)則也可以通過(guò)更為復(fù)雜的邏輯進(jìn)行組合。不同版本的軟件通過(guò)不同版本標(biāo)識(shí)進(jìn)行區(qū)分,從而根據(jù)軟件發(fā)布策略,匹配特征,從而得到向該請(qǐng)求方發(fā)布的軟件的版本標(biāo)識(shí)。
例如在本示例中,系統(tǒng)入口203讀取用戶設(shè)備通信物理地址獲得用戶設(shè)備通信物理地址的特征,通過(guò)查詢數(shù)據(jù)庫(kù)確定該用戶為首次使用用戶,根據(jù)軟件發(fā)布策略,向該用戶發(fā)布最新的過(guò)渡版本。
接著,如步驟S104,系統(tǒng)入口203基于用戶請(qǐng)求信息301,構(gòu)建后臺(tái)請(qǐng)求信息302,后臺(tái)請(qǐng)求信息302包括版本標(biāo)識(shí)以及請(qǐng)求內(nèi)容。圖3示出了后臺(tái)請(qǐng)求信息302的數(shù)據(jù)結(jié)構(gòu)。如圖3所示,后臺(tái)請(qǐng)求信息302包括信息頭401以及信息體402,信息頭401中保存版本標(biāo)識(shí),信息體402中保存請(qǐng)求內(nèi)容。具體而言,信息體402中包括用戶請(qǐng)求信息301中請(qǐng)求內(nèi)容,例如:結(jié)算選中的商品。對(duì)于來(lái)自不同用戶的相同請(qǐng)求內(nèi)容,信息體402相同。信息頭401中包括版本標(biāo)識(shí)字段(message type ID),message type ID對(duì)應(yīng)當(dāng)前版本標(biāo)識(shí),并包括當(dāng)前版本標(biāo)識(shí)所基于的基礎(chǔ)版本的基礎(chǔ)版本標(biāo)識(shí)。相同版本message type ID相同,不同版本的message type ID不同。由于message type ID包括基礎(chǔ)版本的基礎(chǔ)版本標(biāo)識(shí),因此,通過(guò)message type ID不僅可以唯一確定當(dāng)前軟件版本,還能夠通過(guò)提取message type ID中的基礎(chǔ)版本標(biāo)識(shí),從而得到當(dāng)前版本所基于的基礎(chǔ)版本。
在本實(shí)施例中,message type ID符合公式:
message type ID=X+V*graybase (1)
其中,message type ID為版本標(biāo)識(shí),X為基礎(chǔ)版本標(biāo)識(shí),V為版號(hào),graybase為基準(zhǔn)偏移量,message type ID、V以及graybase均為數(shù)值,+表示加法運(yùn)算,*表示乘法運(yùn)算。X可取值為0-100000之間的整數(shù),V可為從1開始遞增的整數(shù)。當(dāng)V取0時(shí),message type ID表示基礎(chǔ)版本。
需要注意的是,基礎(chǔ)版本標(biāo)識(shí)X所對(duì)應(yīng)的數(shù)值小于基準(zhǔn)偏移量graybase所對(duì)應(yīng)的數(shù)值,從而便于從message type ID提取基礎(chǔ)版本標(biāo)識(shí)X。通?;鶞?zhǔn)偏移量graybase為一個(gè)較大的數(shù)值,從而保證了加了基準(zhǔn)偏移量后的過(guò)渡版本的版本標(biāo)識(shí)不會(huì)與基礎(chǔ)版本標(biāo)識(shí)沖突。
例如,取X為100,取graybase為1000,假設(shè)當(dāng)前版本為在基礎(chǔ)版本上的第1版過(guò)渡版本,則取版號(hào)V為1,根據(jù)公式(1),message type ID=100+1*1000=1100。
當(dāng)需要提取message type ID的基礎(chǔ)版本標(biāo)識(shí)X時(shí),只需要根據(jù)公式:
X=message type ID mod graybase (2)
其中mod表示取余數(shù),即message type ID除以graybase后取余數(shù)。由于基礎(chǔ)版本標(biāo)識(shí)X所對(duì)應(yīng)的數(shù)值小于基準(zhǔn)偏移量graybase所對(duì)應(yīng)的數(shù)值,因此mod運(yùn)算能夠很方便地從message type ID中提取出基礎(chǔ)版本標(biāo)識(shí)X。
例如,message type ID為1100,graybase為1000,根據(jù)公式(2),X=1100 mod 1000=100。
容易得知的是,當(dāng)版號(hào)V取值為0時(shí),則message type ID對(duì)應(yīng)基礎(chǔ)版本。
當(dāng)出現(xiàn)新的過(guò)渡版本時(shí),只需要取新的版號(hào)V即可構(gòu)建新的message type ID。
在其他實(shí)施例中也可以使用其他計(jì)算公式設(shè)定message type ID,只需要滿足message type ID對(duì)應(yīng)當(dāng)前版本標(biāo)識(shí),并包括當(dāng)前版本標(biāo)識(shí)所基于的基礎(chǔ)版本的基礎(chǔ)版本標(biāo)識(shí)即可,例如通過(guò)標(biāo)記符分隔基礎(chǔ)版本標(biāo)識(shí)以及版號(hào),例如通過(guò)使用字母數(shù)字組合等。本實(shí)施例中的message type ID的構(gòu)建規(guī)則,即公式(1),保證了所有的版本標(biāo)識(shí)沒(méi)有沖突,并可以快速得出基礎(chǔ)版本標(biāo)識(shí)。
根據(jù)上述的方法步驟,在本實(shí)施例中,如圖1所示,系統(tǒng)入口203構(gòu)建得到后臺(tái)請(qǐng)求信息302.1,根據(jù)之前的步驟確定向該用戶請(qǐng)求信息對(duì)應(yīng)的請(qǐng)求方發(fā)布最新的過(guò)渡版本,因此后臺(tái)請(qǐng)求信息302.1包括最新的過(guò)渡版本的版本標(biāo)識(shí)1100,包括請(qǐng)求內(nèi)容為表示結(jié)算選中的商品的代碼。
接著,后臺(tái)模塊204對(duì)后臺(tái)請(qǐng)求信息302進(jìn)行處理,具體而言,如步驟S105,在后臺(tái)模塊204接收到后臺(tái)請(qǐng)求信息302后,對(duì)后臺(tái)請(qǐng)求信息302進(jìn)行解析,讀取信息頭401的message type ID字段獲得版本標(biāo)識(shí),根據(jù)版本標(biāo)識(shí)查找并確定對(duì)應(yīng)的處理函數(shù)205。每一個(gè)后臺(tái)模塊204包括多個(gè)處理函數(shù)205,每一個(gè)后臺(tái)模塊204執(zhí)行至少一個(gè)服務(wù),每一個(gè)服務(wù)調(diào)用該后臺(tái)模塊204中的多個(gè)處理函數(shù)205中的一個(gè)或者一組包含多個(gè)處理函數(shù)的組合。不同版本標(biāo)識(shí)對(duì)應(yīng)不同處理函數(shù)205,即版本標(biāo)識(shí)與處理函數(shù)205綁定。這里的不同版本標(biāo)識(shí)對(duì)應(yīng)不同處理函數(shù)205,可以是不同版本標(biāo)識(shí)對(duì)應(yīng)不同個(gè)的處理函數(shù)205,也可以是不同版本標(biāo)識(shí)對(duì)應(yīng)不同組的包含多個(gè)處理函數(shù)的組合。
過(guò)渡版本的版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205由基礎(chǔ)版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205全量復(fù)制并在此基礎(chǔ)上修改而得到??梢韵氲降氖牵谄渌麑?shí)施例中也可以由其他方法得到過(guò)渡版本的版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205,例如設(shè)置通用子函數(shù),在過(guò)渡版本的版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205中僅設(shè)置與基礎(chǔ)版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205的區(qū)別部分。
如圖1所示,在本實(shí)施例中,后臺(tái)模塊A204.1執(zhí)行服務(wù):計(jì)算選中商品實(shí)行優(yōu)惠規(guī)則后的金額。后臺(tái)模塊A204.1中包括處理函數(shù)A1 205.1以及處理函數(shù)A2 205.2,版本標(biāo)識(shí)1100為過(guò)渡版本,對(duì)應(yīng)處理函數(shù)A2 205.2,版本標(biāo)識(shí)100為穩(wěn)定版本,對(duì)應(yīng)處理函數(shù)A1 205.1,處理函數(shù)A2 205.2由處理函數(shù)A1 205.1全量復(fù)制并修改得到。后臺(tái)模塊A204.1讀取后臺(tái)請(qǐng)求信息302.1的信息頭401從而獲得版本標(biāo)識(shí)為1100,根據(jù)版本標(biāo)識(shí)1100確定所使用的處理函數(shù)A2 205.2。
如步驟S106,當(dāng)后臺(tái)模塊204確定所使用的處理函數(shù)205后,使用處理函數(shù)205處理后臺(tái)請(qǐng)求信息302。例如,后臺(tái)模塊A 204.1確定使用處理函數(shù)A2 205.2后,使用處理函數(shù)A2 205.2處理后臺(tái)請(qǐng)求信息302.1。
在一些情況下,后臺(tái)模塊204在處理后臺(tái)請(qǐng)求信息302后,根據(jù)對(duì)后臺(tái)請(qǐng)求信息302的處理結(jié)果,構(gòu)建響應(yīng)信息303返回請(qǐng)求方201;在另一些情況下,一個(gè)后臺(tái)模塊204根據(jù)對(duì)后臺(tái)請(qǐng)求信息302的處理結(jié)果,重新構(gòu)建包括相同版本標(biāo)識(shí)的后臺(tái)請(qǐng)求信息302,并將重新構(gòu)建的后臺(tái)請(qǐng)求信息302發(fā)送至其他后臺(tái)模塊204,因此步驟S104-S106可能重復(fù)多次執(zhí)行。需要注意的是,后臺(tái)模塊204之間通過(guò)后臺(tái)請(qǐng)求信息302進(jìn)行通信,在處理同一次用戶請(qǐng)求信息301期間,不同后臺(tái)模塊204的后臺(tái)請(qǐng)求信息302包括相同版本標(biāo)識(shí),通過(guò)相同的版本標(biāo)識(shí)可以方便地保證各個(gè)后臺(tái)模塊204處理的統(tǒng)一性。
如圖2所示,在本實(shí)施例中,后臺(tái)模塊A204.1處理后臺(tái)請(qǐng)求信息302.1后,根據(jù)處理結(jié)果需要重新構(gòu)建后臺(tái)請(qǐng)求信息302.2,并將后臺(tái)請(qǐng)求信息302.2發(fā)送到后臺(tái)模塊B204.2。后臺(tái)請(qǐng)求信息302.2包括與后臺(tái)請(qǐng)求信息302.1相同的版本標(biāo)識(shí),即后臺(tái)模塊B204.2讀取后臺(tái)請(qǐng)求信息302.2獲得版本標(biāo)識(shí)同樣為1100。后臺(tái)模塊B204.2執(zhí)行服務(wù)對(duì)選中商品計(jì)算累加金額。后臺(tái)模塊B204.2中包括處理函數(shù)B1 205.3以及處理函數(shù)B2 205.4,版本標(biāo)識(shí)1100為過(guò)渡版本,對(duì)應(yīng)處理函數(shù)B2 205.4,版本標(biāo)識(shí)100為穩(wěn)定版本,對(duì)應(yīng)處理函數(shù)B1 205.3,處理函數(shù)B2 205.4由處理函數(shù)B1 205.3全量復(fù)制并修改得到。后臺(tái)模塊B204.2獲得版本標(biāo)識(shí)為1100后,根據(jù)版本標(biāo)識(shí)1100確定所使用的處理函數(shù)B2 205.4,進(jìn)而使用處理函數(shù)B2 205.4處理后臺(tái)請(qǐng)求信息302.2。
需要注意的是,在一些情況下,后臺(tái)模塊204需要僅使用穩(wěn)定版本,即需要禁用過(guò)渡版本。在這種情況下,對(duì)后臺(tái)請(qǐng)求信息302進(jìn)行解析,并獲得版本標(biāo)識(shí)后,根據(jù)版本標(biāo)識(shí)提取基礎(chǔ)版本標(biāo)識(shí),根據(jù)基礎(chǔ)版本標(biāo)識(shí)查找并確定對(duì)應(yīng)的處理函數(shù)。
例如,如果對(duì)于后臺(tái)模塊204.2需要禁用過(guò)渡版本,則當(dāng)后臺(tái)模塊B204.2獲得版本標(biāo)識(shí)為1100后,根據(jù)公式(2)提取基礎(chǔ)版本標(biāo)識(shí)為100,根據(jù)基礎(chǔ)版本標(biāo)識(shí)確認(rèn)所對(duì)應(yīng)的處理函數(shù)為處理函數(shù)B1 205.3,進(jìn)而使用處理函數(shù)B1 205.3處理后臺(tái)請(qǐng)求信息302.2。
從以上描述可看出,對(duì)任意一個(gè)后臺(tái)模塊204可以通過(guò)控制版本標(biāo)識(shí)來(lái)選擇是否進(jìn)行穩(wěn)定版本的升級(jí)。在現(xiàn)有技術(shù)中,由于采用同時(shí)啟動(dòng)多個(gè)后端系統(tǒng),一個(gè)軟件版本對(duì)應(yīng)一個(gè)后端系統(tǒng)的方法,因此難以實(shí)現(xiàn)選擇部分模塊進(jìn)行升級(jí)的功能,而通過(guò)本發(fā)明的方法,簡(jiǎn)單便捷地實(shí)現(xiàn)了對(duì)整個(gè)軟件系統(tǒng)中的部分模塊或是部分服務(wù)進(jìn)行升級(jí),而部分模塊或是部分服務(wù)不進(jìn)行升級(jí)的功能。
當(dāng)后臺(tái)請(qǐng)求信息302處理完畢后,如步驟S107,后臺(tái)模塊204構(gòu)建相應(yīng)信息303,并將響應(yīng)信息303發(fā)回請(qǐng)求方201。需要注意的是,在其他實(shí)施例中,也可以沒(méi)有步驟S107,即后臺(tái)模塊204處理后臺(tái)請(qǐng)求信息302后直接完成本次對(duì)用戶請(qǐng)求信息301的處理。
由以上對(duì)于本發(fā)明的軟件發(fā)布方法的描述可看出,由于本發(fā)明中的多個(gè)軟件版本對(duì)應(yīng)的多個(gè)處理函數(shù)205是同時(shí)存在于同一個(gè)后臺(tái)模塊204的同一個(gè)服務(wù)中的,因此可以僅布置一個(gè)服務(wù),即線上只需要運(yùn)行一個(gè)系統(tǒng)進(jìn)程,而無(wú)需布置多個(gè)服務(wù)或是多套后端系統(tǒng)。而現(xiàn)有技術(shù)中由于需要同時(shí)啟動(dòng)多套后端系統(tǒng),如果后端系統(tǒng)執(zhí)行定時(shí)任務(wù),則需要同時(shí)針對(duì)于每套后端系統(tǒng)執(zhí)行多次任務(wù),另外在發(fā)現(xiàn)基礎(chǔ)版本有錯(cuò)誤時(shí),則需要針對(duì)每套后端系統(tǒng)進(jìn)行修改,維護(hù)麻煩。而本發(fā)明中由于可以僅布置一個(gè)服務(wù),因此在執(zhí)行定時(shí)任務(wù)時(shí)可以僅執(zhí)行一次任務(wù),在修復(fù)版本錯(cuò)誤時(shí),可以一次修改對(duì)應(yīng)多個(gè)版本,從而避免了以上現(xiàn)有技術(shù)中的問(wèn)題。
由于本發(fā)明采用構(gòu)建帶有版本標(biāo)識(shí)的后臺(tái)請(qǐng)求信息302,后臺(tái)模塊204通過(guò)識(shí)別與處理函數(shù)綁定的版本標(biāo)識(shí)來(lái)加載不同版本,因此不再需要設(shè)置現(xiàn)有技術(shù)的路由模塊,節(jié)省了額外的路由模塊的開發(fā)維護(hù)成本。另外,現(xiàn)有技術(shù)中由于在后臺(tái)模塊前設(shè)置路由模塊,用戶請(qǐng)求信息通過(guò)路由模塊進(jìn)行中轉(zhuǎn),因此如果用戶請(qǐng)求信息需要通過(guò)多階段完成,則可能發(fā)生前一階段的后臺(tái)模塊使用基礎(chǔ)版本,后一階段發(fā)生之前版本進(jìn)行更新,使得后一階段的后臺(tái)模塊使用過(guò)渡版本,從而造成系統(tǒng)處理的不統(tǒng)一。而本發(fā)明由于沒(méi)有路由模塊,而是通過(guò)具有相同的版本代碼的后臺(tái)請(qǐng)求信息302進(jìn)行通信,因此保障了統(tǒng)一性。
當(dāng)過(guò)渡版本運(yùn)行穩(wěn)定后,所有請(qǐng)求方201的用戶請(qǐng)求信息301都逐步通過(guò)版本代碼而由過(guò)渡版本進(jìn)行處理時(shí),將原來(lái)與該過(guò)渡版本的版本標(biāo)識(shí)綁定的處理函數(shù)205與基礎(chǔ)版本的版本標(biāo)識(shí)綁定,并同時(shí)刪除原基礎(chǔ)版本的版本標(biāo)識(shí)所對(duì)應(yīng)的處理函數(shù)205,從而實(shí)現(xiàn)軟件更新的完成。這樣的更新方式可以實(shí)現(xiàn)新舊基本版本的平滑在線切換,無(wú)需重啟原有進(jìn)程。
本發(fā)明還提供了一種軟件系統(tǒng)202,該軟件系統(tǒng)202包括系統(tǒng)入口203以及至少一個(gè)后臺(tái)模塊204,系統(tǒng)入口203用于將接收到的用戶請(qǐng)求信息301改寫為后臺(tái)請(qǐng)求信息302并發(fā)送到后臺(tái)模塊204,至少一個(gè)后臺(tái)模塊204接收后臺(tái)請(qǐng)求信息302并進(jìn)行處理。軟件系統(tǒng)202的具體操作方法以及數(shù)據(jù)流向已在上文的軟件發(fā)布方法中描述,此處不再贅述。
以上僅是本發(fā)明的具體應(yīng)用范例,對(duì)本發(fā)明的保護(hù)范圍不構(gòu)成任何限制。除上述實(shí)施例外,本發(fā)明還可以有其它實(shí)施方式。凡采用等同替換或等效變換形成的技術(shù)方案,均落在本發(fā)明所要求保護(hù)的范圍之內(nèi)。