浅谈API和SDK的区别
首先了解一下他们的定义
API:application program interface 应用程序接口
通常表示一些事先定义好的函数,为了向外部提供一组功能的实现,实现和其他软件的交互
SDK:software development kit 软件开发工具包
类似于第三方服务商提供的实现产品某一部分功能的工具包
举个栗子:
SDK:
比如支付宝,很多App、网站等消费者都需要使用支付这个功能/服务,但是又不想自己去开发这个东西,那么支付宝就说“你们告诉我,你们需要使用的环境是什么样的”;有人说“我是App,Android写的”,有人说自己是iOS,有人说“我是Web的”,还有人说我是Windows的,那么支付宝说:“没问题,Android的我有Android的SDK,你把这个SDK嵌入到你的代码里,我有一些Java的接口,Java接口里面有个函数叫pay,然后你传一些值给pay就可以了;如果你是iOS的,我还有另外一个叫iOS支付宝的SDK,你把它嵌入到你的iOS的App里面,然后里面有个Objective-C写的函数,也叫pay,同样传参数进来就可以了;
SDK只向外暴露一个API接口,无法看到里面的源码。不知道代码的实现细节
API:
举个例子,支付宝除了SDK,也会提供像API的网络接口。如果你不想集成SDK的时候,也可以自己花时间去实现支付的逻辑,API提供方可以告诉你,需要先调用这个API,得到某个信息之后,再调用另外一个API,拿到另外一个信息,再调用下一个API,拿到下一个信息…这中间可能有好几个步骤,最后完成pay。
SDK对指定功能的实现是完全隐藏的,只需要调用接口函数,传进去特定的值即可实现提供商制定好的功能
API可能会包括许多个接口函数,这些函数需要按照提供的规则进行顺序调用,所以在调用不同函数的期间可以插入自己定制化的代码
最后,贴近生活讲讲两者的关系:
有一杯密封饮料,它的名字叫做“SDK”。
饮料上插着吸管,吸管的名字叫“API”。
把你叫做“XX系统”。
如果你想喝到SDK里的饮料(让系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到饮料。
浅谈API和SDK的区别的更多相关文章
- 浅谈 unix, linux, ios, android 区别和联系
浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux UNIX 操作系统(尤尼斯) ...
- 浅谈cookie 和session 的区别
具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cooki ...
- 浅谈Log4j和Log4j2的区别
相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程.我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代. log4j是Apache的 ...
- 理解API和SDK的区别
API--功能的集成(封装等级低) SDK--任务的集成(封装等级高) 比如,App中完成微信支付.整个过程下来需要三次与微信服务器的访问,一次block回调.这四个步骤可以当作是4个api,如果把这 ...
- 软件包,API,SDK的区别
参考资料: https://www.jianshu.com/p/cac186cb168b https://blog.csdn.net/snowin1994/article/details/806080 ...
- 浅谈 facebook .net sdk 应用
今天看了一篇非常好的文章,就放在这里与大家分享一下,顺便也给自己留一份.这段时间一直在学习MVC,另外如果大家有什么好的建议或者学习的地方,也请告知一下,谢谢. 这篇主要介绍如何应用facebook ...
- 从内部入手,浅谈malloc和new的区别
想要理解一样事物,就要先用自己的语言去描述一件事物.在我查阅资料后,发现malloc函数简单说来就是空闲内存空间收集器,并把空闲空间关联起来,用术语来说就是:将空闲内存块合并起来并称为"闲置 ...
- 浅谈API网关(API Gateway)如何承载API经济生态链
序言 API经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API成为企业连接业务的核心载体, 并产生巨大的盈利空间.快速增长的API规模以及调用量,使得企业IT在架构上.模 ...
- 浅谈CPU和GPU的区别
导读: CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,而GPU面对的则是类型高度统一的.相互无依赖的大规模数据 ...
随机推荐
- Luogu3594 [POI2015]WIL-Wilcze doły (双端队列)
单调性显然,双端队列队列维护严格单调递减手写双端队列真的可恶. #include <iostream> #include <cstdio> #include <cstri ...
- CF580D Kefa and Dishes (状压DP)
枚举最后食物 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...
- scratch制作彩虹猫病毒模拟器
scratch制作彩虹猫病毒模拟器 hello,大家好. 编程慢慢更加接近生活,甚至小孩也开始学了,比如scratch编程,小编今天就带了一件作品(彩虹猫病毒模拟器) 我们先看一下效果| 做的还可以, ...
- java数组---数组的使用(打印,求和,最大值)
public static void main(String[] args) { int[] arrays={1,2,3,4,5}; //打印该数组 for (int i = 0; i < ar ...
- 「学习笔记」字符串基础:Hash,KMP与Trie
「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...
- BI如何实现用户身份集成自定义安全程序开发
统一身份认证是整个 IT 架构的最基本的组成部分,而账号则是实现统一身份认证的基础.做好账号的规划和设计直接决定着企业整个信息系统建设的便利与难易程度,决定着系统能否足够敏捷和快速赋能,也决定了在数字 ...
- Linux或Docker里安装minio / Docker中安装h5ai
此文为单节点搭建操作 Linux中搭建minio 对象存储服务器 下载minio安装包 wget https://dl.minio.io/server/minio/release/linux-amd6 ...
- Docker实用篇
Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦. 分布式系统中,依赖的组件非常多,不同组件之间 ...
- KingbaseES 支持列加密
KINGBASE 列加密支持 sm4 和 rc4 加密算法,具体算法在 initdb 时指定,默认是 sm4.要使用列加密,必须 shared_preload_libraries = 'sysencr ...
- redis的简单学习记录
安装 1 brew install redis 启动redis服务 1 redis-server & 启动命令 1 redis-cli -h 127.0.0.1 -p 6379 利用gored ...