https://www.toutiao.com/i6683722668333597192/
一、何為SDK
SDK是一系列程式接口,文檔,開發工具的集合,是的,集合,sdk即單單不是一個開發工具,也不是一個程式。一個完整的SDK應該包括以下内容:(1)接口檔案和庫檔案(2)幫助文檔(3)開發示例(4)實用工具。
接口檔案和庫檔案就是API,将底層的代碼進行封裝保護,提供給使用者一個調用底層代碼的接口;
幫助文檔解釋接口檔案和庫檔案功能,以及介紹相關的開發工具,操作示例等等;
開發示例就是做出來的一個DEMO展示,也要包括源代碼;
實用工具是用來協助使用者進行二次開發的工具,比如二次開發向導、API 搜尋工具、軟體打包工具等。
有過java程式設計經曆的都知道,要運作java需要在電腦上安裝jdk。jdk就是java SDK ,其安裝過程就是下載下傳一個EXE(Windows下)的應用程式,點一下就OK了,看起來好像jdk就是一個應用程式。實際上這個在網上下載下傳下來的應用程式隻是jdk的一個安裝向導,它幫你在電腦上安裝了Java的運作環境,一堆Java工具和Java基礎的類庫,這些東西組合起來才是JDK的核心内容。
通過上述的示例,相信你大概明白了sdk包含些什麼東西了。
那麼學C的同學又會問,為什麼在windows下運作c語言,沒見要下載下傳什麼\'C SDK\'什麼的啊?
因為C語言沒有特定SDK,也不需要像Java一樣在虛拟機上運作程式示例。但是C語言有豐富的API,同時C語言不需要像Java一樣使用Java開發商提供的API,它可以直接調用系統本身的API。
實際開發中,可以輕松的獲得多種多類的軟體開發的工具(如keil uvision, eclipse,Visual C++等),這些工具內建了語言的開發環境、編譯環境,還提供糾錯功能。可以通過這些工具将SDK中的函數,架構類導入,使用别人寫好的類,協助軟體的開發。
二、關于SDK與API的差別
1、引例
研發人員A開發了軟體A,研發人員B正在研發軟體B。
有一天,研發人員B想要調用軟體A的部分功能來用,但是他又不想從頭看一遍軟體A的源碼和功能實作過程,怎麼辦呢?
研發人員A想了一個好主意:我把軟體A裡你需要的功能打包好,寫成一個函數。你按照我說的流程,把這個函數放在軟體B裡,就能直接用我的功能了!
其中,API就是研發人員A說的那個函數。
<img src="https://pic4.zhimg.com/50/v2-4160a3b3d7361a1d75fa0174f8e3e83e_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="1920" data-rawheight="979" class="origin_image zh-lightbox-thumb" width="1920" data-original="https://pic2.zhimg.com/v2-4160a3b3d7361a1d75fa0174f8e3e83e_r.jpg?source=1940ef5c">

這就是API的誕生。
2、那SDK又是什麼?
SDK 就是 Software Development Kit 的縮寫,翻譯過來——軟體開發工具包。這是一個覆寫面相當廣泛的名詞,可以這麼說:輔助開發某一類軟體的相關文檔、範例和工具的集合都可以叫做SDK。
SDK被開發出來是為了減少程式員工作量的。
比如——
有公司開發出某種軟體的某一功能,把它封裝成SDK(比如資料分析SDK就是能夠實作資料分析功能的SDK),出售給其他公司做開發用,其他公司如果想要給軟體開發出某種功能,但又不想從頭開始搞開發,直接付錢省事。
3、現在可以談談API和SDK的差別了。
總的來說,兩者沒有值得比較的差別,因為是具有關聯性的兩種東西。
你可以把SDK想象成一個虛拟的程式包,在這個程式包中有一份做好的軟體功能,這份程式包幾乎是全封閉的,隻有一個小小接口可以聯通外界,這個接口就是API。
比如——
我們現在要在企業ERP系統中增加某個功能(比如自動備份、資料分析、雲存儲等),但又不想耗費大量時間、也沒那麼多研發親自去做這個功能。這時我們可以選擇使用這個“SDK”軟體包,把ERP系統連接配接上API接口,就可以使用SDK軟體包裡的功能。
4、舉個執行個體輔助了解:
【中鐵大橋科研院】有一個自研的資訊平台,用于管理業務資料。
但他們曾面臨一個問題——盡管有資訊平台,卻因為系統的獨立性,資料的上傳和備份,需要依靠人工在excel裡來回操作,效率很低。
由于系統的開發周期長、成本高,橋科院将目光聚焦到現成的功能軟體上。
後來通過API将簡道雲直接插入公司資料庫,資料可自動上傳至資訊平台上并統一展示;再通過webhook把資料推送到伺服器,實作自動備份。
<img src="https://pic4.zhimg.com/50/v2-e412823d1380e1174b97ab614f818159_hd.jpg?source=1940ef5c" data-size="normal" data-rawwidth="1302" data-rawheight="778" data-default-watermark-src="https://pic3.zhimg.com/50/v2-4903d1ad4e02da245135df5d87326729_hd.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="1302" data-original="https://pic4.zhimg.com/v2-e412823d1380e1174b97ab614f818159_r.jpg?source=1940ef5c">
API将資訊平台與簡道雲相連
在這一過程中,簡道雲扮演的角色就是SDK,而簡道雲配備API接口,可以對接外部系統,讓橋科院不用開發直接實作了資料自動上傳、備份的功能。
最後,貼近生活講講兩者的關系:
有一杯密封飲料,它的名字叫做“SDK”。
飲料上插着吸管,吸管的名字叫“API”。
把你叫做“XX系統”。
如果你想喝到SDK裡的飲料(讓系統擁有SDK中的功能),你必須通過API這根吸管來實作(通過API連接配接你的系統和SDK工具包),否則你就喝不到飲料。
是以:
SDK=放着你想要的軟體功能的軟體包
API=SDK上唯一的接口
不知道你這次真的懂了沒?
相關介紹:
簡道雲,以阿裡雲為依托的雲辦公平台。以表單為基礎,特色的流程協作、圖表分析等功能,讓使用者簡單靈活的搭建管理應用,免去開發成本的同時,享受到數字化管理。
(點選進入:「簡道雲官網」)
<img src="https://pic4.zhimg.com/50/v2-516a17c2306d9ab4d00656343a314282_hd.gif?source=1940ef5c" data-caption="" data-size="normal" data-thumbnail="https://pic2.zhimg.com/50/v2-516a17c2306d9ab4d00656343a314282_hd.jpg?source=1940ef5c" class="content_image">
<img src="https://pic4.zhimg.com/50/v2-818044bf0b892775e6906eaa159e9d59_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="2854" data-rawheight="1482" class="origin_image zh-lightbox-thumb" width="2854" data-original="https://pic4.zhimg.com/v2-818044bf0b892775e6906eaa159e9d59_r.jpg?source=1940ef5c">
作者:簡道雲
連結:https://www.zhihu.com/question/21691705/answer/770586138
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
文章轉載源:https://www.toutiao.com/i6683722668333597192/