【碎碎念】API、SDK和框架的区别

作者: c67a5dea0ca4 | 来源:发表于2019-01-10 09:26 被阅读18次

最近工作接触到SDK,稍微了解了下,看了下网上举的例子,不是特别满意。

自己以买卖股票举个栗子,解释下API、SDK和框架之间的区别,以下是笔记。



API


API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。—— 百度百科

先不理会上面的概念,先讲一个买股票的事情。

例如你要买「茅台公司」的股票,你不能直接跑到证券交易所大喊我要买茅台股票,这样会没人鸟你,场面会一度很尴尬…
因为股市实际是采用「会员制」的,即你买卖股票必须通过「券商」完成



所以你买股票的过程就相当于

「你」->「券商」->「股票」

你间接的通过「券商」买到了股票,而你在买股票过程中,有一些操作

  • 填写信息
  1. 买多少
  2. 多少的价格买入
  • 结果

拥有了茅台XX股的股票



过程中,你只需要告诉「券商」买多少,多少价格买入,然后看最终的结果即可,即你压根不需要关系券商是如何购买到这些股票的,中间发生了哪些极其复杂的操作。



好的,记住上面买股票的例子。

回到软件开发中,同理,在软件开发中,也是同样的道理。

例如你要使用调用第三方的登录API进行登录,这里涉及到三个概念

  • 登录API
  • 登录API-入参
  • 登录API-出参



实际登录操作中

  1. 你通过填写「登录API-入参」,一般是账号和密码
  2. 使用「登录API」进行登录
  3. 获得「登录API-出参」返回的结果——登录成功

我们来对比下买股票的例子。

买股票 登录
API-入参 1. 买多少 2. 多少的价格买入 1. 账号 2. 密码
API 券商 登录API
API-出参 拥有了茅台XX股的股票 登录成功



有没有发现,道理的相同的,API是已经预设好的「函数」,你只需要按照API的要求填写「入参信息」,然后等待「出参结果」即可,中间API内部执行了哪些复杂的操作(例如登录,去校验这个账号有没有登录权限,账号密码是否正确,需不需要验证码验证等等)你是不需要关心的。

SDK


软件开发工具包(缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。—— 百度百科

上面的定义讲的比较复杂。
我们还是想讲讲买股票这件事。


假设你想购买上海证券交易所挂牌上市的市场规模最大,流动性最好的50只股票。
我们还是通过「券商」的方式购买

方式如下:
「你」->「券商」->「股票1」
「你」->「券商」->「股票2」
「你」->「券商」->「股票3」

「你」->「券商」->「股票50」

发现了吗,这样购买起来很累。



聪明的公司推出了「基金」,你甚至不需要到证券市场开户,即可购买基金。
而通过购买跟踪「中证50」的基金,就能实现每购买一笔100元的「中证50」基金,相当于购买了这50个公司每个公司2元的股票。

所以,你不通过「券商」,而选择在「场外」购买基金公司的基金,从而购买股票的方式可以看成如下。


「你」->「基金公司」->「券商」->「股票1~50」

酱紫,对「基金公司」而言,可以简单看成,他替你完成了在「券商」购买股票的50次过程


回到软件开发中,同样的道理
对于一件事,如果对方提供了API,但是你需要调用多个API才能完成这件事(好比买50个公司的股票,你需要调用50次「券商」的API)

这时候,对方如果提供了一个SDK,那么事情就变得简单了!
让SDK帮你处理这50次的调用,而你只需要给出一个指令即可。

所以,SDK可以看成是一个 更便利的整合API,同样有 入参和出参,只是这个「整合API」将你需要去各个地方调用各种API的事情给做了。


因此,SDK,可以看成是以一组API为输入,以另外一组API作为输出的中间件


用「微信登录」SDK作为例子,可以简单看成

买50个公司的股票 微信登录SDK
SDK-入参 1. 买多少 2. 多少的价格买入 用户在手机微信APP上点击「授权登录」
SDK 基金公司 微信登录SDK
SDK-出参 拥有了50家公司的股票 微信第三方登录成功

PS:我们最熟悉的「余额宝」货币基金,就可以看成一个特大号的SDK

框架


框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。—— 百度百科

框架,简单讲,就是一个特别NB的SDK,整合了大量SDK的功能,通过这个框架你能快速进行各种功能开发,而不需要关心底层是如何实现的。

真要举个栗子的话,你可以简单理解为「支付宝」吧。

通过支付宝,你能直接调用各种预定义好的SDK,做各种事情。
「你」->「支付宝」->「买基金SDK」
「你」->「支付宝」->「买黄金SDK」
「你」->「支付宝」->「买保险SDK」
「你」->「支付宝」->「缴纳水电费SDK」

PS:以上例子仅作为理解概念用,和实际定义有一定偏差

其他解释


在知乎看到另一个例子

· API 就是乐高积木的各种颗粒
· SDK就是一大包乐高积木,里面有颗粒(API),有各种小工具
· APP就是最后你搭出来的一艘飞船


(SDK、API 和 app 之间的关系和联系是什么? - snake doctor的回答 - 知乎

相关文章

  • 【碎碎念】API、SDK和框架的区别

    最近工作接触到SDK,稍微了解了下,看了下网上举的例子,不是特别满意。 自己以买卖股票举个栗子,解释下API、SD...

  • 心若明镜

    昨晚和孩子躺在床上,我们开始聊天, “外公外婆都喜欢碎碎念,妈妈有没有碎碎念呢?” “妈妈一样碎碎念。” “那妈...

  • 舒缓之想~被一条碎碎念搞得有点沮丧

    为了以后能够如实、没有负担的记录我的碎碎念,也为了这条碎碎念让我产生的疑惑和沮丧不再干扰我。 1、我记录碎碎念是为...

  • 理想的30岁

    我总是喜欢碎碎念,一直和身边人熟悉的人碎碎念,或者不方便的时候就自己写印象笔记和备忘录碎碎念,大部分时候写的都是焦...

  • 碎碎念

    投射我要提升吸金的观念,金钱方面什么样的碎碎念 每次都会激活 主题碎碎念 和日常的碎碎念 记录 来来去去就是那几个...

  • 【2022.2.12】今日碎碎念

    似乎很久没有写碎碎念的文字啦,虽然每天都在写日记,但碎碎念和日记似乎也有很大的不同。 今天写一点碎碎念吧! 昨天晚...

  • 改观

    我很少写碎碎念,但喜欢看别人的碎碎念。 最近几天阅读,发现碎碎念的文章少了。 讲真,碎碎念,发泄居多,正能量少。 ...

  • 炼心手帐课后感言:007.日常碎碎念

    碎碎念,就是无意识的内心嘀咕。 在炼心手帐语境里,碎碎念一般指向负面(大多在场景和剧情里引发负面情绪) 碎碎念背后...

  • 2018-10-18

    碎碎念 碎碎念 很烦碎碎念 生活的确是琐碎,可我很讨厌碎碎念。 爸爸是个很软弱的人,生活只是基本自理,并不追求...

  • 手帐初听课有感一:觉察自己内心的碎碎念进入到哪个阶段可以停止打断

    手账初听第二遍开始记录自己的碎碎念一周有余,发现自己的碎碎念主要集中在亲子和夫妻关系上。 碎碎念如何造成死循环的套...

网友评论

    本文标题:【碎碎念】API、SDK和框架的区别

    本文链接:https://www.haomeiwen.com/subject/ynrorqtx.html