SDK 和 API 的區別是什麼

2022-06-21 12:06:12 字數 1832 閱讀 3192

講個小故事:

研發人員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上唯一的介面

和 的區別是什麼?

符號一般用來當作佔位符,常使用linux指令碼的同學應該對此有更深的體會吧。既然是佔位符,當然就是被用來替換的。知道了這點就能很容易區分 和 從而不容易記錯了。比如說用 和 傳參的區別,使用 傳入引數是,sql語句解析是會加上 比如 select from table where name 傳入的n...

和 equals 的區別是什麼?

string x string string y string string z newstring string system.out.println x y true system.out.println x z false system.out.println x.equals y true ...

和equals的區別是什麼

1 是關係運算子,equals是方法,結果都返回布林值 2 object類的和equals都是比較位址,作用相同 作用 jdk中的類一般已經重寫了equals 方法,比較的是內容 自定義的類如果沒有重寫equals方法,將呼叫父類的equals方法 可以根據自己的需求重寫equals方法,重寫equ...