當前位置: 妍妍網 > 碼農

SDK 和 API 的區別是什麽?

2024-04-18碼農

作者:簡道雲

連結:https://www.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介面,可以對接外部系統,讓橋科院不用開發直接實作了數據自動上傳、備份的功能。

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

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

飲料上插著吸管,吸管的名字叫「API」。

把你叫做「XX系統」。

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

所以:

  • SDK=放著你想要的軟體功能的軟體包

  • API=SDK上唯一的介面

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

    熱門推薦