API和SDK之间的区别

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

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

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

具体来说,在指纹传感器与软件进行登记/validation的情况下,我试图解释它:

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

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

小菜一碟:

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

*任何可以使用API​​。 一些API具有安全规定来要求许可证密钥,authentication等,这可能会禁止在特定情况下完全使用API​​,但这仅仅是因为特定的authentication/授权步骤失败。 任何提供正确凭据(如果需要)的软件都可以使用该API。

**从技术上讲,如果一个API有很好的文档logging,你就不需要一个SDK来构build你自己的软件来使用API​​。 但是拥有一个SDK通常会使这个过程变得更容易。

API就像一个孩子玩的一些令人费解的游戏的积木,以不同的形状join积木,并构build他们能想到的东西。

另一方面, SDK是适合所有开发工具的研讨会,而不是预先塑造的构build块。 在一个研讨会上,你有实际的工具,你不限于块,因此可以创build自己的块,或者可以创build没有任何块的东西开始。

没有SDK或API的编码就像是从头开始,而不需要一个工作室 – 你甚至必须制作自己的工具

假设公司C提供产品P和P以某种方式涉及软件。 然后,C可以向驱动P的软件系统的软件开发者提供一个库/一套库。

该库/库是一个SDK 。 它是P系统的一部分。它是软件开发人员用来修改,configuration,修改,改进P等软件的工具包。

如果C想要将P的function提供给其他公司/系统,则可以使用API

这是P的一个接口。外部系统与P相互作用的一种方式。

如果你认为在实施方面,他们看起来很相似。 特别是现在互联网已经变成了一个大型的分布式操作系统。

但是,有意义的是,它们实际上是非常不同的。

您使用SDK构build了一些东西,并且使用或使用了API。

我不确定这两个术语有什么官方的定义。 我理解一个API是一套文档化的可编程库和支持源头,如IDL文件。 SDK通常包含API,但通常会将编译器,工具和样本添加到组合中。

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

虽然软件开发工具包是一个API / s的包装,使开发人员的工作很容易。

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

而且,有时SDK也是为了促进特定编程语言的开发而构build的。 例如, Selenium Web驱动程序 (内置于Java)提供API来本地驱动任何浏览器,而capybara可以被认为是一个有助于Ruby开发人员使用Selenium Web驱动程序的SDK。 但是,Seleniumnetworking驱动程序本身也是一个SDK,因为它将与各种本地浏览器驱动程序的交互组合到一个包中。

API是关于如何做某事的规范,例如“铁轨相距4英尺,金属杆宽1英寸”这样的接口现在你已经有了API,现在你可以build造一个适合那些铁路的火车跟踪如果你想去任何地方。 API只是关于如何构build代码的信息,它什么也不做。

SDK是一些已经担心规格的实际工具包。 “这里有一列火车,一些煤炭和一个维修人员,用它来到一个地方”使用SDK,您不必担心具体情况。 一个SDK是实际的代码,它可以被自己用来做一些事情,但是当然,火车不会自发的启动,你还得得到一个列车员的控制权。

SDK也有自己的API。 “如果你想上火车就把煤放进去”,“拉动拉杆移动火车”,“如果火车开始搞笑,就打电话给维修工”等等。

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

SDK =一个文字处理系统…为2岁的婴儿…从想法写正确

尽pipe你几年后可以上学并成为你的母语大师,但使用SDK将会帮助你立即写出完整有意义的句子(原谅在这个例子中,作为一个孩子,你甚至没有得到学习任何其他语言,至less要学习使用SDK。)

怎么样…就像你想在家里安装家庭影院系统一样。 使用API​​就像获得所有的电线,螺丝,零件和零件。 可能性是无止境的(只受到你收到的东西的限制),但是有时压倒性的。 SDK就像获得一个工具包。 你仍然需要把它放在一起,但更像是一盒宜家书架上的预切件和说明书。

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