SDK 和 API 的區別是什麼?

責編:中文妹 | 來源:簡道雲

鏈接:zhihu.com/question/21691705/answer/770586138

大家好,我是中文妹。

不知道區別的人,大概率是你還沒搞懂 API、SDK 是什麼。

講個小故事:

研發人員 A 開發了軟件 A,研發人員 B 正在研發軟件 B。

有一天,研發人員 B 想要調用軟件 A 的部分功能來用,但是他又不想從頭看一遍軟件 A 的源碼和功能實現過程,怎麼辦呢?

研發人員 A 想了一個好主意:我把軟件 A 裏你需要的功能打包好,寫成一個函數。你按照我說的流程,把這個函數放在軟件 B 裏,就能直接用我的功能了!

其中,API 就是研發人員 A 說的那個函數。

這就是 API 的誕生。

日常生活中,我們有很多類似 API 的場景,比如:

電腦需要調用手機裏面的信息,這時候你會拿一根數據線將電腦手機連接起來,電腦和手機上連接數據線的接口就相當於 “API 接口”。如圖所示:

那 SDK 又是什麼?

SDK 就是 Software Development Kit 的縮寫,翻譯過來——軟件開發工具包。這是一個覆蓋面相當廣泛的名詞,可以這麼說:輔助開發某一類軟件的相關文檔、範例和工具的集合都可以叫做 SDK。

SDK 被開發出來是爲了減少程序員工作量的。

比如——

有公司開發出某種軟件的某一功能,把它封裝成 SDK(比如數據分析 SDK 就是能夠實現數據分析功能的 SDK),出售給其他公司做開發用,其他公司如果想要給軟件開發出某種功能,但又不想從頭開始搞開發,直接付錢省事。

現在可以談談 API 和 SDK 的區別了

總的來說,兩者沒有值得比較的區別,因爲是具有關聯性的兩種東西。

你可以把 SDK 想象成一個虛擬的程序包,在這個程序包中有一份做好的軟件功能,這份程序包幾乎是全封閉的,只有一個小小接口可以聯通外界,這個接口就是 API。

比如——

我們現在要在企業 ERP 系統中增加某個功能(比如自動備份、數據分析、雲存儲等),但又不想耗費大量時間、也沒那麼多研發親自去做這個功能。這時我們可以選擇使用這個 “SDK” 軟件包,把 ERP 系統連接上 API 接口,就可以使用 SDK 軟件包裏的功能。

【中鐵大橋科研院】有一個自研的信息平臺,用於管理業務數據。

但他們曾面臨一個問題——儘管有信息平臺,卻因爲系統的獨立性,數據的上傳和備份,需要依靠人工在 excel 裏來回操作,效率很低。

由於系統的開發週期長、成本高,橋科院將目光聚焦到現成的功能軟件上。

後來通過 API 將簡道雲直接插入公司數據庫,數據可自動上傳至信息平臺上並統一展示;再通過 webhook 把數據推送到服務器,實現自動備份。

API 將信息平臺與簡道雲相連

在這一過程中,簡道雲扮演的角色就是 SDK,而簡道雲配備 API 接口,可以對接外部系統,讓橋科院不用開發直接實現了數據自動上傳、備份的功能。另外,搜索公衆號 Linux 中文社區後臺回覆 “私房菜”,獲取一份驚喜禮包。

最後,貼近生活講講兩者的關係:

有一杯密封飲料,它的名字叫做 “SDK”。

飲料上插着吸管,吸管的名字叫 “API”。

把你叫做 “XX 系統”。

如果你想喝到 SDK 裏的飲料(讓系統擁有 SDK 中的功能),你必須通過 API 這根吸管來實現(通過 API 連接你的系統和 SDK 工具包),否則你就喝不到飲料。

所以:

SDK=放着你想要的軟件功能的軟件包

API=SDK 上唯一的接口

不知道你這次真的懂了沒?

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/XrrpeqRP165uPUBBYAigSw