一種程序熱更新解決方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種程序熱更新解決方法,屬于計算機(jī)軟件領(lǐng)域。
【背景技術(shù)】
[0002]現(xiàn)有的程序更新通常采用在程序啟動時運行單獨的輔助進(jìn)程來進(jìn)行,從而實現(xiàn)對業(yè)務(wù)主進(jìn)程進(jìn)行更新。這種程序更新方式,在更新的過程中會一次或多次的在兩個或多個進(jìn)程中進(jìn)行切換,來完成版本檢測、版本更新的目的。這種傳統(tǒng)的更新方式不僅繁瑣,而且限定了更新的時機(jī)必須處于主進(jìn)程退出后。
[0003]首先在很多平臺上(如10S)切換進(jìn)程就是一種不可行的解決方案。其次當(dāng)程序開發(fā)者已經(jīng)發(fā)現(xiàn)問題所在并解決完畢后卻無法即時的無縫的把修正后的內(nèi)容更新到用戶的程序內(nèi)。再者由于很多第三方因素(如需要平臺運營商需要對更新的所有內(nèi)容進(jìn)行審核,時長約為3-5天)可能會導(dǎo)致修復(fù)問題所消費的時間成本非常高昂,修復(fù)問題的效率極其低下。最后,如果用戶長時間不退出主進(jìn)程可能會導(dǎo)致更新解決問題的時間可能被無限延長,問題帶來的損失可能被無限擴(kuò)大。
[0004]另外很多移動平臺(如GooglePlay / ApppStore)傳統(tǒng)的整包更新更是會導(dǎo)致每次更新體積過大,冗余文件極多,用戶更新的成本非常高。非常的浪費網(wǎng)絡(luò)流量和用戶的時間。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的高昂的時間成本和低下的效率,本發(fā)明公開了一種程序熱更新解決方法,用于在啟動后的任意時刻切換至熱更新模塊,根據(jù)服務(wù)器的版本校驗數(shù)據(jù)、文件校驗數(shù)據(jù),在不退出、不重啟的情況下完成對程序內(nèi)容、邏輯的增刪改操作,更新完畢后無需退出程序,直接繼續(xù)運行后續(xù)內(nèi)容,而實現(xiàn)對程序高效更新。
[0006]本發(fā)明的技術(shù)方案包括一種程序熱更新解決方法,包括:校驗流程,接入服務(wù)器的客戶端程序會執(zhí)行熱更新,然后從資源服務(wù)器下載校驗數(shù)據(jù),并對比版本校驗數(shù)據(jù)和客戶端程序數(shù)據(jù),且對比過程中會產(chǎn)生對應(yīng)的事件隊列,如果出現(xiàn)對比差異,則對客戶端程序進(jìn)行更新;更新流程,從服務(wù)器下載所需的更新文件,并對客戶端程序的差異文件執(zhí)行并發(fā)的事件隊列操作,完成對差異文件的更新;監(jiān)察流程,通過文件校驗數(shù)據(jù)對執(zhí)行更新流程后的客戶端程序進(jìn)行監(jiān)測,如果監(jiān)測到客戶端程序文件與服務(wù)器不處于同步狀態(tài),則向用戶提示跟新失敗,并使客戶端程序文件回退至熱更新之前的狀態(tài),否則,提示更新成功。
[0007]進(jìn)一步,所述一種程序熱更新解決方法還包括:在客戶端程序運行的任意時刻都能夠進(jìn)行熱更新,且熱更新流程正確的執(zhí)行完畢后,所述客戶端程序會運行更新后的邏輯。
[0008]進(jìn)一步,所述一種程序熱更新解決方法還包括:校驗過程生成的對應(yīng)事件隊列包括刪除、下載、增量修復(fù)及完整替換行為。
[0009]優(yōu)選的,所述一種程序熱更新解決方法包括:更新過程中的對于事件隊列的行為:刪除、下載、增量修復(fù)、完整替換都能夠并發(fā)運行,其中下載、增量修復(fù)、完整替換行為支持從中斷處繼續(xù)的機(jī)制。
[0010]優(yōu)選地,在一次具體實施過程中,所述一種程序熱更新解決方法包括:當(dāng)行為事件隊列執(zhí)行完畢后會進(jìn)行運行結(jié)果的監(jiān)測,并通過文件校驗數(shù)據(jù)確認(rèn)當(dāng)前客戶端程序文件已經(jīng)處于與服務(wù)器同步狀態(tài),如果不處于同步狀態(tài),則執(zhí)行客戶端回退至熱更新前的操作。
[0011]進(jìn)一步,所述一種程序熱更新解決方法還包括:在客戶端程序進(jìn)行校驗、更新的過程中,客戶端程序處于活躍狀態(tài),在客戶端程序更新成功后,不需要重啟客戶端程序并能夠根據(jù)修正結(jié)果正確運行。
[0012]進(jìn)一步,所述一種程序熱更新解決方法還包括:在客戶端程序進(jìn)行校驗、更新的過程中,客戶端程序處于活躍狀態(tài),在客戶端程序更新成功后,不需要重啟客戶端程序并能夠根據(jù)修正結(jié)果正確運行。
[0013]優(yōu)選地,在一次具體實施過程中,所述一種程序熱更新解決方法包括:在更新過程中資源服務(wù)器能夠選擇是否對大資源、零散資源進(jìn)行壓縮、合并等操作,更新過程會根據(jù)資源服務(wù)器的要求進(jìn)行整包更新或零散文件更新,更新過程會根據(jù)資源服務(wù)器發(fā)送資源的不同方式對應(yīng)處理方式。
[0014]本發(fā)明的有益效果為:客戶程序可以在啟動后的任意時刻切換至熱更新模塊,根據(jù)服務(wù)器的版本校驗數(shù)據(jù)、文件校驗數(shù)據(jù),在不退出、不重啟的情況下完成對程序內(nèi)容、邏輯的增刪改操作,更新完畢后無需退出程序,直接繼續(xù)運行后續(xù)內(nèi)容,從而實現(xiàn)對程序熱更新。
【附圖說明】
[0015]圖1所示為根據(jù)本發(fā)明實施方式的方法流程圖;
圖2所示為根據(jù)本發(fā)明實施方式的校驗流程圖;
圖3所示為根據(jù)本發(fā)明實施方式的更新流程圖;
圖4所示為根據(jù)本發(fā)明實施方式的行為列表圖。
【具體實施方式】
[0016]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明的一種程序熱更新解決方法適用于軟件的測試和開發(fā)。
[0017]圖1所示為根據(jù)本發(fā)明實施方式的方法流程圖。在資源服務(wù)器上面保存著當(dāng)前最新版本的客戶端文件數(shù)據(jù)、版本校驗數(shù)據(jù)、文件校驗數(shù)據(jù),其中版本校驗數(shù)據(jù)與文件校驗數(shù)據(jù)是根據(jù)最新的待更新的客戶端文件數(shù)據(jù)而生成的。具體包括如下操作流程:
程序熱更新中的校驗過程,當(dāng)客戶端連接到服務(wù)器被要求運行熱更新或客戶端需要運行熱更新的位置時,將會切換啟動熱更新模塊,優(yōu)先獲取本地的版本校驗數(shù)據(jù)、文件校驗數(shù)據(jù),然后連接資源服務(wù)器申請最新的版本校驗數(shù)據(jù)。
[0018]客戶端會根據(jù)獲取到的資源服務(wù)器的版本校驗數(shù)據(jù)與本地的版本校驗數(shù)據(jù)進(jìn)行比對,如果一致那么將不會進(jìn)行后續(xù)更新,繼續(xù)運行后續(xù)程序邏輯;如果不一致,或者本地的版本校驗數(shù)據(jù)獲取失敗,那么客戶端程序會向服務(wù)器請求最新的文件校驗數(shù)據(jù)。
[0019]當(dāng)成功獲取文件校驗數(shù)據(jù)后,將根據(jù)最新的文件校驗數(shù)據(jù)開始校驗本地客戶端文件數(shù)據(jù),根據(jù)校驗結(jié)果,將生成一份詳盡的帶執(zhí)行事件隊列。(其中版本校驗過程與文件校驗過程如圖2所示。)
若事件隊列存在,則進(jìn)入程序熱更新中的更新過程,會根據(jù)事件隊列內(nèi)的行為類型并發(fā)運行刪除、下載、增量修復(fù)、完整替換等行為。行為列表中任何一項都支持從中斷處繼續(xù)的機(jī)制。(如圖4所示)當(dāng)其中某步流程執(zhí)行失敗后會詢問用戶是否重試,當(dāng)所有行為事件隊列執(zhí)行完畢后,客戶端會根據(jù)獲取的資源服務(wù)器文件校驗數(shù)據(jù)對本地最新的文件進(jìn)行再次校驗,通過則更新成功。不通過可以重新更新或者放棄本次更新。
[0020]在校驗、更新的全過程中主程序始終處于活躍狀態(tài),不需要其他輔助進(jìn)程完成主程序更新。更新完畢后也不需要重新啟動主進(jìn)程,可以根據(jù)修正結(jié)果正確運行。
[0021]在更新過程中資源服務(wù)器可以選擇是否對大資源、零散資源進(jìn)行壓縮、合并等操作,更新過程會根據(jù)資源服務(wù)器的要求進(jìn)行整包更新或零散文件更新。更新過程會根據(jù)資源服務(wù)器發(fā)送資源的不同方式有著相對應(yīng)的處理方法。
[0022]其中圖2為根據(jù)本發(fā)明實施方式的校驗流程圖,會對客戶端程序?qū)嵤┌姹竞臀募男r?、下載、檢測,以確保熱更新完成。
[0023]其中圖3所示為根據(jù)本發(fā)明實施方式的更新流程圖,包括檢測版本,通過版本數(shù)據(jù)比對確認(rèn)是否需要進(jìn)行更新,如果需要更新則初始化下載目錄、搜索下載更新包,下載成功會進(jìn)行解壓并實施上述的熱更新流程。
[0024]圖4所示為根據(jù)本發(fā)明實施方式的行為列表圖,是屬于事件隊列的行為,包括增加、刪除、增量修復(fù)、完全替換等,用于對差異文件實施熱程序更新。
[0025]以上所述,只是本發(fā)明的較佳實施例而已,本發(fā)明并不局限于上述實施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。在本發(fā)明的保護(hù)范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。
【主權(quán)項】
1.一種程序熱更新解決方法,其特征在于,該方法包括: 校驗流程,接入服務(wù)器的客戶端程序會執(zhí)行熱更新,然后從資源服務(wù)器下載校驗數(shù)據(jù),并對比版本校驗數(shù)據(jù)和客戶端程序數(shù)據(jù),且對比過程中會產(chǎn)生對應(yīng)的事件隊列,如果出現(xiàn)對比差異,則對客戶端程序進(jìn)行更新; 更新流程,從服務(wù)器下載所需的更新文件,并對客戶端程序的差異文件執(zhí)行并發(fā)的事件隊列操作,完成對差異文件的更新; 監(jiān)察流程,通過文件校驗數(shù)據(jù)對執(zhí)行更新流程后的客戶端程序進(jìn)行監(jiān)測,如果監(jiān)測到客戶端程序文件與服務(wù)器不處于同步狀態(tài),則向用戶提示跟新失敗,并使客戶端程序文件回退至熱更新之前的狀態(tài),否則,提示更新成功。2.根據(jù)權(quán)利要求1所述的一種程序熱更新解決方法,其特征在于: 在客戶端程序運行的任意時刻都能夠進(jìn)行熱更新,且熱更新流程正確的執(zhí)行完畢后,所述客戶端程序會運行更新后的邏輯。3.根據(jù)權(quán)利要求1所述的一種程序熱更新解決方法,其特征在于,所述的事件隊列包括: 校驗過程生成的對應(yīng)事件隊列包括刪除、下載、增量修復(fù)及完整替換行為。4.根據(jù)權(quán)利要求3所述的一種程序熱更新的方法,其特征在于: 更新過程中的對于事件隊列的刪除、下載、增量修復(fù)、完整替換行為都并發(fā)運行,其中的下載、增量修復(fù)、完整替換行為支持從中斷處繼續(xù)的機(jī)制。5.根據(jù)權(quán)利要求3所述的一種程序熱更新解決方法,其特征在于: 當(dāng)行為事件隊列執(zhí)行完畢后會進(jìn)行運行結(jié)果的監(jiān)測,并通過文件校驗數(shù)據(jù)確認(rèn)當(dāng)前客戶端程序文件已經(jīng)處于與服務(wù)器同步狀態(tài),如果不處于同步狀態(tài),則執(zhí)行客戶端回退至熱更新前的操作。6.根據(jù)權(quán)利要求1所述的一種程序熱更新解決方法,其特征在于: 在客戶端程序進(jìn)行校驗、更新的過程中,客戶端程序處于活躍狀態(tài),在客戶端程序更新成功后,不需要重啟客戶端程序并能夠根據(jù)修正結(jié)果正確運行。7.根據(jù)權(quán)利要求1所述的一種程序熱更新解決方法,其特征在于: 所述校驗流程中下載的校驗數(shù)據(jù)為最新的校驗數(shù)據(jù),包括程序校驗數(shù)據(jù)和文件校驗數(shù)據(jù),且,程序校驗數(shù)據(jù)、文件校驗數(shù)據(jù)及客戶端程序數(shù)據(jù)沒有相互依賴關(guān)系,能夠根據(jù)自身數(shù)據(jù)類型完成對應(yīng)部分的校驗過程。8.根據(jù)權(quán)利要求7所述的一種程序熱更新解決方法,其特征在于: 在更新過程中資源服務(wù)器能夠選擇是否對大資源、零散資源進(jìn)行壓縮、合并等操作,更新過程會根據(jù)資源服務(wù)器的要求進(jìn)行整包更新或零散文件更新,更新過程會根據(jù)資源服務(wù)器發(fā)送資源的不同方式對應(yīng)處理方式。
【專利摘要】本發(fā)明提供一種程序熱更新解決方法,包括:校驗流程,校驗客戶端程序,根據(jù)文件是否存在差異進(jìn)行相應(yīng)的操作行為;更新流程,并對客戶端程序的差異文件執(zhí)行并發(fā)的事件隊列操作,完成對差異文件的更新;通過文件校驗數(shù)據(jù)對執(zhí)行更新流程后的客戶端程序進(jìn)行監(jiān)測。本發(fā)明的有益效果為:客戶程序可以在啟動后的任意時刻切換至熱更新模塊,根據(jù)服務(wù)器的版本校驗數(shù)據(jù)、文件校驗數(shù)據(jù),在不退出、不重啟的情況下完成對程序內(nèi)容、邏輯的增刪改操作,更新完畢后無需退出程序,直接繼續(xù)運行后續(xù)內(nèi)容,從而實現(xiàn)對程序熱更新。
【IPC分類】G06F9/445
【公開號】CN105260209
【申請?zhí)枴緾N201510681642
【發(fā)明人】孫遜
【申請人】珠海金山網(wǎng)絡(luò)游戲科技有限公司, 廣州西山居世游網(wǎng)絡(luò)科技有限公司
【公開日】2016年1月20日
【申請日】2015年10月20日