[轉]SDK與API區別

轉載:https://www.zhihu.com/question/21691705/answer/149935191

?

SDK(software development kit),中文可譯為“軟件開發工具包”。

一般都是一些被軟件工程師用于為特定的軟件包、軟件架構、硬件平臺、操作系統等建立應用軟件的開發工具的集合。通俗點是指由第三方服務商提供的實現軟件產品某項功能的工具包。在編輯器里敲代碼的時候它會自動補全代碼、自動檢查錯誤。

通常SDK是由專業性質的公司提供專業服務的集合,比如提供安卓開發工具、或者基于硬件開發的服務等。也有針對某項軟件功能的SDK,如推送技術、圖像識別技術、移動支付技術、語音識別分析技術等,在互聯網開放的大趨勢下,一些功能性的SDK已經被當作一個產品來運營。

開發者不需要再對產品的每個功能進行開發,選擇合適穩定的SDK服務并花費很少的經歷就可以在產品中集成某項功能。

API(application programming interface),中文可譯為“應用程序編程接口”。提供用戶編程時的接口,是一些預先定義的函數,目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。DOSAPI 是“Thinking in匯編語言”的,而 Windows API 則是“Thinking in 高級語言”的,我們通常指的是Windows API ,DOSAPI是系統程序的一部分,他們與系統一同被載入內存并且可以通過中斷矢量表找到他們的入口,那么關于 Windows API又是 呢?要說明白這個問題就不得不引入這個概念——DLL

DLL( Dynamic Link Library),中文譯為“動態鏈接庫”。在windows環境下含有大量 .dll格式的文件,這些文件就是動態鏈接庫文件,其實也是一種可執行文件格式。跟 .exe 文件不同的是,.dll文件不能直接執行,他們通常由 .exe 在執行時裝入,內含有一些資源以及可執行代碼等。其實 Windows 的三大模塊就是以DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API函數的執行代碼。為了使用 DLL 中的 API 函數, 必須要有 API 函數的聲明(.H)和其導入庫(.LIB),導入庫可以先這樣理解:導入庫是為了在 DLL 中找到 API 的入口點而使用的。

實際上SDK包含了API的定義,API定義一種能力,一種接口的規范,而SDK可以包含這種能力、包含這種規范。但是SDK又不完完全全只包含API以及API的實現,它是一個軟件工具包,它還有很多其他輔助性的功能。

為了使用 API 函數,我們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、范例和工具的“工具包”。

SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來編寫 Windows 應用程序的開發方式叫做“SDK編程”。而API和 SDK 是開發Windows應用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如VCL 和MFC,雖然他們比起“SDK 編程”來有著更高的抽象度,但這絲毫不妨礙它們在需要的時候隨時直接調用 API 函數 。

舉例:

假設你要做一款WiFi可視門鈴,APP功能有:
1. 視頻對講
2. APP開鎖
3. 訪客截圖
4. 移動偵測
5. 觸發警報
6. 人臉識別
首先,要做1-6的API, 組成了SDK, 然后根據SDK開發Project File項目文件,制作APP, 門鈴上寫入Firmware固件(Firmware是門鈴的軟件,是SDK和門鈴溝通的橋梁)。
如下圖:

后來,你想升級門鈴,加入新功能 7. 虹膜識別,做API-7, 組成新的SDK, 生成新的Firmware, 更新到門鈴,搞定。


---------------------
作者:feng98ren
來源:CSDN
原文:https://blog.csdn.net/feng98ren/article/details/80047450
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳談如何定制自己的博客園皮膚【轉】

轉自:http://www.cnblogs.com/jingmoxukong/p/7826982.html 目錄 前言Quickstart定制博客園 CSS 的原理頁面定制CSS代碼博客側邊欄公告頁首Html代碼頁腳Html代碼定制細節獨立控件小老鼠游戲動畫動畫時鐘百度分享欄Github 角標簽云背景動畫動態標題文章內容樣式定制帶…

【ArcGIS微課1000例】0025:ArcGIS Online當前未連接到在線資源終極解決辦法

ArcGIS Online在線資源列表: World Imagery: 底圖服務: 中國地圖彩色版: 打開ArcGIS時,系統托盤提示“ArcGIS Online當前未連接到在線資源”,如下圖所示,如果無法連接到ArcGIS Online,則就無法添加在線資源,如World Imagery等。 關于該問題,網上有多種解決辦法,然而…

學習.NET ,提升.NET技能,這些公眾號得關注

時逢七月,白云在天,綠水環山,甚是悠閑。可是,學路上的我們卻四處彷徨。學海無涯,我仍苦尋渡口;學路漫漫,我卻愁無舟楫。我不禁四下掃視,自語問天,學須有成,可…

Excel表格從指定部分重新分頁打印的兩種方法

Excel表格現在已經成為了一個極其重要的辦公工具,尤其是在數據處理方面,它可以進行各種數據的處理、統計分析和輔助決策操作,但是在日常工作中我們經常對一些功能無從下手,例如在進行表格內容打印時,需要將其中內容從某…

華為筆記本Win11更新時由于驅動問題引起藍牙鼠標經常斷開問題解決方法

每次Win11升級后如果發現藍牙鼠標經常斷開,打開“華為電腦管家”執行以下操作即可: 然后更新藍牙驅動 重啟電腦OK。

