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

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

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

具体来说,在指纹传感器与进行注册/验证的软件的背景下,我尝试解释如下:

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

  1. 确保我的设备驱动程序可安装在各种操作系统上
  2. 定义并为软件开发人员提供API编写程序(例如,入学,验证)来“与我交谈”或使用我的设备
  3. 开发并提供SDK(超越API的一步),以使软件开发人员更容易,更快地编写与​​设备一起使用的程序。SDK可以提供辅助代码库,参考应用程序,文档等。
有帮助吗?

解决方案

小菜一碟:

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

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

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

其他提示

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

另一方面,

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

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

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

该图书馆/图书馆是 软件开发工具包. 。它是P系统的一部分。它是供软件开发人员使用的工具包,用于修改、配置、修复、改进 P 的软件片段等。

如果 C 想向其他公司/系统提供 P 的功能,它可以通过 应用程序编程接口.

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

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

但实际上,它们的目的是截然不同的。

您使用 SDK 构建某些内容,然后使用 API 来使用或消费某些内容。

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

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

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

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

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

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

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

SDK也有自己的API。 “如果你想为火车提供动力,将煤炭放入其中”,“拉动蓝色杠杆以移动火车。”,“如果火车开始表现得很有趣,请致电维修人员”。等

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

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

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

怎么样...这就像您想在家里安装家庭影院系统一样。使用 API 就像获取所有电线、螺丝、钻头和零件。可能性是无限的(仅受您收到的作品限制),但有时是压倒性的。SDK 就像获得一个套件。您仍然需要将它们组装在一起,但这更像是获得宜家书架的预切件和说明,而不是一盒螺丝。

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

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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top