[转]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.mzph.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等。 关于该问题,网上有多种解决办法,然而…

华为笔记本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 从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用…

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 重…

【ArcGIS微课1000例】0029:ArcGIS绘制平行线(构造平行公路)

在实际工作中,有时需要绘制平行线,比如道路两边的边界线,可以使用“平行复制”功能快速绘制平行线,本文介绍如何使用“平行复制”功能快速绘制平行线。 1. 加载公路矢量 加载配套实验数据包中的数据0029.rar中的矢量数据:公路。 2. 生成平行公路 点击“编辑器”→“开始…

Win11 没有磁盘清理工具,如何清理磁盘旧的windows.old文件

win11 磁盘右键没有了“磁盘清理工具” 如果想清理文件,可以打开设置(WinI)系统—存储—清理建议 您也可以打开“存储感知”,系统会在需要时帮你自动清理文件。

.NET开发云原生应用,你只差给自己加个油

为什么要云原生(Cloud Native)Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹…

java成员变量的初始化

2019独角兽企业重金招聘Python工程师标准>>> 类变量(static变量,不需要实例化对象也可以引用) 实例变量(非static变量,需要实例化对象) 局部变量(类的成员函数中的变量) 初始化方式: 构造函数初始化 变量声明时初始化 代码块初始化 java自动初始化(在构造函数执行之…

Win11 的日历 替代

Win11 的日历虽然漂亮,却少了很多小功能,特别是没有秒钟和日程的设计,让用惯了 Win10 的小伙伴大呼不满。原来曾经用过360带的日历,可惜不支持Win11,下面这个日历是一款功能强大、颜值很高的小工具,能够提供…

ReactNative--React简介

React 基础框架,是一些实现理念,不能用来做网页的开发和手机应用的开发 React.js 用来做网页开发 ReactNative 移动应用开发 在学习ReactNative之前,先学习React http://reactnative.cn/ 中文网 http://facebook.github.io/react-nativ…

【ArcGIS微课1000例】0030:ArcGIS利用MXD doctor工具分析并修复mxd地图文档

MXD Doctor 是一个独立的应用程序,位于 ArcGIS Desktop 安装目录下的 Tools 文件夹中。该工具可用于分析已损坏的 .mxd 文件。根据分析结果,可将已损坏的 .mxd 文件中所包含的实体复制到新的或现有 .mxd 文件中。 可以从所有程序 > ArcGIS > Desktop 工具中打开 MXD Do…

分析一个 .NET 写的 某 RFID标签系统 CPU暴涨

一:背景 1. 讲故事前段时间有位朋友说他的程序 CPU 出现了暴涨现象,由于程序是买来的,所以问题就比较棘手了,那既然找到我,就想办法帮朋友找出来吧,分析下来,问题比较经典,有必要和大…

CentOS关机与重启命令详解

2019独角兽企业重金招聘Python工程师标准>>> Linux centos重启命令: 1、reboot  2、shutdown -r now 立刻重启(root用户使用)  3、shutdown -r 10 过10分钟自动重启(root用户使用)  4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)如果…