首先軟件更新概覽概覽
軟件 誕生后(第一次編寫和發(fā)布),將會(huì)有持續(xù)的維護(hù)和改進(jìn)??赡苁切迯?fù)缺陷,可能是優(yōu)化舊功能模塊adobe軟件怎樣升級(jí),也可能是添加新功能??傊?a href='http://66527.cn/'>經(jīng)典的噴濺組合筆刷,既然一個(gè)軟件誕生了,就會(huì)有不斷的更新,軟件開(kāi)發(fā)者有必要以某種方式把這個(gè)更新帶給用戶。
在平臺(tái)上acdsee8.0中文版,軟件被封裝成EXE文件格式,用戶可以通過(guò)網(wǎng)站下載或光盤安裝。在Linux平臺(tái)上,可能是deb或者rpm等。在蘋果的mac上,這個(gè)文件格式是dmg。iOS 上的 APK,iOS 上的 pkg。更多可以參考。
軟件安裝到用戶的操作系統(tǒng)后,如果軟件的作者更新了軟件并發(fā)布了新版本,應(yīng)該如何通知用戶,以便用戶使用最新的<@ 版本的軟件 呢?有幾種方法:
給用戶發(fā)送郵件,郵件中包含新版本軟件的下載鏈接,用戶點(diǎn)擊鏈接下載安裝替換舊版本。
軟件自帶檢測(cè)更新功能。
這需要軟件開(kāi)發(fā)者創(chuàng)建服務(wù)器,用戶每次打開(kāi)軟件,軟件都會(huì)自動(dòng)查詢服務(wù)器最新版本,并與本地版本進(jìn)行對(duì)比。如果服務(wù)器端說(shuō)有新版本,軟件客戶端會(huì)彈出對(duì)話框提示用戶,允許用戶直接下載或者打開(kāi)瀏覽器頁(yè)面到指定頁(yè)面下載新版本申請(qǐng)。如QQ、Adobe等。
軟件發(fā)布到 App Store 或操作系統(tǒng)支持的 軟件 更新通道。比如mac上的App Store,包管理器,以及大量的國(guó)內(nèi)市場(chǎng)渠道。軟件開(kāi)發(fā)者只需要將新版本發(fā)布到App Store,mac上的App Store會(huì)幫助軟件監(jiān)控新版本adobe軟件怎樣升級(jí),如果軟件有新版本版本發(fā)布,會(huì)提醒用戶更新。
軟件更新后的基礎(chǔ)模型為:
探測(cè)
|
下載
|
壓合(覆蓋)
新的挑戰(zhàn)
在古代,軟件的開(kāi)發(fā)周期很長(zhǎng),軟件的更新頻率非常稀少,大概幾個(gè)月一次。所以維護(hù)一個(gè)軟件更新服務(wù)比較簡(jiǎn)單,就是提醒用戶去下載新版本軟件的安裝文件覆蓋安裝。一些軟件 甚至需要在安裝新版本之前卸載舊版本軟件。比如很多銀行軟件和司機(jī)軟件。
然而,軟件發(fā)展時(shí)代已經(jīng)進(jìn)入互聯(lián)網(wǎng),尤其是移動(dòng)互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,產(chǎn)品經(jīng)理提倡快速迭代。軟件 的開(kāi)發(fā)周期大大縮短??焖佟㈩l繁的 軟件 發(fā)布已成為主流開(kāi)發(fā)模式。這給 軟件 更新服務(wù)帶來(lái)了新的挑戰(zhàn)。原來(lái)的情況下,每隔幾個(gè)月更新一次,不會(huì)頻繁打擾用戶?,F(xiàn)在,可能每周都有更新。如果還是用原來(lái)的模型,用戶每周去下載一個(gè)新的安裝文件會(huì)很麻煩。原始安裝文件可能非常大。對(duì)于移動(dòng)平臺(tái),應(yīng)用程序在 . 顯然,它不會(huì)給用戶帶來(lái)良好的升級(jí)體驗(yàn)。同時(shí),需要注意的是,由于快速迭代的開(kāi)發(fā)模式,不同周版本之間的差異并不是很大。比如新版本可能只是改變Logo圖片,或者增加一個(gè)小功能,修改一行代碼。用戶需要升級(jí)下載的安裝包,相鄰版本可能有70%的內(nèi)容相同,只有小部分內(nèi)容不同。在這種情況下,沒(méi)有必要用那么大的 下載 文件來(lái)浪費(fèi)用戶和開(kāi)發(fā)人員的帶寬。而相鄰的版本可能有70%的內(nèi)容相同,只有一小部分內(nèi)容不同。在這種情況下,沒(méi)有必要用那么大的 下載 文件來(lái)浪費(fèi)用戶和開(kāi)發(fā)人員的帶寬。而相鄰的版本可能有70%的內(nèi)容相同,只有一小部分內(nèi)容不同。在這種情況下,沒(méi)有必要用那么大的 下載 文件來(lái)浪費(fèi)用戶和開(kāi)發(fā)人員的帶寬。
所以這里我們可以引入一個(gè)算法,可以計(jì)算出新版軟件安裝包和老版本的差異,我們把這個(gè)過(guò)程叫做diff,diff得到的結(jié)果叫做delta。你需要下載這個(gè)delta文件到你的電腦或者手機(jī)上,然后用一種方法把delta和用戶本地的舊版本軟件結(jié)合起來(lái)生成一個(gè)新版本的軟件,這個(gè)我們稱之為補(bǔ)丁的過(guò)程。這里需要生成的新版本和單獨(dú)安裝新版本的效果是一樣的。
所以我們的任務(wù)就變成了尋找一種高效的diff/patch算法,使中間傳輸?shù)膁elta文件盡可能的小。
下載 較小的文件大小帶來(lái)了兩個(gè)好處:
為用戶和軟件開(kāi)發(fā)人員節(jié)省帶寬成本。這對(duì)于互聯(lián)網(wǎng)訪問(wèn)成本高的移動(dòng)環(huán)境中的用戶來(lái)說(shuō)意義重大。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),在移動(dòng)時(shí)代,用戶基數(shù)巨大,往往在數(shù)千萬(wàn)量級(jí),對(duì)單次傳輸?shù)奈募笮∩约觾?yōu)化就會(huì)大大降低帶寬成本。文件越小,下載時(shí)間越短,用戶升級(jí)體驗(yàn)越流暢。將大大提高軟件的升級(jí)率。對(duì)于游戲、瀏覽器等有特殊需要在短時(shí)間內(nèi)提升升級(jí)率的軟件,大部分用戶可以在較短時(shí)間內(nèi)升級(jí)到新版服務(wù)。一方面降低了老版本服務(wù)的研發(fā)和維護(hù)成本。另一方面,能夠快速幫助用戶升級(jí)將提高軟件的安全性。團(tuán)隊(duì)為此開(kāi)發(fā)了一種算法,專門優(yōu)化了 diff 過(guò)程,減小了 delta 文件的大小,使 軟件 可以快速更新并保持安全。增量更新
我們將上一節(jié)提到的diff/patch模型稱為增量更新模式,即用戶不需要下載全新版本軟件,只需要增量部分下載。
這種模式的簡(jiǎn)單形式可以用兩個(gè)公式表示:
server:
delta = diff(original, update)
transmit delta
client:
receive delta
update = patch(original, delta)
根據(jù)不同平臺(tái)上的 軟件 文件格式,可能有幾種不同的 diff/patch 算法。
比較成熟的算法是/。這種算法的優(yōu)點(diǎn)是非常簡(jiǎn)單,不管文件的內(nèi)部格式如何矢量花紋筆刷下載2,完全把文件當(dāng)作二進(jìn)制處理。
還有其他方法可以對(duì)平臺(tái)上的 EXE 文件進(jìn)行比較。
后面我們會(huì)介紹一個(gè)更深入的考慮文件內(nèi)部格式的算法,用于瀏覽器的版本更新。該算法的增量文件差異是結(jié)果的 10%,將中間結(jié)果減少了 90%!菅井 :)
引用
[1]:“”
[2]::“:”
[3]:差異“差異/補(bǔ)丁”
[4]::“”