不会吧?你还不知道API和SDK是什么吗?

随着软件规模的日益庞大,开发者常常需要把复杂的系统划分成小的组成部分,这个时候,编程接口的设计就显得尤为重要。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

“小课堂系列”| 第18

而对于接口,最让大家耳熟能详的莫过于API和SDK。这两者都有哪些特点,作为开发者又该如何选择,今天的这篇文章,将给你全方位的解答。

01

API的概念

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

通俗易懂的说,API其实就是别人已经写好的可以实现特定功能的函数,而你只需要调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能,且不需要知道这些功能的具体实现过程都是什么。

应用案例

示例场景:你是一家小企业,公司网站上有一个表格是用来给客户注册预约的。你想要凭借这些预约细节信息,让客户能够自动在谷歌日程上创建活动。

API使用:这就意味着,你的网站服务器需要直接与谷歌服务器进行对话,在掌握既定细节信息的情况下,申请创建活动。之后,你的服务器就会接收到谷歌的响应并进行处理,然后将相关信息发送回浏览器,比如说向用户发送一个确认信息。

现在也有公司将API包装成产品

案例:Weather Underground出售其天气数据API的访问权限给其他人。

02

API的程序功能

API分为(Windows、Linux、Unix等系统的)系统级API,及非操作系统级的自定义API。

远程过程调用(RPC)

通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。

标准查询语言(SQL)

是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。

文件传输

文件传输通过发送格式化文件实现应用程序间数据共享。

信息交付

指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。

03

API应用的重要性

由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。

程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

应用程序接口是一组数量上千、极其复杂的函数和副程序,可让程序员做很多任务作,譬如“读取文件”、“显示菜单”、“在视窗中显示网页”等等,操作系统的API可用来分配存储器或读取文件。

04

SDK的概念

SDK即“软体开发工具包”,一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合

通俗点是指由第三方服务商提供的实现软件产品某项功能的工具包。

通常SDK是由专业性质的公司提供专业服务的集合,比如提供安卓开发工具、或者基于硬件开发的服务等。

也有针对某项软件功能的SDK,如推送技术、图像识别技术、移动支付技术、语音识别分析技术等,在互联网开放的大趋势下,一些功能性的SDK已经被当作一个产品来运营。

开发者不需要再对产品的每个功能进行开发,选择合适稳定的SDK服务并花费很少的精力就可以在产品中集成某项功能。

05

SDK与API二者对比

S从本质上来看,API是一个具体的函数,一个确定的功能,已经明确了它的作用(比如做加法)。

而SDK就像是很多方法的集合体,是一个工具集。比如你要做加法,你就调用计算机SDK的加法API,要做减法就调用减法API,无论你想完成什么计算,SDK里总有能实现的方法。

再比如你要开车去一个地方,车就是SDK,可以让你完成到达目的地的目的。车上的方向盘,灯,发动机,油门,刹车像一个个API,你在使用SDK时,就是调用一个个API功能。如果贴心一点的车,可能还带有使用说明(SDK说明文档)。

SDK还有一点是除了提供完善的接口,它还会给你提供开发环境。例如java的JDK里,除了各种API,还包括了java运行需要的JRE。

06

通俗语言解释

API

前端调用后端数据的一个通道,就是我们俗说的接口

通过这个通道,可以访问到后端的数据,但是又无需调用源代码

SDK

工程师为辅助开发某类软件的相关文档、范例和工具的集合

使用SDK可以提高开发效率,更简单的接入某个功能

举例说明:一个产品想实现某个功能

可以找到相关的SDK

工程师直接接入SDK,就不用再重新开发了

现在,你明白了吗?有什么问题,随时给我们留言哦~

- END -

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200909A0MW8P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券