nvidia frameview sdk有什么用_协作利器:SDK和API
新的全球性商业规则是:要么协作,要么消失。——《维基经济学》世界正在改变,全球的商业规则也在变化,在当今越来越重视合作的社会,只要涉及到软件定义功能的产品,一般都会有这两样:SDK和API。闻西也常常在工作中接触他们,因为,很多顾客希望能够在公司的产品上,开发一些有自己特色的功能,很显然,这不是闻西当前工作的特殊之处,而是具备普遍性,很多企业也都在提供SDK或API给客户,从而在某种程度上,与客户
新的全球性商业规则是:要么协作,要么消失。
——《维基经济学》
世界正在改变,全球的商业规则也在变化,在当今越来越重视合作的社会,只要涉及到软件定义功能的产品,一般都会有这两样:SDK和API。
闻西也常常在工作中接触他们,因为,很多顾客希望能够在公司的产品上,开发一些有自己特色的功能,很显然,这不是闻西当前工作的特殊之处,而是具备普遍性,很多企业也都在提供SDK或API给客户,从而在某种程度上,与客户进行合作。
通过SDK或API进行开发合作,虽然前期费时费力,似乎有点吃力不讨好,但一旦合作步入正轨,就同客户形成了深度的绑定,往往比单纯出售产品给客户要来的牢靠,客户也不容易流失。
这点恐怕是SDK或API最显而易见的好处。
好归好,但首先还是得了解它们。
从三个问题入手:
1)什么是SDK?
2)什么是API?
3)SDK和API有什么区别?各自优缺点都有哪些?
什么是SDK?
SDK 就是 Software Development Kit 的缩写,翻译过来——软件开发工具包。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做SDK。
SDK被开发出来是为了减少客户程序员工作量的。
比如:
有公司开发出某种软件的某一功能,把它封装成SDK(比如数据分析SDK就是能够实现数据分析功能的SDK),出售给其他公司做开发用,其他公司如果想要给软件开发出某种功能,但又不想从头开始搞开发,直接付钱省事。
划重点:
1)SDK是一套工具包,需要原厂做开发,里面包括了开发文档(就是说明书),范例(源代码写的),DEMO工具,封装好的库等;
2)对于某些公司不想从头搞开发,直接用SDK是最省钱高效的办法;
什么是API?
API即“应用程序编程接口”,是一些预先定义的函数,目的是作为“介面”沟通两个不同的东西,提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
其实就是别人已经写好的可以实现特定功能的函数,而你只需要根据他提供好的接口,也就是调用他的方法,传入他规定的参数,然后这个函数就会帮你实现这些功能。
划重点:
1)API其实就是一些预先定义好的函数,作为一个接口提供给其他开发人员使用;
借助一个小故事来通俗的说明下什么是API:
研发人员A开发了软件A,研发人员B正在研发软件B。有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数。你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!其中,API就是研发人员A说的那个函数。
SDK和API的区别
SDK相当于开发集成工具环境,API就是数据接口。在SDK环境下调用API数据。
实际上SDK包含了API的定义,API定义一种能力,一种接口的规范,而SDK可以包含这种能力、包含这种规范。但是SDK又不完完全全只包含API以及API的实现,它是一个软件工具包,它还有很多其他辅助性的功能。
SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。
简单的说:API是SDK的一个子集,API只定义了一些函数,并给了调用的方法,而SDK不仅仅定义了相关函数,给了调用方法,还直接把功能给实现了,供开发人员直接调用,而不需要重新开发。
也正是因为这样的区别,提供给客户的API,就只有一个文档,文档告诉了客户如何调用产品API接口的方法,如何传入参数等。
而提供给客户的SDK,除了说明文档,还包括由开发人员开发并编译好了的库文件(如果是Windows SDK就是DLL库文件),DEMO程序,源代码示例(示例是最佳的告诉开发人员使用SDK的办法了)。
应该提供SDK还是API呢?
这要视情况而定。
如果客户具备很强的开发能力,提供API给客户对于企业来说,是最省事的,客户在开发时,也只是调用你产品的API接口而已,客户碰到问题找你,无非就是你们的产品是否有这个API接口,如果没有,企业能否开发或开放他所需要的接口,除此之外的一切开发工作,都在客户侧。
提供API给客户,客户需要的开发工作量大,费时长,但好处是,控制权在自己手里,想怎么开发就怎么开发,碰到非API接口本身的问题,自己解决,不受限于原厂,风险可控。
如果客户的开发能力很一般,且要求能够快速实现自己想要的功能,那么提供SDK给客户,就是最合适的了。
提供SDK给客户,客户最省事,客户的开发工作量小,但他如果碰到SDK的问题,他必须找原厂,因为提供给客户SDK包里面可供调用的库文件,是编译过的,客户无法进入到源代码级别进行调试定位问题,必须将相关信息反馈给原厂,由原厂进行源代码级别的分析定位,一来一回,很是折腾。
提供SDK给客户,客户最省事,但碰到SDK层面的问题,客户无法自己解决,一定要原厂来解决,风险不可控。
最后,打个比方来帮助还在云里雾里的你来理解二者的区别:
有一罐可乐,它的名字叫做“SDK”。
可乐上插着吸管,吸管的名字叫“API”。
你这个人就是客户要开发的“XX系统”。
如果你想喝到SDK里的可乐(让XX系统拥有SDK中的功能),你必须通过API这根吸管来实现(通过API连接你的系统和SDK工具包),否则你就喝不到可乐。
所以:
SDK=放着你想要的软件功能的软件包
API=SDK上的接口(或产品上的接口)
================================
欢迎关注我的公众号:wenxi_tech(或公众号搜索“闻西说科技”)
也可前往闻西说科技个人博客:闻西说科技 - 说大家都看得懂的科技!
本文同步更新于“闻西说科技"公众号及知乎专栏
更多推荐


所有评论(0)