接口和API之间的差异

接口和API之间的差异,api,interface,Api,Interface,你能解释一下接口和API的区别吗 我在这里用谷歌搜索这些信息,但我只找到了一个关于甲骨文的特殊信息 我要找的是一般的区别 非常感谢 更新: 谢谢大家的回答。我的问题故意保持一般性,因为我 1) 没有所用编程语言的详细信息(问题基于一个供应商在我的项目中实施的简短信息); 2) 我想了解这两个术语之间的一般高层差异。没有进一步的上下文,你的问题有点宽泛;但是让我们试试看;通过在以下位置查找API的定义: 在计算机编程中,应用程序编程接口(API)是一组用于构建软件和应用程序的子程序定义、协议和工具

你能解释一下接口和API的区别吗

我在这里用谷歌搜索这些信息,但我只找到了一个关于甲骨文的特殊信息

我要找的是一般的区别

非常感谢

更新: 谢谢大家的回答。我的问题故意保持一般性,因为我 1) 没有所用编程语言的详细信息(问题基于一个供应商在我的项目中实施的简短信息);
2) 我想了解这两个术语之间的一般高层差异。

没有进一步的上下文,你的问题有点宽泛;但是让我们试试看;通过在以下位置查找API的定义:

在计算机编程中,应用程序编程接口(API)是一组用于构建软件和应用程序的子程序定义、协议和工具

然后:API代表应用程序编程接口;这表明,一个API包含创建希望与该API后面的组件交互的应用程序所需的所有元素

而严格意义上的接口通常表示“单个特定实体”;与java中的接口一样,它描述了一个有序的集合(没有提供关于具体实现的详细信息)

但当然,这两个术语有某些共同之处——它们都是关于“系统”的“边界”的描述。长话短说:这两个概念之间根本没有明显、精确的区别。因此,当在一群人中使用这些词语时,您可能希望首先“退后一步”并讨论术语,以确保所有相关人员对这些术语有相同的理解。或者,正如它所说的:您想要创建一种无处不在的语言,在这种语言中,这些术语具有明确、定义良好的含义

最后:还值得一提的是,当使用不同的编程语言时,“接口”一词有不同的含义。在Java中,接口实际上是一个概念,体现在语言核心中;在C++中,一个“接口”可能被看作是单个头文件的内容;为这两种语言带来了微妙但重要的“界面风格”

编辑:

  • 接口和API都不应该向外界暴露(太多?!)内部构件
  • 一般来说,API概括了一个“组件”(例如一个完整的“应用程序”);而接口可能会勾勒出一个“较小”的实体
  • 对于您的其他改进,关于一家公司提供API,另一家公司提供接口-我不能说什么。因为;正如其他人所解释的:这些术语的定义真的很不清楚/模糊。我们需要了解更多关于应用程序及其要求的信息,甚至可以在这里对您的声明进行评论
  • “X和Y之间的区别是什么”这个问题只有在X和Y具有单一含义和严格定义时才有意义。但“接口”和“API”既没有单一含义,也没有严格定义,因此无法区分它们之间的区别

    在大多数情况下,两者没有区别,但存在某些上下文,其中一个适合使用,而另一个则不太合适,甚至不合适

    例如,一个类实现一个接口,而不是一个API。另一方面,整个软件系统更可能被称为公开API而不是接口,尽管在这种情况下说接口也不会错


    我希望有一些简单的区别,比如“接口是小规模的,API是大规模的”,或者“接口更具体,API更模糊”,但没有这样的区别。

    应用程序编程接口(API).所以,从某种意义上说,这是一个接口。也许你可以澄清你问的是什么编程语言,以及你在什么环境下混合了这些词?我本来想给你一个+1;但后来我看到你对乌斯曼现在删除的答案的非常严厉的评论。我认为类比在几乎任何情况下都是有用的;科学院tific在使用类比时的一部分是要清楚地了解类比的“好”匹配程度;以及该“投射”到其他画布上的部分“需要小心处理。@GhostCat好吧,那么,我想我们不同意。但我向你们保证,我的评论和否决票并不是基于我不喜欢用类比来表达技术观点,因为我意识到这可能只是我个人的偏好。我阅读了这些类比,发现它们非常糟糕,完全无法揭示API和接口的本质,包含实际上不适合描述这些实体的元素,也无法显示两者之间的区别。换句话说,在所有帐户上完全失败。不过无论如何,谢谢你的意见。谢谢你,幽灵猫!如果我错了,请纠正我:你的意思是,API包含更多关于“边界规则”(但也像接口而不是实现本身)的细节,以及更多关于上下文的细节。一家公司将为同一流程开发API,另一家公司将为同一流程开发接口。应该在界面上工作的公司提供基本信息。应该在API上工作的公司使用此信息,以便能够根据通过API接收到的信息向用户提供一些功能;但我不确定里面是否有什么“新”的东西。我担心“在如此普遍的层面上谈论”(特别是考虑到你最近的例子);很简单,我们不可能带着更具体的东西回来。非常感谢你,幽灵猫!