当前位置: 首页 > news >正文

API 与 SDK 之间的区别

API 与 SDK 之间的区别

很多人在软件开发中经常会分不清 SDK 与 API ,今天就来浅谈一下两者之间的区别。

直白地说,SDK 包含了 API ,是一套完整的,能完成更多功能的工具包,无论你想获取什么样的信息,SDK 里总能找到实现的办法。

用通俗的话来举个例子: 有一杯密封饮料,它的名字叫做 “ SDK ” 。饮料上插着吸管,吸管的名字叫 “ API ” 。把你叫做 “ XX 系统”。 如果你想喝到 SDK 里的饮料(让系统拥有 SDK 中的功能),你必须通过 API 这根吸管来实现(通过 API 连接你的系统和 SDK 工具包),否则你就喝不到饮料。

一、什么是 SDK ?

SDK(software development (发展) kit (试剂盒) ) 即软件开发工具包,是一系列程序接口,文档,开发工具的集合, SDK 编程就是用 windows API 进行编程。

一个完整的 SDK 应该包括以下内容:

  • 接口文件和库文件

接口文件和库文件即 API ,将底层的代码进行封装保护,提供给用户一个调用底层代码的接口。

  • 帮助文档

帮助文档起解释接口文件和库文件的功能,以及介绍有关的开发工具,操作示例等等

  • 开发示例

开发示例就是做出来一个 DEMO 展示,也包括源代码。

  • 实用工具

实用工具是用来协助用户进行二次开发的工具,比如开发向导, API 搜索工具,软件打包工具等等。

二、什么是 API ?

API 是一组接口,它允许软件程序之间进行交互通信,定义了一组程序之间相互通信应遵循的规则。

一般规定了两个程序之间的通讯模式、数据结构等,以便两个程序之间进行通信。

其实就是别人已经写好的可以 实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。

三、SDK 与 API 的区别是什么?

API 是接口,允许软件程序之间进行交互通信的接口,而 SDK 是一组工具 ,可以用来开发针对特定平台的软件应用程序。

SDK 是一套完成的API, 可以提供创建应用程序所需的所有部件。除此之外,SDK 可能还包括其他的开发工具,如调试工具、平台模拟器等等。而 API 是一系列相关的接口方法,只针对某个具体问题提供支持。

SDK 通常包含一个 API,可以与其他程序通信,而 API 不包含 SDK 。

API 接口对接过程中所需环境要自己提供,而 SDK 不需要。

再举个例子,比如你要开车去一个地方,车就是 SDK ,可以让你完成到达目的地的目的。车上的方向盘,灯,发动机,油门,刹车像一个个 API 实现,你在使用 SDK 时,就是调用一个个 API 功能。

四、该如何选择 API 和 SDK 对接?

API 与 SDK 最终实现的功能都是相同的,需要结合对接平台如保密程度,开发成本等不同需求来选择具体采用哪一种。

选择 API :则其优点在于 API 开发成本低,对接比较简单,可以快速验证商业模式和用户体验。但由于 API 会经过对接平台,厂商回获取对接平台相关信息,不具保密性。

选择 SDK :其优点在于对接后功能比较稳定,响应速度快,且对接平台相关数据不会被获取。但其开发环节复杂,开发工作量大,需要较长的对接周期。

因此在实际开发中,可以根据需求来选择 API 或 SDK 。

总的来说,API 是一个确定的功能,已经明确了它的作用。而SDK就像是很多方法的集合体,是一个工具箱。

我们可以根据不同的场景需求来选择 API 或者 SDK ,并善用合适的工具来加快 API 开发的进度。

相关文章:

API 与 SDK 之间的区别

API 与 SDK 之间的区别 很多人在软件开发中经常会分不清 SDK 与 API ,今天就来浅谈一下两者之间的区别。 直白地说,SDK 包含了 API ,是一套完整的,能完成更多功能的工具包,无论你想获取什么样的信息,SDK …...

Lua的环境与热更

一、global_State,lua_State与G表 Lua支持多线程环境,使用 lua_State 结构来表示一个独立的 Lua 线程(或协程)。每个线程都需要一个独立的全局环境。而lua_State 中的l_G指针,指向一个global_State结构,这个就是我们常…...

java八股-分布式服务的接口幂等性如何设计?

文章目录 接口幂等token Redis分布式锁 原文视频链接:讲解的流程特别清晰,易懂,收获巨大 【新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题)】 https://www.bilibili.com/…...

鸿蒙学习使用模拟器运行应用(开发篇)

