首先了解一下他们的定义

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的区别的更多相关文章

  1. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux   UNIX 操作系统(尤尼斯) ...

  2. 浅谈cookie 和session 的区别

    具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cooki ...

  3. 浅谈Log4j和Log4j2的区别

    相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程.我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代. log4j是Apache的 ...

  4. 理解API和SDK的区别

    API--功能的集成(封装等级低) SDK--任务的集成(封装等级高) 比如,App中完成微信支付.整个过程下来需要三次与微信服务器的访问,一次block回调.这四个步骤可以当作是4个api,如果把这 ...

  5. 软件包,API,SDK的区别

    参考资料: https://www.jianshu.com/p/cac186cb168b https://blog.csdn.net/snowin1994/article/details/806080 ...

  6. 浅谈 facebook .net sdk 应用

    今天看了一篇非常好的文章,就放在这里与大家分享一下,顺便也给自己留一份.这段时间一直在学习MVC,另外如果大家有什么好的建议或者学习的地方,也请告知一下,谢谢. 这篇主要介绍如何应用facebook ...

  7. 从内部入手,浅谈malloc和new的区别

    想要理解一样事物,就要先用自己的语言去描述一件事物.在我查阅资料后,发现malloc函数简单说来就是空闲内存空间收集器,并把空闲空间关联起来,用术语来说就是:将空闲内存块合并起来并称为"闲置 ...

  8. 浅谈API网关(API Gateway)如何承载API经济生态链

    序言 API经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API成为企业连接业务的核心载体, 并产生巨大的盈利空间.快速增长的API规模以及调用量,使得企业IT在架构上.模 ...

  9. 浅谈CPU和GPU的区别

    导读: CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,而GPU面对的则是类型高度统一的.相互无依赖的大规模数据 ...

随机推荐

  1. POJ2559/HDU1506 Largest Rectangle in a Histogram (cartesian tree)

    Die datenstruktur ist erataunlich! #include <iostream> #include <cstdio> #include <cs ...

  2. python推导式与海象运算符

    背景:介绍两种python用于语句优化的用法 一.推导式 1.推导式简介: Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体. 支持:列表(list).元 ...

  3. Unity3D学习笔记12——渲染纹理

    目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实现就 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  5. window桌面背景图片

    通过修改注册表项: \HKEY_CURRENT_USER\Control Panel\Desktop下的几个值,及可以将我们想要的图片设置成桌面的背景图 TileWallpaper   Wallpap ...

  6. 配置IConfiguration

    前言 配置是我们必不可少的功能,我们在开发中,经常会遇到需要获取配置信息的需求,那么如何才能优雅的获取配置信息? 我们希望新的配置: 支持强类型 配置变更后通知 学习难度低 快速入门 根据使用场景我们 ...

  7. 第八十二篇:Vue购物车(三) 实现全选功能

    好家伙, 继续完善购物车相应功能 1.如何实现全选和反全选 1.1.全选框的状态显示(父传子) 来一波合理分析: 在页面中,有三个商品中 三个商品中的第二个未选择, 我么使用一个计算属性(fullSt ...

  8. Mac_linux_ssh防掉线

    vi ~/.ssh/config 加入一条 ServerAliveInterval 60 #客户端主动向服务端请求响应的间隔

  9. 阿里云CentOS7安装K8S

    1. 在阿里云山申请三台云服务器 1.1 环境准备 完成配置后的信息 服务器IP 操作系统 CPU 内存 硬盘 主机名 节点角色 172.18.119.145 centos7 2 4G 50G k8s ...

  10. 深入探究 K8S ConfigMap 和 Secret

    ConfigMap 1.什么是 ConfigMap? ConfigMap 是用来存储配置文件的 Kubernetes 资源对象,配置对象存储在 Etcd 中,配置的形式可以是完整的配置文件.key/v ...