目录
💌 SDK和API是什么?
SDK
API
💌 SDK和API的区别
💌 该如何选择 API 和 SDK 对接?
💌 SDK和API是什么?
SDK
SDK的概念:软件开发工具包(全称:Software Development Kit)。指一些被软件工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件的开发工具的集合。简单来说就是一系列程序接口,文档,开发工具的集合。
SDK是一个覆盖面比较广的名词,可以说,辅助开发某一类软件的相关文档,范例等等都可以称作SDK。
SDK就相当于很多API接口和其他文件的集合体。比如,你要完成一堆数据的运算,需要用到各种计算方法(比如加减乘数,平方,开方),你去买了一个计算器产品,这个产品包含了一台计算器,一本使用说明(比如接口文档和案例演示)和一些其他文件,你用这个计算器完成了所有数据的运算。整个计算器产品可以看做是一个SDK,它里面有API具体实现(计算器),说明文档(说明书),以及一些其他文件。这个SDK的功能就是计算,可能要算什么不确定,但是你可以通过这个SDK中的某个方法完成,实现你的目的。
举个例子,如果组装一个模型,构建这个模型时需要一整套物品去组装,SDK则是组装所需要的工具,以及装配说明等。
SDK的发明就是为了减少开发工作量的,这是它的主要作用。
比如,在日常办公中求和求方差,没有人会傻傻计算,而是直接带入对应的函数计算。
比如,有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。
比如,在项目中需要一个人脸识别的功能,这个功能的工作量比较高、技术实现难度大。但是在市场上已经有公司做的非常好、准确度非常高了。这个时候就可以直接购买这个人脸识别SDK工具,嵌入到项目中。虽然在接入的时候仍然有一些工作和成本,但是比起重新开发,还是节省了相当大的工作量
SDK比API内容更丰富,结构更复杂,功能更强大,相当于很多API和其他文件的集合体。
一个完整的 SDK 应该包括以下内容:
- 接口文件和库文件
接口文件和库文件即 API ,将底层的代码进行封装保护,提供给用户一个调用底层代码的接口。
- 帮助文档
帮助文档起解释接口文件和库文件的功能,以及介绍有关的开发工具,操作示例等等
- 开发示例
开发示例就是做出来一个 DEMO 展示,也包括源代码。
- 实用工具
实用工具是用来协助用户进行二次开发的工具,比如二次开发向导, API 搜索工具,软件打包工具等等。
API
API的概念:应用程序接口(全称:Application Programming Interface,简称:API)又称为应用编程接口、应用程序编程接口。提供用户编程时的接口,是一些预先定义的函数,或者软件系统不同部分组成衔接的约定。应用程序编程接口_百度百科
API的主要目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。
主要功能为提供通用功能集,API同时作为一种中间件,为各平台提供数据共享的能力。
API是应用程序之间数据传输的工具,相当于一个通道,主要是用作连接输入和输出,比如用户输入账号和密码,通过API接口输出一个结果 通过或者不通过。
API分为Open API和私有API。Open API就是可以向其他人公开的接口,允许其他人调用它并获得其背后的数据内容。在使用的过程中需要约定一个协议,这个协议定义了入参和出参的格式和内容,调用方需要严格遵守这个格式才能获取到返回的结果
API 是一组接口,它允许软件程序之间进行交互通信,定义了一组程序之间相互通信应遵循的规则。
一般规定了两个程序之间的通讯模式、数据结构等,以便两个程序之间进行通信。
其实就是别人已经写好的可以 实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。
我们先来讲个小故事:看看API是如何诞生的?
研发人员A开发了软件A,研发人员B正在研发软件B。 有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢? 研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了! 其中,API就是研发人员A说的那个函数。
举个日常生活中的例子:
日常生活中,我们有很多类似API的场景,比如: 你想要电脑需要调用手机里面的某个信息,这时候你会拿一根数据线将手机与电脑连接起来传送信息,电脑和手机上连接数据线的接口就相当于“API接口”。如图所示:
💌 SDK和API的区别
SDK为API 提供能量源。SDK是信息程序的合集。API是释放SDK中功能的一个具体函数。用途不同:SDK可为多个API提供程序功能,API接口设定有专有性。总的来说两者是关联性十分强的两个东西。
SDK与API其实是有关联性的,SDK的唯一访问入口就是API。SDK可以理解为打包了一系列API的的工具包。
API 通常是一个特定的函数,有着特定的功能。SDK是一个拥有很多程序很多功能信息的结合体,是作为工具包的形象而存在。
API 一般扮演的就是USB数据接口的形象,类似于游乐园卖票的,SDK就是游乐园,SDK相当于一个工具环境,在SDK的环境下调用API。
另外,SDK的封装环境相比API 要更高级些。
举一个通俗的例子:
有一杯密封饮料,它的名字叫做 “ SDK ” 。饮料上插着吸管,吸管的名字叫 “ API ” 。把你叫做 “ XX 系统”。
于是一杯密封饮料=SDK;饮料上插着的吸管=API;你=某系统
如果你想喝到 SDK 里的饮料(让系统拥有 SDK 中的功能),你必须通过 API 这根吸管来实现(通过 API 连接你的系统和 SDK 工具包),否则你就喝不到饮料。
学术一点的说:如果想让系统拥有SDK的能力必须通过API来连接系统与工具包。因此,SDK是放着你想要的软件功能的软件包,API是SDK上唯一的接口。
🤔 所以,两者区别,显而易见:
API是一个具体的函数,一个确定的功能说明,已经明确了它的作用(比如,做加法)。而SDK就像是很多方法的集合体,是一个工具。
比如,你要做加法,你就调用计算机这个SDK的加法API实现,要做减法就调用减法API实现,无论你想完成什么计算,SDK里总有能实现的方法。
1、API 是接口,允许软件程序之间进行交互通信的接口,而 SDK 是一组工具 ,可以用来开发针对特定平台的软件应用程序。
2、SDK 是一套完成的API, 可以提供创建应用程序所需的所有部件。除此之外,SDK 可能还包括其他的开发工具,如调试工具、平台模拟器等等。而 API 是一系列相关的接口方法,只针对某个具体问题提供支持。
3、SDK 通常包含一个 API,可以与其他程序通信,而 API 不包含 SDK 。
4、API 接口对接过程中所需环境要自己提供,而 SDK 不需要(因为SDK本身就是环境,也可以说SDK提供了一个完整的开发环境)。
这就好比,你要开车去一个地方,车就是SDK,可以让你完成到达目的地的目的。车上的方向盘,灯,发动机,油门,刹车像一个个API实现,你在使用SDK时,就是调用一个个API功能。如果贴心一点的车,可能还带有使用说明(SDK说明文档)。
另外,接着上面,再展开说说:
1、SDK还有一点是除了他提供的完善的接口,他还会给你提供开发环境。继续上面的计算器和车的比喻,要想计算器和车子可以使用,要给计算器电池,和车子加油,这些都是计算机和汽车运行需要的。
2、SDK作为一个游乐园似的的工具环境,在大环境内,API买票请求不同的玩乐措施。SDK提供的工具环境是一个较为抽象的概念。也可以在不用SDK的环境下使用API,不过,环境需要开发者自行实现。
api就是一个函数接口,函数功能无法脱离环境而独立运行,只有连接到服务器才可以发挥作用。 sdk是开发工具包,含有api函数接口和api运行所需要的服务环境,可以独立运行。
现在很多第三方API接口运行是通过远程调用的方式,这样的好处是不需要下载对应的SDK,只需要知道API的接口地址。在某种程度上减少了调用他人接口的难度。
💌 该如何选择 API 和 SDK 对接?
API 与 SDK 最终实现的功能都是相同的,需要结合对接平台如保密程度,开发成本等不同需求来选择具体采用哪一种。
选择 API :则其优点在于 API 开发成本低,对接比较简单,可以快速验证商业模式和用户体验。但由于 API 会经过对接平台,厂商会获取对接平台相关信息,不具保密性。
选择 SDK :其优点在于对接后功能比较稳定,响应速度快,且对接平台相关数据不会被获取。但其开发环节复杂,开发工作量大,需要较长的对接周期。
因此,在实际开发中,可以根据需求来选择 API 或 SDK 。
总的来说,API 是一个确定的功能,已经明确了它的作用。而SDK就像是很多方法的集合体,是一个工具箱。
我们可以根据不同的场景需求来选择 API 或者 SDK ,并善用合适的工具来加快 API 开发的进度。
推荐一个API在线管理服务平台:Eolink,它整合了 API 研发管理的流程和功能,简单方便且好用,感兴趣可自行试用:www.eolink.com
以下关于SDK和API的区别总结,也是很到位,来自于:https://worktile.com/kb/ask/39193.html
1. 概念不同
API(Application Programming Interface)应用程序编程接口,是一些预先定义的函数,或者软件系统不同部分组成衔接的约定。
SDK(Software Development Kit)软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
2. 性质不同
API是一个确定的功能,已经明确了它的作用(比如做加法)。而SDK就像是很多方法的集合体,是一个工具。比如你要做加法,你就调用计算机SDK的加法API实现,要做减法就调用减法API实现,无论你想完成什么计算,SDK里总有能实现的方法。
3. 封装的形式不同
API是封装在服务端层面的library,从网络服务的层面暴露出一些API接口,提供给使用这些服务的人去调用。因为封装在服务的层面,传输数据用的是网络协议(常用HTTP/TCP),就不需要管他是用什么语言实现的。
SDK的封装是在客户端层面的一个library(也叫做“包”或者“库”),这个library提供一些客户端API接口,类似于已经写好了的函数,你只需要调用它就好了。SDK暴露出来的接口都是和语言相关的,如果SDK是用Java写的,就需要用Java去调用那个函数;如果是SDK是用Objective-C写的,就需要用Objective-C去调用那个函数。
4. 功能和目的不同
API的主要功能为提供通用功能集,API同时作为一种中间件,为各平台提供数据共享的能力;而SDK发明的目的就是为了减少工作量,其主要功能是帮助程序员开发应用程序。