文章插图
API与ABI不时会出现在软件开发的文档中,他们看上去相似却有很大区别,属于编程核心知识 。鉴于,在维基百科上的定义比较形式化,不易理解 。这里先从通俗易懂的角度讲解区别,然后再看维基百科的定义 。
一句话区别
- API(Application Programming Interface,应用程序编程接口)是对源代码的约束 。
- ABI(Application Binary Interface,应用程序二进制接口)是对目标代码的约束 。
ABIABI包含很多方面的东西:
- 如何编码函数名称 。
- 如何将参数传递给函数,以及如何获取返回值 。
- 如何布局数据结构:大小、对齐方式和相对偏移量等 。
- 如何抛出和处理异常 。
- 等等 。
- 以源代码分发的框架:该框架是使用与应用程序相同的工具集(编译器、链接器等)构建的,并且该工具集可确保所有”二进制位“都连接在一起 。
- 以二进制分发的框架:该框架是为特定工具集预先构建的,应用程序开发人员只需确保其用的工具集与该框架兼容即可 。
文章插图
维基百科定义API应用程序编程接口(API)是计算机程序不同部分之间的接口或通信协议,旨在简化软件的实现和维护 。
API可以用于基于Web的系统、操作系统、数据库系统、计算机硬件或软件库 。
API规范可以采用多种形式,但通常包括例程、数据结构、对象类、变量或远程调用的规范 。POSIX、windows API和ASPI是不同形式的API的示例 。通常会提供API文档,以方便使用和实施 。
最近,该术语通常用于指代客户端和服务器之间的特定类型的接口,该接口被描述为两者之间的“合同” 。因此,如果客户端以特定格式发出请求,将始终以特定的格式获得响应或启动已定义的操作 。这是API的一种特殊形式,有时也定义为WEB API 。
ABI在计算机软件中,应用程序二进制接口(ABI)是两个二进制程序模块之间的接口 。通常,这些模块之一是库或操作系统工具,另一个是用户正在运行的程序 。
ABI定义了如何在机器代码中访问数据结构或计算例程,这是一种低级的,与硬件相关的格式 。相比之下,API在源代码中定义了这种访问,这是一种相对高级的、独立于硬件的、通常是人类可读的格式 。ABI的一个常见方面是调用约定,它确定如何将数据作为计算例程的输入提供或从计算例程的输出读取 。示例是x86调用约定 。
坚持使用ABI(可能会或可能不会正式标准化)通常是编译器、操作系统或库作者的工作;但是,当使用多种编程语言编写程序时,应用程序程序员可能必须直接处理ABI,这可以通过使用外部函数调用接口(FFI)来实现 。
参考:https://www.quora.com/What-is-the-difference-between-API-and-ABI
推荐阅读
- APP是怎么给你推荐你喜欢的内容的?
- 三款自制纤腿瘦身茶推荐
- 关于食用油的5个小知识,你不可不知
- 为啥天冷时眼睛却感觉不到冷?奇怪的知识又增加了
- 阳台风水知识 阳台挂风铃讲究
- 白茶相关知识介绍
- PHP框架之Laravel基础知识最全总结,还不快收藏
- 关于婚姻的十条冷知识--婚姻比我们想象的更残酷
- 吊灯装饰风水小知识你了解多少
- 翡翠|想要投资收藏翡翠,那么就要掌握知识,知道怎么鉴别真假