SDK是什么
SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。
这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。
软件开发工具包,只是简单的为某个程序设计语言提供应用程序接口的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。
SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。软件工程师通常从目标系统开发者那里获得软件开发包。
为了鼓励开发者使用其系统或者语言,许多 SDK 是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载,有时也被作为营销手段。例如,营销公司会免费提供构建SDK 以鼓励人们使用它,从而会吸引更多人由于能免费为其编程而购买其构件。
sdk和api的区别
SDK和API都是类似于公共服务的东西,都代表的是一种封装,只是封装的形式不一样:
SDK的封装是在客户端层面的一个library(也叫做“包”或者“库”),这个library提供一些客户端API接口,类似于已经写好了的函数,你只需要调用它就好了。SDK暴露出来的接口都是和语言相关的,如果SDK是用Java写的,就需要用Java去调用那个函数;如果是SDK是用Objective-C写的,就需要用Objective-C去调用那个函数。
API是封装在服务端层面的library,从网络服务的层面暴露出一些API接口,提供给使用这些服务的人去调用。因为封装在服务的层面,传输数据用的是网络协议(常用HTTP/TCP),就不需要管他是用什么语言实现的。
栗子来了!
有两套炒菜的机器,都能做酸辣土豆丝,一个叫API,一个叫SDK。
API给了你一个说明书(接口文档),上面说:炒酸辣土豆丝,需要土豆、辣椒、醋、盐。
API上边有几个洞(接口),
第一个洞,扔进去一个土豆(入参),吐出来一个削了皮的土豆(返回值);
第二个洞,扔进去一个削了皮的土豆,吐出一堆土豆丝;
第三个洞,扔进去一个辣椒,吐出来一堆辣椒丝;
第四个洞,扔进去一些醋和盐,吐出来一份配比好的调料;
说明书上还说了:拿着那些东西,找一口锅,你就能炒出土豆丝了!
SDK呢,只有一个洞。也有个说明书,列出了需要的材料。并且告诉你,只要把这些材料往里一扔,我就能给你一盘酸辣土豆丝!
用户用了之后,反馈给厂家:
SDK确实方便,但是他是咋做的酸辣土豆丝呢?我们看不着啊!
API真麻烦,还得自己去炒!但是我发现,卧槽!用API还能做出炝炒土豆丝!
不open的API只是放在你自己家的厨房里,只有你自己能用;
open的API呢,放到了大街上,谁都能用!只要每个人在用之前先输入个账号密码,炒菜机的生厂厂家核对一下,对了就能用!