文章目录 1、系统类型和运行环境要求2、创建模拟器3、启动和关闭模拟器4、安装应用程序包和上传文件QA:在Windows电脑上启动模拟器,提示未开启Hyper-V 1、系统类型和运行环境要求 Windows 10 企业版、专业版或教育版及以上,且操作系统版本不低于10.0.18…...

基于 FFmpeg/Scrcpy 框架构建的一款高性能的安卓设备投屏管理工具-供大家学习研究参考

支持的投屏方式有:USB,WIFIADB,OTG,投屏之前需要开启开发者选项里面的USB调试。 主要功能有: 1.支持单个或多个设备投屏。 2.支持键鼠操控。 3.支持文字输入。 4.支持共享剪切板(可复制粘贴电脑端文字到手机端,也可导出手机剪切板到电脑端)。 5.支持视频图片上传,可单…...

ESLint v9.0.0 新纪元:探索 eslint.config.js 的奥秘 (4)

从 v9.0.0 开始,官方推荐的配置文件格式是 eslint.config.js,并且支持 ESM 模块化风格,可以通过 export default 来导出配置内容。 // eslint.config.js export default [{rules: {semi: "error","prefer-const": "…...

电脑还原重置Windows系统不同操作模式

电脑有问题,遇事不决就重启,一切都不是问题!是真的这样吗。其实不然,主机系统重启确实可以自动修复一些文件错误,或者是设置问题,但是,当你由于安装了错误的驱动或者中毒严重,亦或是蓝屏,那么重启这个方子可能就治不了你的电脑了。 那么,除了当主机出现异常故障现象…...

图论2图的应用补充

图论1基础内容-CSDN博客 图的应用 4.1 拓扑排序 拓扑排序针对有向无环图的顶点进行线性排列的算法,使得对于任何来自顶点A指向顶点B的边,A都在序列中出现在B之前。这样的排序存在于有向无环图中,而对于非有向无环图则不存在拓扑排序。 拓扑排…...

非线性模型预测控制(NMPC)算法及其Python实现

目录 非线性模型预测控制(NMPC)算法及其Python实现第一部分:NMPC算法概述1.1 NMPC的定义1.2 NMPC的优点1.3 NMPC的应用领域第二部分:NMPC算法的数学模型2.1 系统建模2.2 目标函数与约束2.3 NMPC算法的求解第三部分:NMPC算法的实现与优化3.1 实现步骤3.2 Python实现3.3 设计…...

sql语句分类

SQL语句分类 SQL,英文全称为Structured Query Language,中文意思是结构化查询语言(属于编程语言的一种) DDL数据定义语⾔ Data Definition Language,数据定义语言,例如修改数据库中的表、视图、索引等对…...

<一>51单片机环境

目录 1,51单片机开发语言是C,环境keil 1.1,工程创建 1.2用什么把代码放进单片机里面 2,初识代码 1,51单片机开发语言是C,环境keil 1.1,工程创建 1. 创建项目工程文件夹,可以当作模板Template 2. 创建文件,取名main.c 3,编译,选择输出文…...

flutter 解决webview加载重定向h5页面 返回重复加载问题

