API、SDK、DLL有什么用?
https://new.qq.com/omn/20190319/20190319A0O9RK.html?pc
曾经讨论过一个问题:“产品经理需要什么技能?”
在一圈设计、开发同学沟通下来后,我们发现产品经理是:
“什么都不会,但什么都要了解”
“什么都不会,就会说”
.....
尤其是在产品工场景下,我们面对的开发知识有一些关键名词我们知晓却不知道背后的区别。今天以SDK、API、DLL3个关键词切入,给产品朋友们带来三者的区别。本文来自华为的产品经理:Simon.Wang 原创支持。
SDK、API、DLL
这几个,没有技术背景的产品经理可能比较陌生,或许知道,也未必知道底层的原因。
这三个其实不是一个层面的东西。
API(Application Programming Interface):应用程序编程接口
SDK(Software Development Kit)软件开发包
DLL(Dynamic Link Library):动态链接库
API(Application Programming Interface)
维基百科的对API的定义:是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法,晦涩难懂。
那什么是API呢?
举个例子:
比如你想开一家快餐店,你就必须要了解开快餐店要做什么,需要满足一系列标准才能开店,你要提供餐饮服务必须遵守:
工商管理税法
公共卫生标准
食品安全标准
环境安全标准
这些标准就是API...由管理部门制订,遵守才能开店。所以API就是要遵守的标准。
那对于我们现实开发环境来说,API就是接口。满足了接口的要求,就可以请求调用。
如图:一个医生列表的API
左侧是医生列表,右侧是该列表的API,列表之所以能显示,就是因为调用了获取医生列表的接口(API),API里定义了每个UITableViewCell里面的参数、类型、是否必选等。用户请求医生列表时,医生列表API被调用,数据就展示出来了,前端的界面就看到了医生的信息。
OK!API我们或多或少应该有些认知了!
SDK(Software Development Kit)软件开发包
那什么是SDK呢?
举个例子:
你的快餐店经过一些列的标准都合格了,你终于可以开一家快餐店了,于是你又要开始繁忙了,你需要:
签约加盟、
选择店址、
门店装修、
培训员工......
这一套流程就是你快餐店的SDK,就像任务清单一样,它帮助你快速实现你要做的事...
那对于我们现实开发环境来说,SDK是干什么用的呢?
比如测肤:
测肤是一件很难事情,测出用户面部特征,比如肤质、肤色、肤龄、痘痘、黑圆圈、皱纹、黑头情况,技术的投入也非常大,美图开发了测肤功能,美图美妆把测肤变成了商业模式,可见测肤的重要性,如果美图的伙伴公司也想用测肤功能又不想自己单独再次开发,这就需要使用美图提供测肤SDK了,这样就可以快速实现。
所以SDK就是开发包,是提供给开发人员进行应用程序开发的,这样程序员就可以快速的建立应用软件,而省去了编写硬件代码和基础代码框架的过程。
OK!SDK我们或多或少应该有些了解了!
DLL(Dynamic Link Library):动态链接库
那什么是DLL呢?
举个例子:
比如你想吃饭,嫌麻烦没时间自己做饭吃,于是你选择了出去吃,你看了很多快餐店:
黄焖鸡、
大娘水饺、
沙县小吃、
其他快餐店…
你可以随便去,这些快餐店就是DLL...提供某种功能实现并且不需要你了解细节...你只管走进去给钱点餐吃饱抹嘴走人...
那对于我们现实开发环境来说,DLL就是动态链接库。
其实在Windows环境下含有大量.dll格式文件,这是文件就是动态链接库,也是一种可执行文件格式。跟.exe文件不同的是,.dll文件不能直接执行,他们通过由.exe在执行时装入,内含有一些资源以及可执行代码等。
那DLL的作用是什么呢?
就好比一列火车,如果你做成的火车是从头到尾都是不可分割的,这样的话,如果这列火车的中间有一小部分出了问题,也许你就要把整个火车都卸了,但是用了这种动态链接库的话就好比是一节一节的火车,如果中间出了问题,只要把它出问题的那节卸下来修理就行。
而每一个dll动态链接库就是类似火车中的每一小节,一个比较好的程序都是由多个动态链接库组成,这样做的还有一个好处就是可以减少冗余,如果一个程序中要重复调用一段功能就要将这部分做成动态链接库,就比如windows系统中的user32.dll之类的,应用程序可以通过调用这部分而不必再去特意创建一个类似功能的程序段。
希望能帮助你们理解分清SDK、API、DLL…