我试图向非开发人员解释API和SDK之间的区别。我需要解释为什么商业指纹软件供应商可能不会提供SDK,尽管他们肯定会使用它。
设备供应商和软件供应商都可以而且应该公开定义良好的API。该API允许其他软件程序(被编写)与供应商自己的软件组件或硬件设备互操作。
如果有人有更多的想法可以清楚地解释这一点,我会非常感谢这些建议。我想强调的是,的目标是向不懂开发人员术语的非程序员解释这些概念。
具体而言,在指纹传感器与软件进行注册/验证的背景下,以下是我尝试解释它的方法:
如果我是指纹设备/传感器制造商而不是 编写软件的业务,我可以更好地推销我的方式 产品有:
- 确保我的设备驱动程序可以安装在各种操作系统上
- 为软件开发人员定义并提供API以编写程序(例如,用于注册,验证)以“交谈”或使用我的 设备
- 开发并提供SDK(超越API的一步),使软件开发人员能够更轻松,更快速地编写有效的程序 用我的设备。 SDK可以提供帮助代码库,参考 应用程序,文档等。
醇>
答案 0 :(得分:217)
一块蛋糕:
*任何东西都可以使用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。