API和SDK之间的区别

Sli*_*ime 179 api sdk

我试图向非开发人员解释API和SDK之间的区别.我需要解释为什么商业指纹软件供应商可能不会提供SDK,尽管他们肯定会使用一个.

设备供应商和软件供应商都可以而且应该公开定义良好的API.该API允许其他软件程序(被编写)与供应商自己的软件组件或硬件设备互操作.

如果有人有更多的想法来清楚地解释这一点,我将非常感谢这些建议.我想强调的是,目标是向不懂开发人员术语的非程序员解释这些概念.

具体来说,在指纹传感器与软件进行注册/验证的情况下,以下是我尝试解释它的方法:

如果我是指纹设备/传感器制造商而不是编写软件的业务,那么我可以更好地推广我的产品的方法是:

  1. 确保我的设备驱动程序可以安装在各种操作系统上
  2. 为软件开发人员定义并提供API,以编写程序(例如,用于注册,验证)以"交谈"或使用我的设备
  3. 开发并提供SDK(超出API的一步),使软件开发人员能够更轻松,更快速地编写适用于我的设备的程序.SDK可以提供帮助程序代码库,参考应用程序,文档等.

Jas*_*n S 219

小菜一碟:

  • API是一个接口.这就像电话系统的规格或家里的电线.任何*都可以使用它,只要它知道如何接口.您甚至可以购买现成的软件来使用特定的API,就像您可以购买现成的电话设备或插入家中交流电线的设备一样.
  • SDK是实现工具.它就像一个套件,允许你建立一些定制的东西,以连接到电话系统或电线.

*任何东西都可以使用API​​.某些API具有安全规定,要求许可证密钥,身份验证等,这可能会禁止在特定实例中完全使用API​​,但这仅仅是因为特定的身份验证/授权步骤失败.任何提供正确凭据的软件(如果需要)都可以使用API​​.

**从技术上讲,如果API有详细记录,您不需要SDK来构建自己的软件来使用API​​.但是拥有SDK通常会使这个过程变得更加容易.

  • 继续这个很好的解释,即API可以是例如http/REST API,而SDK可以是HttpClient之上的库,以使其更快更容易地与REST Web服务交互. (16认同)
  • 更简单地说,API是一个接口.而SDK是界面上的抽象层. (3认同)
  • 我用于解释的其他一些想法是 iPhone 示例(专有代码但定义明确的 API)、电话插孔或 USB 端口示例,以更易于视觉理解的硬件类比来解释软件界面是什么 (2认同)
  • SDK 不一定是接口上的抽象层;SDK是接口的实现。(如果还有另一个抽象层,问题是为什么它没有被指定为接口本身的一部分) (2认同)

Abd*_*man 51

API就像一个令人费解的游戏的构建块,孩子们玩这个游戏以加入不同形状的块并构建他们能想到的东西.

另一方面,SDK是一个适当的工作室,所有开发工具都可用,而不是预先形成的构建块.在研讨会中,您拥有实际工具,并且您不仅限于块,因此可以创建自己的块,或者可以创建没有任何块的东西.

没有SDK或API的编码就像是在没有研讨会的情况下从头开始创建 - 你甚至必须自己制作工具


小智 25

假设公司C以某种方式提供产品P和P涉及软件.然后,C可以为驱动P软件系统的软件开发人员提供库/库集.

该库/库是SDK.它是P系统的一部分.它是软件开发人员使用的工具包,用于修改,配置,修复,改进等P的软件.

如果C想要向其他公司/系统提供P的功能,那么它就是通过API实现的.

这是P的接口.外部系统与P交互的一种方式.

如果从实施的角度考虑,它们看起来非常相似.特别是现在互联网已经变得像一个大型的分布式操作系统.

但就目的而言,它们实际上是截然不同的.

您使用SDK构建内容,并使用API​​来使用或使用某些内容.

  • 你应该把你的答案编辑到最后一行并跳过所有的blah-de-blah. (21认同)

小智 11

应用程序编程接口是一组例程/数据结构/类,它指定了与OS X,Android,项目管理应用程序,虚拟化软件等目标平台/软件交互的方式.

虽然软件开发工具包是API/s的包装,但它使开发人员可以轻松完成工作.

例如,Android SDK有助于开发人员与Android平台进行整体交互,而平台本身则由通过API进行通信的复合软件组件构建.

此外,有时SDK是为了便于在特定编程语言中进行开发而构建的.例如,Selenium Web驱动程序(内置于Java)提供API以本机驱动任何浏览器,而capybara可被视为一个SDK,便于Ruby开发人员使用Selenium Web驱动程序.但是,Selenium Web驱动程序本身也是一个SDK,因为它将与各种本机浏览器驱动程序的交互组合到一个程序包中.


jle*_*lew 9

我不确定这两个术语有任何官方定义.我理解一个API是一组记录的可编程库和支持源,如头文件或IDL文件.SDK通常包含API,但通常经常添加编译器,工具和示例.


Fun*_*eks 7

API是关于如何做某事的规范,一个界面,例如"铁轨相距四英尺,金属条宽1英寸"现在您已经拥有了API,现在可以建造适合这些铁路的火车跟踪,如果你想去任何地方.API只是关于如何构建代码的信息,它没有做任何事情.

SDK是一些已经担心规范的实际工具包."这是一辆火车,一些煤炭,一个维修人员.用它来到一个地方"使用SDK你不用担心具体细节.SDK是实际代码,它可以单独用来做某事,但当然,火车不会自动启动,你仍然需要指挥来控制火车.

SDK也有自己的API."如果你想给火车提供动力,把煤放进去","拉动蓝色的杠杆移动火车.","如果火车开始表现得好笑,请打电话给维修人员"等.


ser*_*gio 5

API = 可用单词及其含义的字典(以及组合它们所需的语法)

\n\n

SDK = 一个适合2岁宝宝的文字处理系统\xe2\x80\xa6\xe2\x80\xa6,可以根据想法进行书写

\n\n

虽然几年后你可以去学校并成为你的语言的大师,但使用 SDK 将帮助你立即写出完整有意义的句子(原谅这样一个事实,在这个例子中,作为一个婴儿,你甚至还没有学会学习任何其他语言至少要学会使用 SDK。)

\n