【每天一个知识点】SDK和API

500 阅读3分钟

图片.png

sdk和api的区别

图片.png

图片.png

0/总结

sdk,软件开发工具包
就是在一个软件1中又嵌入另一个软件2,由此来帮助软件1完成某项工作。

假如你开发的软件是一辆汽车,那么sdk可以是车载音响,也可以是蓝牙技术。

sdk,就是通过第三方服务商实现产品功能的软件工具包。
通常,sdk是由专业的公司提供专业的服务集合,比如移动支付技术,语音识别技术。
(移动支付技术的应用是很多的,但并不是每家公司都有自己的移动支付技术,因为这一项技术很难,自研的成本很高,所以一般小公司不会投入人力财力去研发自己的移动支付技术,会外采,及去使用第三方的技术,这就是使用sdk)

开发者在开发自己的软件的时候,不需要去开发软件中的每一个功能,
针对一些功能,完全可以去使用sdk来实现自己的目的。

一、api是什么

讲个小故事:
   研发人员A开发了软件A,研发人员B正在研发软件B。
   有一天,研发人员B想要调用软件A中的部分功能函数来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?  
   研发人员A想了一个好主意:研发人员A把软件A里的研发人员B需要的功能函数打包好,写成一个函数。
   研发人员B把这个函数放在软件B里,就能直接调用相应的功能了!
   其中,研发人员A打包好的那个函数就是API
   这就是API的诞生。

日常生活中,我们有很多类似API的场景,比如:
     电脑需要调用手机里面的信息,这时候你会拿一根数据线将电脑手机连接起来,电脑和手机上连接数据线的接口就相当于“API接口”。如图所示:

二、sdk是什么

SDK 就是 Software Development Kit 的缩写,中文意思就是【软件开发工具包】。
这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的【集合】都可以叫做sdk.

    1、SDK的外语全称是Software Development Kit,中文为:软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合;

2、可以将其理解为,由【第三方服务商】提供的实现软件产品某项功能的工具包,里面一般以集合kpi和文档、范例、工具的形式出现,也就是由很多类型文件的集合;

3、通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术等,同时资源优势类的公司也提供资源共享的SDK,如一些广告SDK提供盈利渠道,分发SDK提供产品下载渠道。
4、目前在国内互联网环境中大部分的SDK都是免费的, 为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构建SDK 以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。

三、API和SDK的区别

总的来说,两者没有值得比较的区别,因为是具有关联性的两种东西。
你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能
这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API
    
比如——我们现在要在企业ERP系统中增加某个功能(比如自动备份、数据分析、云存储等),但又不想耗费大量时间、也没那么多研发亲自去做这个功能。
这时我们可以选择使用这个“SDK”软件包,把ERP系统连接上SDK的API接口,就可以使用SDK软件包里的功能。
   
举个实例辅助理解:
   【中铁大桥科研院】有一个自研的信息平台,用于管理业务数据。
    但他们曾面临一个问题——尽管有信息平台,却因为系统的独立性,数据的上传和备份,需要依靠人工在excel里来回操作,效率很低。
    由于系统的开发周期长、成本高,桥科院将目光聚焦到现成的功能软件上。
    后来通过API将简道云直接插入公司数据库,数据可自动上传至信息平台上并统一展示;再通过webhook把数据推送到服务器,实现自动备份。
    下图是:API将信息平台与简道云相连

    在这一过程中,简道云扮演的角色就是SDK,而简道云配备API接口,可以对接外部系统,让桥科院不用开发直接实现了数据自动上传、备份的功能。
    
最后,贴近生活讲讲两者的关系:
    有一杯密封饮料,它的名字叫做“SDK”。
    饮料上插着吸管,吸管的名字叫“API”。
    把你叫做“XX系统”。
    
    如果你想喝到SDK里的饮料(让系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到饮料。
    所以:SDK=放着你想要的软件功能的软件包
         API=SDK上唯一的接口
    不知道你这次真的懂了没?