本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)更新方法及裝置。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,應(yīng)用客戶端需要的數(shù)據(jù)更新速度越來越快,進(jìn)而如何使得應(yīng)用客戶端便捷地更新數(shù)據(jù),成為了本技術(shù)領(lǐng)域內(nèi)重要的技術(shù)問題之一。
目前,主要有兩種用于實(shí)現(xiàn)應(yīng)用客戶端數(shù)據(jù)更新的方法。第一種,應(yīng)用客戶端可以通過從應(yīng)用客戶端發(fā)布平臺(tái)下載安裝包的形式實(shí)現(xiàn)數(shù)據(jù)更新。第二種,應(yīng)用客戶端也可以通過自身的數(shù)據(jù)更新模塊與該應(yīng)用客戶端的后臺(tái)服務(wù)器進(jìn)行交互實(shí)現(xiàn)數(shù)據(jù)更新。
上述第一種數(shù)據(jù)更新方法是針對應(yīng)用客戶端整體的更新方法,無法對應(yīng)用客戶端的部分?jǐn)?shù)據(jù)進(jìn)行更新,且需要用戶主動(dòng)下載安裝包,并重新安裝該應(yīng)用客戶端。而上述第二種方法,需要應(yīng)用客戶端的開發(fā)者不僅要在后臺(tái)服務(wù)器實(shí)現(xiàn)更新文件的生成,還需要開發(fā)應(yīng)用客戶端的數(shù)據(jù)更新模塊,造成了開發(fā)、維護(hù)成本高的問題。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)更新方法及裝置。該技術(shù)方案如下:
第一方面,提供了一種數(shù)據(jù)更新方法,包括:
為應(yīng)用客戶端提供軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
基于所述數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求;
根據(jù)所述數(shù)據(jù)更新請求,獲取所述應(yīng)用客戶端的更新文件;
向所述應(yīng)用客戶端發(fā)送所述更新文件,使得所述應(yīng)用客戶端基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
第二方面,提供了一種數(shù)據(jù)更新裝置,包括:
數(shù)據(jù)更新接口模塊,用于為應(yīng)用客戶端提供軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
接收模塊,用于基于所述數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求;
獲取模塊,用于根據(jù)所述數(shù)據(jù)更新請求,獲取所述應(yīng)用客戶端的更新文件;
發(fā)送模塊,用于向所述應(yīng)用客戶端發(fā)送所述更新文件,使得所述應(yīng)用客戶端基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
第三方面,提供了一種更新文件的格式,包括:更新文件頭、更新文件尾和至少一個(gè)數(shù)據(jù)包;該更新文件頭包括應(yīng)用程序名、對應(yīng)新舊版本號(hào)、數(shù)據(jù)包個(gè)數(shù)、文件大小及進(jìn)行差分處理時(shí)所采用的差分算法信息。
第四方面,提供了一種數(shù)據(jù)更新方法,所述方法包括:
獲取第三方服務(wù)器提供的軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
基于所述數(shù)據(jù)更新接口,向所述第三方服務(wù)器發(fā)送數(shù)據(jù)更新請求;
接收所述第三方服務(wù)器返回的更新文件;
基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
第五方面,提供了一種數(shù)據(jù)更新裝置,其特征在于,所述裝置包括:
獲取模塊,用于獲取第三方服務(wù)器提供的軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
發(fā)送模塊,用于基于所述數(shù)據(jù)更新接口,向所述第三方服務(wù)器發(fā)送數(shù)據(jù)更新請求;
接收模塊,用于接收所述第三方服務(wù)器返回的更新文件;
更新模塊,用于基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
第六方面,提供了一種數(shù)據(jù)更新方法,其特征在于,所述方法包括:
向第三方服務(wù)器發(fā)送應(yīng)用客戶端的最新版本數(shù)據(jù),所述最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,所述第一數(shù)據(jù)包信息列表用于指示所述最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí),由所述第三方服務(wù)器根據(jù)所述應(yīng)用客戶端的歷史版本數(shù)據(jù),生成所述應(yīng)用客戶端的更新文件。
第七方面,提供了一種數(shù)據(jù)更新裝置,其特征在于,所述裝置包括:
發(fā)送模塊,用于向第三方服務(wù)器發(fā)送應(yīng)用客戶端的最新版本數(shù)據(jù),所述最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,所述第一數(shù)據(jù)包信息列表用于指示所述最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí),由所述第三方服務(wù)器根據(jù)所述應(yīng)用客戶端的歷史版本數(shù)據(jù),生成所述應(yīng)用客戶端的更新文件。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
通過為應(yīng)用客戶端提供軟件開發(fā)工具包,該軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;基于該數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求;根據(jù)該數(shù)據(jù)更新請求,獲取該應(yīng)用客戶端的更新文件;向該應(yīng)用客戶端發(fā)送該更新文件,使得該應(yīng)用客戶端基于該更新文件,進(jìn)行數(shù)據(jù)更新。采用這樣的數(shù)據(jù)更新方法,不僅使得應(yīng)用客戶端無需重新安裝即可更新全部或部分?jǐn)?shù)據(jù),并且降低了開發(fā)和維護(hù)成本,提高了數(shù)據(jù)更新的便捷性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新系統(tǒng)示意圖;
圖2是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖;
圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖;
圖4是本發(fā)明實(shí)施例提供的一種生成增量更新文件的觸發(fā)機(jī)制示意圖;
圖5是本發(fā)明實(shí)施例提供的一種增量更新文件的生成方法示意圖;
圖6是本發(fā)明實(shí)施例提供的一種更新文件格式示意圖;
圖7是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置框圖;
圖8是本發(fā)明實(shí)施例提供的一種服務(wù)器800的結(jié)構(gòu)示意圖;
圖9是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖;
圖10是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置的結(jié)構(gòu)示意圖;
圖11是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖;
圖12是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新系統(tǒng)示意圖,如圖1所示,所述系統(tǒng)包括:數(shù)據(jù)更新配置端101、第三方服務(wù)器102及應(yīng)用客戶端103。
數(shù)據(jù)更新配置端101,用于應(yīng)用客戶端提供商向第三方服務(wù)器上傳的該應(yīng)用客戶端的每個(gè)版本數(shù)據(jù),在上傳該每個(gè)版本數(shù)據(jù)的過程中,該數(shù)據(jù)更新配置端101還用于配置該每個(gè)版本數(shù)據(jù)的相關(guān)信息,例如,配置該每個(gè)版本數(shù)據(jù)的數(shù)據(jù)包列表。
第三方服務(wù)器102,該第三方服務(wù)器為獨(dú)立于應(yīng)用客戶端與應(yīng)用服務(wù)器的另一服務(wù)器,具體地,該第三方服務(wù)器可以為任一應(yīng)用發(fā)布平臺(tái)的服務(wù)器,例如,應(yīng)用寶服務(wù)器、應(yīng)用商店服務(wù)器等。該第三方服務(wù)器102用于執(zhí)行本發(fā)明提供任一數(shù)據(jù)更新方法,該第三方服務(wù)器102包括云存儲(chǔ)裝置、增量更新文件生成裝置、數(shù)據(jù)更新裝置、數(shù)據(jù)更新接口等部分。該云存儲(chǔ)裝置用于接收并保存應(yīng)用客戶端提供商上傳的應(yīng)用客戶端的每個(gè)版本數(shù)據(jù)及相應(yīng)的配置信息,該增量更新文件生成裝置用于基于該應(yīng)用客戶端的每個(gè)版本數(shù)據(jù)生成增量更新文件,該數(shù)據(jù)更新裝置用于根據(jù)應(yīng)用客戶端的數(shù)據(jù)更新請求執(zhí)行數(shù)據(jù)更新流程,數(shù)據(jù)更新接口用于與應(yīng)用客戶端進(jìn)行數(shù)據(jù)交互。
應(yīng)用客戶端103,在本發(fā)明實(shí)施例中,該應(yīng)用客戶端接入有該第三方服務(wù)器102提供的sdk(softwaredevelopmentkit,軟件開發(fā)工具包),該sdk封裝有數(shù)據(jù)更新接口,用于與該第三方服務(wù)器102進(jìn)行數(shù)據(jù)交互,以完成該應(yīng)用客戶端103的數(shù)據(jù)更新。
圖2是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖。參見圖2,該方法包括:
201、為應(yīng)用客戶端提供軟件開發(fā)工具包,該軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口。
202、基于該數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求。
203、根據(jù)該數(shù)據(jù)更新請求,獲取該應(yīng)用客戶端的更新文件。
204、向該應(yīng)用客戶端發(fā)送該更新文件,使得該應(yīng)用客戶端基于該更新文件,進(jìn)行數(shù)據(jù)更新。
采用這樣的數(shù)據(jù)更新方法,不僅使得應(yīng)用客戶端無需重新安裝即可更新全部或部分?jǐn)?shù)據(jù),并且降低了開發(fā)和維護(hù)成本,提高了數(shù)據(jù)更新的便捷性。
在本發(fā)明的一個(gè)實(shí)施例中,該根據(jù)該數(shù)據(jù)更新請求,獲取該應(yīng)用客戶端的更新文件包括:根據(jù)該應(yīng)用客戶端的數(shù)據(jù)更新請求,判斷是否已生成該應(yīng)用客戶端的增量更新文件;如果已生成該增量更新文件,則將該增量更新文件獲取為該應(yīng)用客戶端的更新文件;如果未生成該增量更新文件,則根據(jù)在未生成該增量更新文件之前所接收到的數(shù)據(jù)更新請求數(shù)量獲取該應(yīng)用客戶端的更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,該根據(jù)在未生成該增量更新文件之前所接收到的該數(shù)據(jù)更新請求數(shù)量獲取該應(yīng)用客戶端的更新文件包括:判斷該數(shù)據(jù)更新請求數(shù)量是否到達(dá)預(yù)設(shè)數(shù)值;如果該數(shù)據(jù)更新請求數(shù)量達(dá)到預(yù)設(shè)數(shù)值,則生成該增量更新文件,將該生成后的增量更新文件獲取為該應(yīng)用客戶端的更新文件;如果該請求數(shù)量達(dá)未到預(yù)設(shè)數(shù)值,則將全量更新文件獲取為該應(yīng)用客戶端的更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)該應(yīng)用客戶端的數(shù)據(jù)更新請求,判斷是否已生成該應(yīng)用客戶端的增量更新文件之前,該方法還包括:當(dāng)接收到應(yīng)用客戶端提供商的生成指令時(shí),則生成該應(yīng)用客戶端的增量更新文件,該生成指令用于指示生成從上一版本更新至最新版本的增量更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)該數(shù)據(jù)更新請求,獲取該應(yīng)用客戶端的更新文件包括:獲取應(yīng)用客戶端提供商上傳的該應(yīng)用客戶端的最新版本數(shù)據(jù),該最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,該第一數(shù)據(jù)包信息列表用于指示該最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);獲取該應(yīng)用客戶端的歷史版本數(shù)據(jù),該歷史版本數(shù)據(jù)攜帶第二數(shù)據(jù)包信息列表,該第二數(shù)據(jù)包信息列表用于指示該歷史版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);將該第一數(shù)據(jù)包信息列表和該第二數(shù)據(jù)包信息列表中具有相同數(shù)據(jù)包標(biāo)識(shí)的數(shù)據(jù)包之間進(jìn)行差分處理,生成第一更新數(shù)據(jù)包;將該第一數(shù)據(jù)包信息列表中未存在于該第二數(shù)據(jù)包信息列表中的數(shù)據(jù)包,作為第二更新數(shù)據(jù)包;基于該第一更新數(shù)據(jù)包及第二更新數(shù)據(jù)包,生成該應(yīng)用客戶端的更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,該更新文件包括進(jìn)行差分處理時(shí)所采用的差分算法信息。
在本發(fā)明的一個(gè)實(shí)施例中,向該應(yīng)用客戶端發(fā)送該更新文件,使得該應(yīng)用客戶端基于該更新文件,進(jìn)行數(shù)據(jù)更新包括:向該應(yīng)用客戶端發(fā)送增量更新文件,使得該應(yīng)用客戶端基于該軟件開發(fā)工具包,根據(jù)該增量更新文件生成全量更新文件,基于該全量更新文件,進(jìn)行數(shù)據(jù)更新。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本公開的可選實(shí)施例,在此不再一一贅述。
圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖。參見圖3,該方法包括以下步驟。
301、為應(yīng)用客戶端提供軟件開發(fā)工具包,該軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口。
為了降低應(yīng)用的開發(fā)成本和維護(hù)成本,本發(fā)明實(shí)施中,在開發(fā)過程中,無需獨(dú)立開發(fā)應(yīng)用客戶端的數(shù)據(jù)更新模塊,僅需要接入該第三方服務(wù)器提供的sdk(softwaredevelopmentkit,軟件開發(fā)工具包),相應(yīng)地,在維護(hù)過程中,無需應(yīng)用服務(wù)器提供數(shù)據(jù)更新服務(wù),該應(yīng)用客戶端通過該sdk與第三方服務(wù)器進(jìn)行數(shù)據(jù)交互進(jìn)而實(shí)現(xiàn)數(shù)據(jù)更新。
在本發(fā)明實(shí)施例中,該sdk封裝有數(shù)據(jù)更新接口,該數(shù)據(jù)更新接口用于應(yīng)用客戶端與第三方服務(wù)器進(jìn)行數(shù)據(jù)交互。需要說明的是,在實(shí)際應(yīng)用中,該sdk還可以具有其他的功能,例如,收集應(yīng)用客戶端版本信息等,本發(fā)明對該sdk的其他功能不作具體限定。
302、基于該數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求。
在本發(fā)明實(shí)施例中,sdk收集應(yīng)用客戶端當(dāng)前的版本信息,并將該版本信息攜帶于該數(shù)據(jù)更新請求,將該數(shù)據(jù)更新請求通過該數(shù)據(jù)更新端口發(fā)送至上述第三方服務(wù)器,使得該第三方服務(wù)器接收到該數(shù)據(jù)更新請求之后,根據(jù)該應(yīng)用客戶端當(dāng)前的版本信息獲取應(yīng)用客戶端需要的更新文件。上述數(shù)據(jù)更新請求用于請求更新應(yīng)用客戶端的全部或部分?jǐn)?shù)據(jù),例如,對于詞典客戶端,可以請求更新部分的詞庫數(shù)據(jù)等。
需要說明的是,在本發(fā)明實(shí)施例中,可以在每次啟動(dòng)應(yīng)用客戶端時(shí)觸發(fā)該 數(shù)據(jù)更新請求,也可以在其他時(shí)機(jī)觸發(fā)該數(shù)據(jù)更新請求,例如,周期性觸發(fā)該數(shù)據(jù)更新請求,本發(fā)明實(shí)施對觸發(fā)數(shù)據(jù)更新請求的具體時(shí)機(jī)不作限定。采用這樣的數(shù)據(jù)更新方法,相比于由用戶主動(dòng)下載安裝包的數(shù)據(jù)更新方法,不僅實(shí)現(xiàn)了更新應(yīng)用客戶端的部分?jǐn)?shù)據(jù)的功能,并且減少了用戶的操作,提高了數(shù)據(jù)更新的便捷性。
303、根據(jù)該應(yīng)用客戶端的數(shù)據(jù)更新請求,判斷是否已生成該應(yīng)用客戶端的增量更新文件;如果已生成該增量更新文件,則將該增量更新文件獲取為該應(yīng)用客戶端的更新文件;如果未生成該增量更新文件,則執(zhí)行步驟304。
該增量更新文件是指針對最新版本數(shù)據(jù)與歷史版本數(shù)據(jù)之間的增量生成的更新文件,與之相對應(yīng)的是全量更新文件,該全量更新文件是指針對最新版本數(shù)據(jù)的全部數(shù)據(jù)生成的更新文件。采用增量更新文件進(jìn)行數(shù)據(jù)更新,有利于減小更新文件大小,節(jié)省傳輸資源。為了優(yōu)先采用增量更新文件進(jìn)行數(shù)據(jù)更新,而在沒有可用的增量更新文件時(shí)也能夠使用全量更新文件進(jìn)行數(shù)據(jù)更新,本發(fā)明實(shí)施例中,在接收到數(shù)據(jù)更新請求之后,判斷當(dāng)前是否已經(jīng)生成有增量更新文件,如果已經(jīng)生成該增量更新文件,則采用該增量更新文件進(jìn)行數(shù)據(jù)更新。
304、判斷該數(shù)據(jù)更新請求數(shù)量是否到達(dá)預(yù)設(shè)數(shù)值;如果該數(shù)據(jù)更新請求數(shù)量達(dá)到預(yù)設(shè)數(shù)值,則執(zhí)行步驟305;如果該請求數(shù)量達(dá)未到預(yù)設(shè)數(shù)值,則將全量更新文件獲取為該應(yīng)用客戶端的更新文件。
本發(fā)明認(rèn)識(shí)到,更新請求的數(shù)量表明了用戶群體對數(shù)據(jù)更新業(yè)務(wù)的需求程度,例如,對于更新請求a和更新請求b,如果收到100次更新請求a而收到5更新請求b,則說明更新請求a對應(yīng)的數(shù)據(jù)更新業(yè)務(wù)需求程度更高。為了能夠根據(jù)數(shù)據(jù)更新業(yè)務(wù)的需求程度,確定是否需要生成增量更新文件,在本發(fā)明實(shí)施中,根據(jù)在未生成該增量更新文件之前所接收到的所述數(shù)據(jù)更新請求數(shù)量確定是否觸發(fā)生成增量更新文件。具體地,如圖4所示,對于每次接收到一應(yīng)用客戶端的數(shù)據(jù)更新請求時(shí),如果此時(shí)沒有對應(yīng)的增量更新文件,則統(tǒng)計(jì)該數(shù)據(jù)更新請求數(shù)量加1,完成該統(tǒng)計(jì)后,判斷該數(shù)據(jù)更新請求數(shù)量是否到達(dá)預(yù)設(shè)數(shù)值,如果該數(shù)據(jù)更新請求數(shù)量達(dá)到預(yù)設(shè)數(shù)值,則生成該增量更新文件,如果否,則不進(jìn)行增量更新文件的生成過程。在實(shí)際應(yīng)用中,該預(yù)設(shè)數(shù)值可以根據(jù)實(shí)際情況進(jìn)行設(shè)定,本發(fā)明實(shí)施對此不作具體限定。采用這樣的觸發(fā)機(jī)制,使得僅對需求程度高的數(shù)據(jù)更新請求進(jìn)行增量更新文件的生成,進(jìn)而節(jié)省了生成增量更 新文件所消耗的處理資源。
為了在上述觸發(fā)機(jī)制的基礎(chǔ)上,還可以根據(jù)應(yīng)用客戶端提供商的需要觸發(fā)增量更新文件的生成,如圖4所示,在本發(fā)明實(shí)施中,當(dāng)接收到應(yīng)用客戶端提供商的生成指令時(shí),則生成該應(yīng)用客戶端的增量更新文件,該生成指令用于指示生成從上一版本更新至最新版本的增量更新文件。具體地,該生成指令可以由應(yīng)用客戶端提供商上傳更新數(shù)據(jù)的操作進(jìn)而觸發(fā),在實(shí)際應(yīng)用中,該生成指令還可以采用其他的方式觸發(fā),例如,應(yīng)用客戶端提供商對生成選項(xiàng)進(jìn)行選定進(jìn)而觸發(fā)該生成指令,本發(fā)明對觸發(fā)該生成指令的具體方式不作限定。
305、根據(jù)應(yīng)用客戶端提供商上傳的該應(yīng)用客戶端的最新版本數(shù)據(jù),生成該增量更新文件,將該生成后的增量更新文件獲取為該應(yīng)用客戶端的更新文件。
為了使得上述增量更新文件的大小更小,本發(fā)明實(shí)施提供一種具體地增量更新文件生成方法,包括:
獲取應(yīng)用客戶端提供商上傳的該應(yīng)用客戶端的最新版本數(shù)據(jù),如圖5所示,該最新版本數(shù)據(jù)包括多個(gè)數(shù)據(jù)包,該最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,該第一數(shù)據(jù)包信息列表用于指示該最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);獲取該應(yīng)用客戶端的歷史版本數(shù)據(jù),如圖5所示,該歷史版本數(shù)據(jù)包括多個(gè)數(shù)據(jù)包,該歷史版本數(shù)據(jù)攜帶第二數(shù)據(jù)包信息列表,該第二數(shù)據(jù)包信息列表用于指示該歷史版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);將該第一數(shù)據(jù)包信息列表和該第二數(shù)據(jù)包信息列表中具有相同數(shù)據(jù)包標(biāo)識(shí)的數(shù)據(jù)包之間進(jìn)行差分處理,生成第一更新數(shù)據(jù)包;將該第一數(shù)據(jù)包信息列表中未存在于該第二數(shù)據(jù)包信息列表中的數(shù)據(jù)包,作為第二更新數(shù)據(jù)包;基于該第一更新數(shù)據(jù)包及第二更新數(shù)據(jù)包,生成該應(yīng)用客戶端的更新文件。需要說明的是,該歷史版本數(shù)據(jù)可以為針對該應(yīng)用客戶端所有的多個(gè)歷史版本數(shù)據(jù),在實(shí)際應(yīng)用中,通過遍歷該所有的多個(gè)歷史版本數(shù)據(jù),將該第一數(shù)據(jù)包信息列表和任一歷史版本數(shù)據(jù)的第二數(shù)據(jù)包信息列表中具有相同數(shù)據(jù)包標(biāo)識(shí)的數(shù)據(jù)包之間進(jìn)行差分處理,而將第一數(shù)據(jù)包信息列表中未存在于所有該第二數(shù)據(jù)包信息列表中的數(shù)據(jù)包,作為第二更新數(shù)據(jù)包,本發(fā)明對歷史版本數(shù)據(jù)的數(shù)量不作具體限定。
采用這樣的增量更新文件生成方法,將最新版本數(shù)據(jù)中的每個(gè)數(shù)據(jù)包分別與歷史版本數(shù)據(jù)中對應(yīng)的數(shù)據(jù)包進(jìn)行差分處理,相比于對最近版本數(shù)據(jù)與歷史版本數(shù)據(jù)整體進(jìn)行差分處理的增量更新文件生成方法,減小了生成增量更新文 件的大小,節(jié)省了增量文件的傳輸成本。
如圖6所示,采用上述方法生成的更新文件為指定格式,在該指定格式中包括更新文件頭、更新文件尾和至少一個(gè)數(shù)據(jù)包。該更新文件頭包括應(yīng)用程序名、對應(yīng)新舊版本號(hào)、數(shù)據(jù)包個(gè)數(shù)、文件大小及進(jìn)行差分處理時(shí)所采用的差分算法信息。在實(shí)際應(yīng)用中,可以根據(jù)實(shí)際情況選擇該差分算法,例如,bsdiff(binarydiff,二進(jìn)制差量)算法等,本發(fā)明對具體采用的差分算法不作限定。該更新文件尾包括校驗(yàn)信息等內(nèi)容,該至少一個(gè)數(shù)據(jù)包中的每個(gè)數(shù)據(jù)包可以是上述第一更新數(shù)據(jù)包或第二更新數(shù)據(jù)。
306、向該應(yīng)用客戶端發(fā)送該更新文件,使得該應(yīng)用客戶端基于該更新文件,進(jìn)行數(shù)據(jù)更新。
在本發(fā)明實(shí)施例中,在獲取該應(yīng)用客戶端的更新文件之后,生成該更新文件的下載地址,將該下載地址及更新文件信息發(fā)送至應(yīng)用客戶端,當(dāng)該應(yīng)用客戶端選擇執(zhí)行更新時(shí),基于該下載地址向該應(yīng)用客戶端發(fā)送該更新文件。
當(dāng)所述更新文件為全量更新文件時(shí),應(yīng)用所述全量更新文件替換本地客戶端數(shù)據(jù),基于該全量更新文件進(jìn)行數(shù)據(jù)更新。當(dāng)該更新文件為增量更新文件時(shí),向該應(yīng)用客戶端發(fā)送該增量更新文件,使得該應(yīng)用客戶端基于sdk,根據(jù)該增量更新文件生成全量更新文件,基于該全量更新文件,進(jìn)行數(shù)據(jù)更新。具體地,該sdk根據(jù)更新文件的文件頭信息,判斷更新文件是否為增量更新文件;當(dāng)是增量更新文件時(shí),從該文件頭中提取進(jìn)行差分處理時(shí)所采用的差分算法信息;根據(jù)該差分算法生成全量更新文件。
本發(fā)明實(shí)施提供的數(shù)據(jù)更新方法,通過為應(yīng)用客戶端提供軟件開發(fā)工具包,該軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;基于該數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求;根據(jù)該數(shù)據(jù)更新請求,獲取該應(yīng)用客戶端的更新文件;向該應(yīng)用客戶端發(fā)送該更新文件,使得該應(yīng)用客戶端基于該更新文件,進(jìn)行數(shù)據(jù)更新。采用這樣的數(shù)據(jù)更新方法,不僅使得應(yīng)用客戶端無需重新安裝即可更新全部或部分?jǐn)?shù)據(jù),并且降低了應(yīng)用的開發(fā)和維護(hù)成本,提高了數(shù)據(jù)更新的便捷性。
圖7是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置的框圖。如圖7所示,所述裝置包括:數(shù)據(jù)更新接口模塊701、接收模塊702、獲取模塊703、發(fā)送模塊704。
數(shù)據(jù)更新接口模塊701,用于為應(yīng)用客戶端提供軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
接收模塊702,用于基于所述數(shù)據(jù)更新接口,接收應(yīng)用客戶端的數(shù)據(jù)更新請求;
獲取模塊703,用于根據(jù)所述數(shù)據(jù)更新請求,獲取所述應(yīng)用客戶端的更新文件;
發(fā)送模塊704,用于向所述應(yīng)用客戶端發(fā)送所述更新文件,使得所述應(yīng)用客戶端基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取模塊用于:根據(jù)所述應(yīng)用客戶端的數(shù)據(jù)更新請求,判斷是否已生成所述應(yīng)用客戶端的增量更新文件;如果已生成所述增量更新文件,則將所述增量更新文件獲取為所述應(yīng)用客戶端的更新文件;如果未生成所述增量更新文件,則根據(jù)在未生成所述增量更新文件之前所接收到的數(shù)據(jù)更新請求數(shù)量獲取所述應(yīng)用客戶端的更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取模塊用于:判斷所述數(shù)據(jù)更新請求數(shù)量是否到達(dá)預(yù)設(shè)數(shù)值;如果所述數(shù)據(jù)更新請求數(shù)量達(dá)到預(yù)設(shè)數(shù)值,則生成所述增量更新文件,將所述生成后的增量更新文件獲取為所述應(yīng)用客戶端的更新文件;如果所述請求數(shù)量達(dá)未到預(yù)設(shè)數(shù)值,則將全量更新文件獲取為所述應(yīng)用客戶端的更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)所述獲取模塊用于:當(dāng)接收到應(yīng)用客戶端提供商的生成指令時(shí),則生成所述應(yīng)用客戶端的增量更新文件,所述生成指令用于指示生成從上一版本更新至最新版本的增量更新文件。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取裝置用于:獲取應(yīng)用客戶端提供商上傳的所述應(yīng)用客戶端的最新版本數(shù)據(jù),所述最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,所述第一數(shù)據(jù)包信息列表用于指示所述最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);獲取所述應(yīng)用客戶端的歷史版本數(shù)據(jù),所述歷史版本數(shù)據(jù)攜帶第二數(shù)據(jù)包信息列表,所述第二數(shù)據(jù)包信息列表用于指示所述歷史版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí);將所述第一數(shù)據(jù)包信息列表和所述第二數(shù)據(jù)包信息列表中具有相同數(shù)據(jù)包標(biāo)識(shí)的數(shù)據(jù)包之間進(jìn)行差分處理,生成第一更新數(shù)據(jù)包;將所述第一數(shù)據(jù)包信息列表中未存在于所述第二數(shù)據(jù)包信息列表中的數(shù)據(jù)包,作為第二更新數(shù)據(jù)包;基于所述第一更新數(shù)據(jù)包及第二更新數(shù)據(jù)包,生成所述應(yīng)用客戶端的更 新文件。
在本發(fā)明的一個(gè)實(shí)施例中,所述更新文件還包括進(jìn)行差分處理時(shí)所采用的差分算法信息。
在本發(fā)明的一個(gè)實(shí)施例中,所述發(fā)送模塊用于:向所述應(yīng)用客戶端發(fā)送增量更新文件,使得所述應(yīng)用客戶端基于所述軟件開發(fā)工具包,根據(jù)所述增量更新文件生成全量更新文件,基于所述全量更新文件,進(jìn)行數(shù)據(jù)更新。
本實(shí)施例提供了一種服務(wù)器,該服務(wù)器可以用于執(zhí)行上述各個(gè)實(shí)施例中提供的數(shù)據(jù)更新方法。參照圖8,服務(wù)器800包括處理組件822,其進(jìn)一步包括一個(gè)或多個(gè)處理器,以及由存儲(chǔ)器832所代表的存儲(chǔ)器資源,用于存儲(chǔ)可由處理組件822的執(zhí)行的指令,例如應(yīng)用客戶端程序。存儲(chǔ)器832中存儲(chǔ)的應(yīng)用客戶端程序可以包括一個(gè)或一個(gè)以上的每一個(gè)對應(yīng)于一組指令的模塊。此外,處理組件822被配置為執(zhí)行指令,以執(zhí)行上述任一種數(shù)據(jù)更新方法。
服務(wù)器800還可以包括一個(gè)電源組件824被配置為執(zhí)行服務(wù)器800的電源管理,一個(gè)有線或無線網(wǎng)絡(luò)接口850被配置為將服務(wù)器800連接到網(wǎng)絡(luò),和一個(gè)輸入輸出(i/o)接口858。服務(wù)器800可以操作基于存儲(chǔ)在存儲(chǔ)器832的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。
圖9是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖。參見圖9,所述方法包括:
901、獲取第三方服務(wù)器提供的軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口。
902、基于所述數(shù)據(jù)更新接口,向所述第三方服務(wù)器發(fā)送數(shù)據(jù)更新請求。
903、接收所述第三方服務(wù)器返回的更新文件。
904、基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
可選地,基于所述更新文件,進(jìn)行數(shù)據(jù)更新包括:當(dāng)所述更新文件為全量更新文件時(shí),應(yīng)用所述全量更新文件替換本地客戶端數(shù)據(jù);或,當(dāng)所述更新文件為增量更新文件時(shí),將所述增量更新文件與本地客戶端數(shù)據(jù)合并成全量更新文件。
圖10是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置的結(jié)構(gòu)示意圖。參見圖10,所述裝置包括:
獲取模塊1001,用于獲取第三方服務(wù)器提供的軟件開發(fā)工具包,所述軟件開發(fā)工具包用于封裝數(shù)據(jù)更新接口;
發(fā)送模塊1002,用于基于所述數(shù)據(jù)更新接口,向所述第三方服務(wù)器發(fā)送數(shù)據(jù)更新請求;
接收模塊1003,用于接收所述第三方服務(wù)器返回的更新文件;
更新模塊1004,用于基于所述更新文件,進(jìn)行數(shù)據(jù)更新。
可選地,所述更新模塊用于:
當(dāng)所述更新文件為全量更新文件時(shí),應(yīng)用所述全量更新文件替換本地客戶端數(shù)據(jù);或,當(dāng)所述更新文件為增量更新文件時(shí),將所述增量更新文件與本地客戶端數(shù)據(jù)合并成全量更新文件。
圖11是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖。參見圖11,所述方法包括:
1101、向第三方服務(wù)器發(fā)送應(yīng)用客戶端的最新版本數(shù)據(jù),所述最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,所述第一數(shù)據(jù)包信息列表用于指示所述最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí),由所述第三方服務(wù)器根據(jù)所述應(yīng)用客戶端的歷史版本數(shù)據(jù),生成所述應(yīng)用客戶端的更新文件。
可選地,向第三方服務(wù)器發(fā)送應(yīng)用客戶端的最新版本數(shù)據(jù)之后,所述方法還包括:
向所述第三方服務(wù)器發(fā)送生成指令,使得所述第三方服務(wù)器生成所述應(yīng)用客戶端的增量更新文件,所述生成指令用于指示生成從上一版本更新至最新版本的增量更新文件。
圖12是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新裝置的結(jié)構(gòu)示意圖。參見圖12,所述裝置包括:
發(fā)送模塊1201,用于向第三方服務(wù)器發(fā)送應(yīng)用客戶端的最新版本數(shù)據(jù),所述最新版本數(shù)據(jù)攜帶第一數(shù)據(jù)包信息列表,所述第一數(shù)據(jù)包信息列表用于指示所述最新版本數(shù)據(jù)所包括的數(shù)據(jù)包標(biāo)識(shí),由所述第三方服務(wù)器根據(jù)所述應(yīng)用客戶端的歷史版本數(shù)據(jù),生成所述應(yīng)用客戶端的更新文件。
可選地,所述發(fā)送模塊1201還用于向所述第三方服務(wù)器發(fā)送生成指令,使 得所述第三方服務(wù)器生成所述應(yīng)用客戶端的增量更新文件,所述生成指令用于指示生成從上一版本更新至最新版本的增量更新文件。
以上該僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。