SDK和API的区别
1.API
API 全称 Application Programming Interface(应用程序接口)通俗来讲 API 就是可以轻松实现和其他软件的交互。
一般是指一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
小组A开发了软件A,小组B正在研发软件B。B想要调用A的部分功能来用,但是他又不想从头看一遍A的源码和功能实现过程,怎么办呢?小组A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!其中,API就是研发人员A说的那个函数。
2.类API场景
电脑想要获取调用手机的相关信息,用数据线将电脑手机连接起来,电脑和手机上连接数据线的接口就相当于“API接口”,如图所示:
3.SDK
- SDK 就是 Software Development Kit(软件开发工具包)。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
- SDK被开发出来是为了减少程序员工作量的。
有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱购买省事。
4.API和SDK的区别
总的来说,两者没有值得比较的区别,因为是具有关联性的两种东西。你可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,只有一个小小接口可以联通外界,这个接口就是API。
比如我们现在要在企业ERP系统中增加某个功能(比如自动备份、数据分析、云存储等),但又不想耗费大量时间,也没那么多研发亲自去做这个功能。这时我们可以选择使用SDK软件包,把ERP系统连接上API接口,就可以使用SDK软件包里的功能。
举个实例辅助理解: 中铁大桥科研院 有一个自研的信息平台,用于管理业务数据。但他们曾面临一个问题,尽管有信息平台,却因为系统的独立性,数据的上传和备份,需要依靠人工在excel里来回操作,效率很低。由于系统的开发周期长、成本高,桥科院将目光聚焦到现成的功能软件上。后来通过API将某个功能系统平台直接插入公司数据库,数据可自动上传至信息平台上并统一展示,再通过webhook把数据推送到服务器,实现自动备份。
在这一过程中,功能系统平台扮演的角色就是SDK,其配备的API接口,可以对接外部系统,让桥科院不用开发直接实现了数据自动上传、备份的功能。