long time no see. 如果觉得该方案helps,点个赞,评论打个call,这是我前进的动力~ 通常写法: 项目里用的webview_flutter 正常webview处理返回事件 if (await controller.canGoBack()) {controller.goBack(); } else {Navigator…...

折腾基本功:Redis 从入门到 Docker 部署

前面写过了两篇 “Redis” 相关的内容,今天补一篇“基本功”内容,让后续折腾系列文章可以篇幅更短、内容更专注。 前言 在日常工作中,我们构建应用时总是离不开一些基础组件,Redis 就是其中特别常用的一个。之前我写过不少文章&…...

【C++习题】24.二分查找算法_0~n-1中缺失的数字

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 剑指 Offer 53 - II. 0~n-1中缺失的数字 题目描述: 解法 哈希表: 建立一个hash表看哪个数字出现次数为0 直接遍历找结果&#xff1…...

分享一款内存马检测工具(附网盘链接)

DuckMemoryScan DuckMemoryScan是一款简单寻找包括不限于iis劫持,无文件木马,shellcode免杀后门的工具 功能列表 HWBP hook检测 检测线程中所有疑似被hwbp隐形挂钩内存免杀shellcode检测可疑进程检测(主要针对有逃避性质的进程[如过期签名与多各可执行区段])无文件落地木马检…...

vscode ctrl+/注释不了css

方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…...

python数据分析之爬虫基础:爬虫介绍以及urllib详解

前言 在数据分析中,爬虫有着很大作用,可以自动爬取网页中提取的大量的数据,比如从电商网站手机商品信息,为市场分析提供数据基础。也可以补充数据集、检测动态变化等一系列作用。可以说在数据分析中有着相当大的作用!…...

洛谷 P1036 [NOIP2002 普及组] 选数 C语言

题目&#xff1a;https://www.luogu.com.cn/problem/P1036 题目描述 已知 nn 个整数 x1,x2,⋯ ,xn&#xff0c;以及 1 个整数 k&#xff08;k<n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4&#xff0c;k3&#xff0c;4 个…...

CSS动画案例4

目录 一、介绍二、基础布局1. HTML2.CSS 三、交互效果1.设置中间图片的动画2.设置左右两侧每行内容的起始位置与动画3.设置左右两侧第二行与第三行的动画延时的时间4.icon划入时的效果 四、结束语 一、介绍 今天我们继续来看下一个CSS动画案例&#xff0c;这个案例主要是图片以…...

华为云云连接+squid进行正向代理上网冲浪

1 概述 ‌Squid‌是一个高性能的代理缓存服务器&#xff0c;主要用于缓冲Internet数据。它支持多种协议&#xff0c;包括FTP、gopher、HTTPS和HTTP。Squid通过一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求&#xff0c;这使得它在处理请求时具有较高的效率‌。…...

【C++】封装红黑树实现的map和set

前言 这篇博客我们将上篇博客实现的红黑树来封装成自己实现的set和map&#xff0c;来模拟一下库里的map和set &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;C 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 1.源…...

【SSM】mybatis的增删改查

目录 代理Dao方式的增删改查 1. 创建项目 $$1. 在sql.xml里增加日志代码以及user的mapper资源。 $$ 2. 在usermapper里引入接口。 $$3. 在测试类中引入以下代码&#xff0c;并修改其中名字。 $$ 4. 实例对象User.java里属性要与表中列严格对应。 2. 查询 1>. 查询所有 …...

macos下brew安装redis

首先确保已安装brew&#xff0c;接下来搜索资源&#xff0c;在终端输入如下命令&#xff1a; brew search redis 演示如下&#xff1a; 如上看到有redis资源&#xff0c;下面进行安装&#xff0c;执行下面的命令&#xff1a; brew install redis 演示效果如下&#xff1a; …...

鸿蒙修饰符

文章目录 一、引言1.1 什么是修饰符1.2 修饰符在鸿蒙开发中的重要性1.3 修饰符的作用机制 二、UI装饰类修饰符2.1 Styles修饰符2.1.1 基本概念和使用场景2.1.2 使用示例2.1.3 最佳实践 2.2 Extend修饰符2.2.1 基本概念2.2.2 使用示例2.2.3 Extend vs Styles 对比2.2.4 使用建议…...

【Linux】Linux2.6内核进程调度队列与调度原理

目录 一、进程管理中的部分概念二、寄存器三、进程切换四、Linux2.6内核进程调度队列与调度原理结尾 一、进程管理中的部分概念 竞争性: 系统进程数目众多&#xff0c;而CPU资源只有少量&#xff0c;甚至1个&#xff0c;所以进程之间是具有竞争属性的。为了高效完成任务&#…...

MacOS使用VSCode编写C++程序如何配置clang编译环境

前言 这段时间在练习写C和Python&#xff0c;用vscode这个开发工具&#xff0c;调试的时候遇到一些麻烦&#xff0c;浪费了很多时间&#xff0c;因此整理了这个文档。将详细的细节描述清楚&#xff0c;避免与我遇到同样问题的人踩坑。 1.开发环境的配置 vscode的开发环境配置…...

【Spark源码分析】规则框架- `analysis`分析阶段使用的规则

analysis分析阶段使用的规则 规则批策略规则说明SubstitutionfixedPointOptimizeUpdateFields该规则优化了 UpdateFields 表达式链&#xff0c;因此看起来更像优化规则。但是&#xff0c;在处理深嵌套模式时&#xff0c;UpdateFields 表达式树可能会非常复杂&#xff0c;导致分…...

Windows和Ubuntu系统下cmake和opencv的安装和使用

以下是在Windows和Ubuntu系统下分别安装CMake并使用C配置OpenCV实现读取图片并显示功能的详细步骤&#xff1a; Windows系统 1. 安装CMake 访问CMake官方网站&#xff08;https://cmake.org/download/&#xff09;。根据你的Windows系统版本&#xff08;32位或64位&#xff…...

详解 Qt QtPDF之QPdfPageNavigator 页面跳转

文章目录 前言头文件&#xff1a; 自 Qt 6.4 起继承自&#xff1a; 属性backAvailable : const boolcurrentLocation : const QPointFcurrentPage : const intcurrentZoom : const qrealforwardAvailable : const bool 公共函数QPdfPageNavigator(QObject *parent)virtual ~QPd…...

设计模式之单例

单例可以说是设计模式中最简单的一种模式。但任何一种设计模式都是普遍经验的总结&#xff0c;都有值得思考的地方。所以单例也并不简单&#xff0c;下面让我们慢慢了解它。 单例顾名思义这个类只有一个实例。要做到这点&#xff0c;需要做到以下几点&#xff1a; &#xff08;…...

笔记软件:我来、思源笔记、Obsidian、OneNote

最近wolai的会员到期了&#xff0c;促使我更新了一下笔记软件。 首先&#xff0c;wolai作为一个笔记软件&#xff0c;我觉得有很多做得不错的方面&#xff08;否则我也不会为它付费2年了&#xff09;&#xff0c;各种功能集成得很全&#xff08;公式识别这个功能我写论文的时候…...

前端入门指南:前端模块有哪些格式?分别什么情况使用

前言 在当今的前端开发中&#xff0c;模块化是提升代码组织性和可维护性的关键手段。随着前端技术的发展&#xff0c;出现了多种模块化方案&#xff0c;每种方案都有其独特的优势和适用场景。本文将详细探讨常见的前端模块格式&#xff0c;包括全局变量、IIFE、CommonJS、AMD、…...

Vue3 常用指令解析:v-bind、v-if、v-for、v-show、v-model

Vue 是一个非常强大的前端框架&#xff0c;提供了许多常用指令来简化模板的使用。Vue 指令以 v- 开头&#xff0c;用于对 DOM 元素和组件的行为进行控制。本文将介绍 Vue 中常见的五个指令&#xff1a;v-bind、v-if、v-for、v-show 和 v-model&#xff0c;并通过实例代码来演示…...

如何查看ubuntu服务器的ssh服务是否可用

你可以通过以下几种方法检查 Ubuntu 服务器上的 SSH 服务是否可用&#xff1a; 1. 使用 systemctl 检查 SSH 服务状态 首先&#xff0c;检查 SSH 服务是否正在运行&#xff1a; sudo systemctl status ssh如果 SSH 服务正在运行&#xff0c;你会看到类似以下的输出&#xff…...

redis面试复习

1.redis是单线程还是多线程 无论什么版本工作线程就是是一个&#xff0c;6.x高版本出现了IO多线程 单线程满足redis的串行原子&#xff0c;只不过IO多线程后&#xff0c;把输入/输出放到更多的线程里区并行&#xff0c;好处&#xff1a; 1.执行的时间更短&#xff0c;更快&a…...

【人工智能基础04】线性模型

文章目录 一. 基本知识1. 线性回归1.1. 基本形式1.2. 线性回归 2. 优化方法&#xff1a;梯度下降法2.1. 梯度下降法的直观意义2.2. 随机梯度下降法 3. 分类问题3.1. 二分类&#xff1a;逻辑回归-sigmoid函数3.2. 多分类问题--softmax函数 4. 岭回归与套索回归4.1. 基础概念什么…...

使用YOLO系列txt目标检测标签的滑窗切割:批量处理图像和标签的实用工具

使用YOLO系列txt目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具 使用YOLO的TXT目标检测标签的滑窗切割&#xff1a;批量处理图像和标签的实用工具背景1. 代码概述2. 滑窗切割算法原理滑窗切割步骤&#xff1a;示例&#xff1a; 3. **代码实现**1. **加载标签…...

《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》

《装甲车内气体检测“神器”:上海松柏 K-5S 电化学传感器模组详解》 一、引言二、K-5S 电化学传感器模组概述&#xff08;一&#xff09;产品简介&#xff08;二&#xff09;产品特点&#xff08;三&#xff09;产品适用场景 三、电化学传感器原理及优点&#xff08;一&#xf…...

【笔记】文明、现代化与价值投资

文章目录 价值投资与理性思考资管行业特点及对从业人员的道德底线要求价值投资长期来看&#xff0c;各项资产的走势投资与投机 对文明的认知对文明的计量方式狩猎文明或1.0文明农业畜牧文明或2.0文明农业文明的天花板及三次冲顶农业文明中的思想革命和制度创新 科技文明或3.0文…...

排序学习整理(1)

1.排序的概念及运用 1.1概念 排序&#xff1a;所谓排序&#xff0c;就是使⼀串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff0c;以便更容易查找、组织或分析数据。 1.2运用 购物筛选排序 院校排名 1.3常见排序算法 2.实…...

提升分布式系统响应速度:分布式系统远程调用性能提升之道

目录 一、远程调用直接案例分析 二、并行调用 &#xff08;一&#xff09;核心思想 &#xff08;二&#xff09;并行调用的实现方式 1. 基本思路 2. 代码示例 3. 关键点说明 4.线程池配置建议 三、数据异构 &#xff08;一&#xff09;场景重提 &#xff08;二&…...

通过MinIO+h2non/imaginary 搭建自己的阿里云OSS

安装MinIO Docker部署MinIO对象存储服务 图片访问地址&#xff1a;http://192.168.153.138:9000/public/su7_1.jpg 安装h2non/imaginary Docker部署h2non/imaginary 处理图片地址&#xff1a;http://192.168.153.138:7000/resize?urlhttp://192.168.153.138:9000/public/su…...

.NET 9 AOT的突破 - 支持老旧Win7与XP环境

引言 随着技术的不断进步&#xff0c;微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性。在.NET 9 版本中&#xff0c;一个特别引人注目的亮点是 AOT&#xff08; Ahead-of-Time&#xff09;支持&#xff0c;它允许开发人员将应用程序在编译阶段就优化为能够在老旧的 Win…...

iOS与Windows间传文件

想用数据线从 windows 手提电脑传文件入 iPhone&#xff0c;有点迂回。 参考 [1]&#xff0c;要在 windows 装 Apple Devices。装完、打开、插线之后会检测到手机&#xff0c;界面&#xff1a; 点左侧栏「文件」&#xff0c;不是就直接可以传&#xff0c;而是要通过某个应用传…...

ospf协议(动态路由协议)

ospf基本概念 定义 OSPF 是典型的链路状态路由协议&#xff0c;是目前业内使用非常广泛的 IGP 协议之一。 目前针对 IPv4 协议使用的是 OSPF Version 2 &#xff08; RFC2328 &#xff09;&#xff1b;针对 IPv6 协议使用 OSPF Version 3 &#xff08; RFC2740 &#xff09;。…...

直击高频编程考点:聚焦新版综合编程能力考查汇总

目录 一、业务性编程和广度能力考查 &#xff08;一&#xff09;基本定义 &#xff08;二&#xff09;必要性分析 二、高频考查样题&#xff08;编程扩展问法&#xff09; 考题1: 用java 代码实现一个死锁用例&#xff0c;说说怎么解决死锁问题&#xff1f;&#xff08;高…...

爬虫框架快速入门——Scrapy

适用人群&#xff1a;零基础、对网络爬虫有兴趣但不知道从何开始的小白。 什么是 Scrapy&#xff1f; Scrapy 是一个基于 Python 的网络爬虫框架&#xff0c;它能帮助你快速爬取网站上的数据&#xff0c;并将数据保存到文件或数据库中。 特点&#xff1a; 高效&#xff1a;支…...

Springfox、Swagger 和 Springdoc

Springfox、Swagger 和 Springdoc 是用于在 Spring Boot 项目中生成 API 文档的工具&#xff0c;但它们之间有显著的区别和演进关系&#xff1a; 1. Swagger 简介 Swagger 是一个开源项目&#xff0c;旨在为 RESTful APIs 提供交互式文档。最早由 SmartBear 开发&#xff0c;…...

Css、less和Sass(SCSS)的区别详解

文章目录 Css、less和Sass&#xff08;SCSS&#xff09;的区别详解一、引言二、CSS 简介1.1、CSS 示例 三、Less 简介2.1、Less 特性2.2、Less 示例 四、Sass&#xff08;SCSS&#xff09;简介3.1、Sass 特性3.2、SCSS 示例 五、总结 Css、less和Sass&#xff08;SCSS&#xff…...

新能源汽车充电基础设施短板问题多,如何实现高效、综合、智能化管理?

随着城市经济的发展&#xff0c;人民生活水平的提升&#xff0c;新能源汽车保有量快速增长&#xff0c;而日益增长的新能源汽车需求与充电基础设施建设不平衡的矛盾日益突出。由于停车泊位充电基础设施总量不足、布局待优化、利用效率低、建设运营存在短板问题等原因&#xff0…...