您當前的位置:首頁 > 詩詞

軟體的「向前相容」和「向後相容」如何區分?

作者:由 知乎使用者 發表于 詩詞時間:2016-06-08

軟體的「向前相容」和「向後相容」如何區分?知乎使用者2016-06-08 20:01:47

前 forward 未來拓展。

後 backward 相容以前。

記住單詞就不會搞混了吧。

軟體的「向前相容」和「向後相容」如何區分?知乎使用者2016-06-08 20:34:42

在網路協議中,這種向前相容(Forwards Compatibility)和向後相容(Backwards Compatibility)的例子是極多的,一個協議往往涉及到多個RFC文件,舉個TCP協商的例子來說明:

TCP協議本身是由RFC793定義的,初期的協議是存在很多不足的,比如SACK特性(RFC2018補充),下面來說明向前向後相容性。

試想一下這樣的場景:

一臺僅支援RFC793的裝置A和同時支援RFC793與RFC2018的裝置B通訊,這兩臺裝置能夠正常通訊的。

向前相容:可以說RFC793是向前相容的,對於他不能識別的協商選項,他不認為是錯誤的,而是不處理。

向後相容:RFC2018是向後相容的,因為其定義就是基於RFC793的。

可以看到向前相容的重要條件:

對擴充套件開放,也就是要預留擴充套件的途徑,試想一下如果RFC793直接TCP協議頭固定了,那麼想要支援擴充套件就非常困難了。

————————————————————————————

向前相容和向後相容的中文概念有些亂,一開始搞反了,直接看英文更能明白。

軟體的「向前相容」和「向後相容」如何區分?薛瑄2017-01-12 18:52:40

討論相容性的時候,要弄清楚,是說系統相容性還是應用軟體的相容性。

@vczh 說的是系統的相容性,

向後相容( Backwards compatibility ) windows10系統能相容執行Windows 3。1開發的程式 ,win10具有向後相容性

向前相容( Forward compatibility ) Windows 3。1能相容執行Windows 10開發的程式 ,Windows 3。1具有向前相容性

軟體相容性的場景,以android開發為例

向後相容( Backwards compatibility )使用API 23 的sdk,使用相容包開發的app,可以讓它執行在更低版本的android系統上。 這樣的app具有向後相容性

向前相容( Forward compatibility )由於系統都是向後相容的,所以app就不需要向前相容了

軟體的「向前相容」和「向後相容」如何區分?葉劍飛2018-11-03 17:44:18

軟體開發行業的「前後」是按照英語習慣來的,不是按照漢語習慣來的。按照英語習慣,

「向前進」(forward)指未來,「向後退」(backward)指過去

。注意要把「前」「後」分別理解成「前進」和「後退」,

不可以

理解成「從前」和「以後」。

backward compatibility (向後相容, 回溯相容) = downward compatibility (向下相容) = 向過去相容,即現在設計的軟體要考慮舊版本的資料還能不能用,比如在開發Office 2007的時候,要考慮如何開啟Office 2003的doc/xls/ppt檔案,而不能僅僅只能開啟docx/xlsx/pptx檔案。

forward compatibility (向前相容, 前瞻相容) = upward compatibility (向上相容) = 向未來相容,即現在設計的軟體要考慮未來還能不能用。比如保留幾個欄位,留給未來新填寫新資料。

軟體的「向前相容」和「向後相容」如何區分?哇哈哈2018-12-28 10:39:31

參見 @葉劍飛 神童,其講解最具體 和 簡單深刻,一語點破本質