API和SDK之间的区别

时间:2009-05-07 13:52:20

标签: api sdk

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

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

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

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

  

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

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

10 个答案:

答案 0 :(得分:217)

一块蛋糕:

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

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

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

答案 1 :(得分:50)

API 就像是一个令人费解的游戏的基石,孩子们可以用它来加入不同形状的积木并构建他们能想到的东西。

另一方面,

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

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

答案 2 :(得分:25)

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

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

如果C希望将P的功能提供给其他公司/系统,则使用 API 来实现。

这是P的接口。外部系统与P交互的方式。

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

但是,他们的目的实际上非常不同。

您使用SDK构建内容,并使用或使用API​​。

答案 3 :(得分:10)

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

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

例如,Android SDK可以帮助开发人员与Android平台进行整体互动,而平台本身则是由通过API进行通信的复合软件组件构建的。

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

答案 4 :(得分:9)

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

答案 5 :(得分:7)

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

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

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

答案 6 :(得分:3)

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

SDK =一个Word处理系统......适用于2岁婴儿......从想法开始写作

虽然你可以在几年后上学并成为你的语言的主人,但使用SDK可以帮助你立刻写出完整有意义的句子(原谅这个例子,在这个例子中,作为一个婴儿,你的天堂'甚至学习了任何其他语言,至少学会使用SDK。)

答案 7 :(得分:2)

怎么样......就像你想在家中安装家庭影院系统一样。使用API​​就像获取所有电线,螺钉,钻头和碎片一样。可能性是无穷无尽的(只受你收到的碎片约束),但有时候势不可挡。 SDK就像获取套件一样。你仍然需要把它放在一起,但它更像是为一块宜家书架预制裁片和说明而不是一盒螺丝。

答案 8 :(得分:0)

您使用SDK来访问库的功能,并使用API​​来控制它。

答案 9 :(得分:0)

API =应用程序编程接口 SDK =软件开发工具包

SDK 似乎是一套完整的 API ,可让您执行创建应用程序所需的大部分操作。此外, SDK 可能包含用于开发平台/项目的其他工具。

另一方面, API 只是一系列相关的方法,可能是好的 出于特定目的。

例如,JDK(Java Development Kit)包含API以及编译器,运行时和其他各种工具。 Java API就是构成核心语言的所有库,您可以使用它们开箱即用。

API示例: Java API, Google Maps API, Flash Player API。

SDK的示例: JDK, GWT, Flex SDK。