库和API之间还有区别吗?

库和API之间还有区别吗?,api,frameworks,paradigms,Api,Frameworks,Paradigms,每当我问人们API和库之间的区别时,我都会得到不同的意见。有些人给出了定义,说API是规范,库是实现 有些人会告诉你定义,一个API是一堆映射出来的函数,而一个库只是编译形式的发行版 所有这些让我想知道,在一个充斥着web代码、框架和开源的世界里,是否真的还有实际的区别?像jQuery或cURL这样的库是否可以跨接到API的定义中 另外,框架是否也属于这一类?Rails或Zend是否有更“类似API”或“图书馆式”的部分 非常期待一些启发性的想法:)API是库的一部分,它定义了如何与外部代码交互

每当我问人们API和库之间的区别时,我都会得到不同的意见。有些人给出了定义,说API是规范,库是实现

有些人会告诉你定义,一个API是一堆映射出来的函数,而一个库只是编译形式的发行版

所有这些让我想知道,在一个充斥着web代码、框架和开源的世界里,是否真的还有实际的区别?像jQuery或cURL这样的库是否可以跨接到API的定义中

另外,框架是否也属于这一类?Rails或Zend是否有更“类似API”或“图书馆式”的部分


非常期待一些启发性的想法:)

API是库的一部分,它定义了如何与外部代码交互。每个库都有API,API是所有公共/导出内容的总和。如今,API的含义被拓宽了。我们也可以将web站点/服务与代码交互的方式称为API。您还可以看出某些设备具有API—您可以调用的命令集


有时这些术语可以混合在一起。例如,您有一些服务器应用程序(例如TFS)。它有一个API,这个API是作为一个库实现的。但是这个库只是你和执行你调用的人之间的中间层。但是,如果库本身包含所有操作代码,那么我们不能说这个库就是API。

我的观点是,当我谈到API时,它只意味着向程序员公开的部分。如果我说的是“库”,那么我也指的是“在引擎罩下”工作的所有东西,尽管它是库的一部分。

我认为
库是所有类和函数的集合,可以从我们的代码中使用它们来轻松完成任务。但是库可以包含一些它不想公开的专用函数


API
是向用户公开的库的一部分。因此,无论我们有什么关于库的文档,我们都称之为
API文档
,因为它只包含我们可以访问的类和函数。

语言清晰简洁

库:为可重用性而存储的所有类和方法的集合


API:library类和方法的一部分,用户可以在其代码中使用。

根据我的观点,无论调用程序可以访问哪些函数,我们都可以在library文件中被称为API,library文件中有一些私有函数,我们无法访问它们。

库包含可重用的代码块(软件程序)

这些库的可重用代码通过API链接到您的程序 (应用程序编程接口)。也就是说,此API是一个到库的接口,通过该接口可将可重用代码链接到应用程序。
简单来说,可以说API是两个软件程序之间的接口,有助于它们之间的交互

例如,在C等过程语言中,库
math.C
包含数学函数的实现,如
sqrt
exp
log
等。它包含所有这些函数的定义

可以使用API
math.h
引用这些函数


也就是说,API是一种规范(
math.h
解释了它提供的所有函数、它们的参数和返回的数据等),库是一种实现(
math.c
包含这些函数的所有定义)。我们首先要定义一个接口

接口:是两个“事物”相互对话和交换信息的手段。“东西”可以是(1)人或(2)任何种类的运行代码(例如,库、桌面应用程序、操作系统、web服务等)

如果一个人想要与程序对话,他需要图形用户界面(GUI)或命令行界面(CLI)。两者都是人类(而不是程序)希望使用的接口类型

但是,如果一个运行的代码(任何种类)想要与另一个运行的代码(任何种类)对话,它不需要或不需要GUI或CLI,而是需要一个应用程序编程接口(API)


因此,为了回答最初的海报问题:库是一种运行代码,API是运行代码与其他运行代码对话的方式。

当我们谈到或想到API时,有两种情况

  • 使用库的计算机程序
  • 其他一切(广义)
  • 我认为,在第一种情况下,从API的角度思考是令人困惑的。因为我们总是使用图书馆。只有图书馆。没有库的API是不存在的,但有这样一种倾向

    如何在C++中使用标准模板库(STL)?这是一个软件库

    您可以使用相同的API拥有不同的库,这意味着可用的类、对象、方法、函数、过程或任何您喜欢的编程语言术语的集合。但是可以说,我们对一些“标准”库有不同的实现

    有些类比可能是:SQL是一种标准,但可以有不同的实现。您使用的总是一些实现SQL的SQL引擎。您可以只遵循标准的特性集,或者使用特定于该实现的一些扩展特性

    您不关心库中的“引擎盖下”是什么,除了这些库的不同实现在效率上的差异

    当然,我知道,这种思维方式并不是“普遍具有约束力的标准”。只是很多