【ArcGIS微課1000例】0026:ArcGIS10如何自定義工具條?

ArcGIS中,可以創建用戶工具條,將自己常用的工具命令放到一起,方便實用提高工作效率。本文講解如何自定義工具條并添加與刪除工具。 1. 創建工具條 點擊【自定義】菜單→【自定義模式】,如下圖所示: 或者在任一工具條上點擊最后面的下拉三角形→自定義: 以上兩種方法都可…

基于 KubeSphere 流水線的 GitOps 最佳實踐

背景Kubesphere 3.3.0 集成了 ArgoCD,但與筆者目前使用的 K8S 版本不兼容。再者,目前 Kubesphere 中持續集成和流水線打通還是不太友好,也缺少文檔說明(可能是筆者沒有找到)。目前遇到最主要的問題就是流水線制作完成的…

【ArcGIS微課1000例】0027:ArcGIS屬性表(dbf)轉Excel的4中方法

ArcGIS中的矢量數據Shapefile屬性表存放在后綴名為.dbf的文件中,它是GIS數據分析的核心,如果將屬性表轉為別的平臺使用,一般需要將其轉為Excel格式。本文以ArcGIS自帶矢量數據continent為例,講解dbf轉excel的常見4種方法。 文章目錄 1. 表轉Excel工具2. 直接打開3. 導出屬性…

微信公眾號自定義菜單直接跳轉到小程序指定頁面

首頁我們要先拿到需要的小程序的頁面地址:(如何拿到小程序頁面地址自行百度) 然后登錄公眾號后臺,添加自定義菜單: 菜單的路徑選擇“跳轉小程序” ,從綁定的小程序中選擇要跳轉的小程序,默認小程…

javascript高級程序設計 學習筆記 第五章 上

第五章引用類型的值(對象)是引用類型的一個實例。在 ECMAScript 中,引用類型是一種數據結構, 用于將數據和功能組織在一起。它也常被稱為類,但這種稱呼并不妥當。盡管 ECMAScript 從技術上講是一門面向對象的語言,但它不具備傳統的面向對象語言所支持的類和接口等基本結構。引用…

Windows Hook

啥是windows的鉤子?鉤子故名思議就是在嵌入到正常執行程序的功能。對于windows來說,每個系統和應用程序之間的交互是使用消息機制來進行。比如點擊應用程序上面的某個按鈕,就是發送了事件給了應用程序。windows鉤子的作用就是在事件發送給應用…

HTTP協議之Expect爬坑

前言今天,在對接一個第三方平臺開放接口時遇到一個很棘手的問題,根據接口文檔組裝好報文,使用HttpClient發起POST請求時一直超時,對方服務器一直不給任何響應。發起請求的代碼如下:using (var httpClient new HttpCli…

【ArcGIS微課1000例】0028:ArcGIS根據屬性快速分割生成多個shp文件

ArcGIS10.5及以上的版本提供了按屬性分割工具,(分析工具->提取->按屬性分割)工具。也可以使用10.2版本的分割工具,效果應該是一樣的。本文演示使用分割工具批量快速提取一個縣范圍內的多個鎮,生成多個鎮矢量shp數據。 擴展閱讀:【ArcGIS遇上Python】ArcGIS Python按…

Win11 恢復 Win10經典右鍵菜單 親測有效

管理員運行命令: reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve 重…

把一個字符串里符合表情文字標簽的地方全部替換為相應的圖片的方法

1、表情數據: var emotion [{"name": "Expression_1","text": "[微笑]"},{"name": "Expression_2","text": "[撇嘴]"},{"name": "Expression_3","text&…

【ArcGIS微課1000例】0029:ArcGIS繪制平行線(構造平行公路)

在實際工作中,有時需要繪制平行線,比如道路兩邊的邊界線,可以使用“平行復制”功能快速繪制平行線,本文介紹如何使用“平行復制”功能快速繪制平行線。 1. 加載公路矢量 加載配套實驗數據包中的數據0029.rar中的矢量數據:公路。 2. 生成平行公路 點擊“編輯器”→“開始…

2017年初隨想——幾個小目標

回顧往事很慘,展望未來渺茫 2016年不順的事情一籮筐,母親追求信仰(誤入歧途)導致父母離婚,父親又遭遇車禍,現在依然癱瘓在床,意識都尚未清醒,母親卻依然杳無音信。而我則剛工作2年半…

Win11 沒有磁盤清理工具,如何清理磁盤舊的windows.old文件

win11 磁盤右鍵沒有了“磁盤清理工具” 如果想清理文件,可以打開設置(WinI)系統—存儲—清理建議 您也可以打開“存儲感知”,系統會在需要時幫你自動清理文件。

腳本進階,函數調用實例練習

一、練習:腳本:判定192.168.0.200-192.168.0.254之間哪些主機在線,要求:1、使用函數來實現一臺主機的判定過程:2、在主程序中調用此函數判定指定范圍內的所有主機的在線情況,vim ping.sh#!/bin/bash#PING()…

.NET開發云原生應用,你只差給自己加個油

為什么要云原生(Cloud Native)Cloud表示應用程序位于云中,而不是傳統的數據中心;Native表示應用程序從設計之初即考慮到云的環境,原生為云而設計,在云上以最佳姿勢運行,充分利用和發揮云平臺的彈…