API的概念

时间:2014.07.02

地点:基地

--------------------------------------------------------------------------------

一、什么是API

API(Application Programming Interface)在现代软件中随处可见,目的在于为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。是对问题的抽象,以及客户与解决问题的软件组件之间进行交互的方式。总的来说:API是一个明确定义的接口,它可以为其它软件提供特定的服务。

比如读取图像的API可能仅仅提供一个LoadImage()函数,它接收一个文件名作为参数,然后返回一个2维像素数组,而所有文件格式和数据压缩的细节全部隐藏在这个看似简单的接口之下。客户端代码可以通过调用该API的公有接口。

--------------------------------------------------------------------------------

二、C++中的API

C++中的API一般包括一个或多个头文件已经辅助文档。某个特定的API的具体实现通常是可以被链接到最终用户程序中的库文件,比如windows下的 .lib文件,或者动态链接库,比如windows下的 .dll文件。

而对于API这一词而言,工程师们也更喜欢扩展为 Abstract Programming Interface——抽象编程接口。它包含的元素总结如下:

a.头文件:一组.h头文件。头文件定义了接口,使得客户端代码能够对该接口进行编译。开源的API就还包括API实现的源代码(.cpp文件)。

b.类库:一个或多个静态库或动态库文件,它们提供了API的具体实现,客户端代码可以把它们的代码和这些库文件进行链接,从而为它们的应用程序添加相应的功能。

c.文档:如何使用API的概述信息。

下面举例来说:

众所周知的Win32 API就是Windows操作系统的API,它是C函数,数据类型和常量的集合,包括文件处理函数,进程与线程管理函数,创建图形用户界面的函数,与网络交互的函数等。Win32 API是一个纯C API,但我们可在C++程序中直接使用C API,C++中API的典型代表是STL,它包括一组容器类。对容器中元素进行遍历的迭代器以及作用于容器的各种算法。STL提供了操作元素集合任务的逻辑接口,且没有暴露算法内部实现任何细节。

总的一句:。API是软件组件的逻辑接口,它隐藏了实现这个接口所需的内部细节 。

在设计API时,因为API描述了其它工程师构建他们的应用软件所使用的软件,因此,API必须拥有良好的设计,文档、回归测试,并且保证发布之间的稳定性。

--------------------------------------------------------------------------------

三、API的层次

API的大小任意,小到一个函数,大到多个类组成的集合。可提供访问任意架构层面的功能,从底层操作系统调用到GUI工具包等。比如常见的API有:

3.1操作系统API

每个操作系统都必须提供一系列标准API,以方便程序员调用系统级服务。例如:POSIX API中关于进程操作的几个API,fork() ,getpid(),kill()等。而Win32 API中相应的有 CreateProcess(),GetCurrentProcess()以及TerminateProcess()等函数。这些都是很底层的API,必须保持稳定健壮,否则很可能导致很多程序崩溃。

3.2语言API

比如C语言标准库中的printf(),scanf()和fopen()和C++标准模板库中的容器类型std::string ,std::vector,std::set,std::map;迭代器还有泛型算法等很多API。

3.3图像API

3.4三D图像API

3.5图形用于界面API

最典型的代表恐怕就是熟知的 Qt了。

API的概念,布布扣,bubuko.com

时间: 2024-10-30 00:35:28

API的概念的相关文章

MapReduce API 基本概念

在正式分析新旧 API 之前, 先要介绍几个基本概念. 这些概念贯穿于所有 API 之中,因此, 有必要单独讲解. 1.序列化 序列化是指将结构化对象转为字节流以便于通过网络进行传输或写入持久存储的过程.反序列化指的是将字节流转为结构化对象的过程. 在 Hadoop MapReduce 中, 序列化的主要作用有两个: 永久存储和进程间通信.为了能够读取或者存储 Java 对象, MapReduce 编程模型要求用户输入和输出数据中的 key 和 value 必须是可序列化的. 在 Hadoop

Compute API 关键概念 详解

Compute API 是 RESTful HTTP 服务,提供管理虚机的能力. 虚机可能有不同的内存大小,CPU数量,硬盘大小,能够在几分钟之内创建出来.和虚机的交互,可以通过Compute API编程实现. 用户需要知道的概念 Server A virtual machine (VM) instance, physical machine or a container in the compute system. Flavor and image are requisite elements

API的概念与使用

抽象类与普通类相比  约定了子类实现要求  单继承局限 因此,提出了接口 在以后的开发设计原则,接口优先 1.接口的基本概念 接口是抽象方法和全局常量的集合,在java中可以使用interface关键字定义 interface IMessage  (在开发中接口名称前面需要加一个I) 子类需要用implements关键字来实现接口,同时一个子类可以实现多个接口,可以利用接口实现多继承的概念. class Message implements IMessage,INews{} 一个子类实现了多个接

Web API概念

Web API介绍 API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节. 任何开发语言都有自己的API API的特征输入和输出(I/O) var max = Math.max(1, 2, 3); API的使用方法(console.log('adf')) Web API的概念 浏览器提供的一套操作浏览器功能和页

从源码看 Promise 概念与实现

Promise 是 JS 异步编程中的重要概念,它较好地解决了异步任务中回调嵌套的问题.在没有引入新的语言机制的前提下,这是如何实现的呢?上手 Promise 时常见若干晦涩的 API 与概念,它们又为什么存在呢?源码里隐藏着这些问题的答案. 下文会在介绍 Promise 概念的基础上,以一步步代码实现 Promise 的方式,解析 Promise 的实现机制.相应代码参考来自 PromiseJS 博客 及 You don't know JS 的若干章节. Why Promise (有使用 Pr

IDE API SDK JDK

一.IDE [百度百科] 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代码编写功能.分析功能.编译功能.调试功能等一体化的开发软件服务套.所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境.如微软的Visual Studio系列,Borland的C++ Builder.Delphi系列等.该程序可以独立运行,也可以和其它程序并用.IDE多被用于

Flink Program Guide (2) -- DataStream API编程指导 -- For Java

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} 张安 张安 2 1 2016-08-02T10:56:00Z 2016-08-02T10:56:00Z 1 2945 16790 139 39 19696 16.00 false false false false

转:我们是否应该把后端构建为API

原文来自于:http://www.infoq.com/cn/news/2015/07/api-or-not 不久前,在StackExchange网站上,一位名为SLC的用户提起他正在设计一个ASP.NET网站,他对于是否要将后端设计为API有些举旗不定,希望能够得到一些建议.一石激起千层浪,这个帖子很快得到了大量的关注与回复.现在让我们来了解一下SLC所面临的具体情况与问题. SLC设计的网站是一个典型的ASP.NET MVC应用,他在开发时使用的都是一些经典的MVC模式,即控制器.视图与模型的

JAVA一些基础概念

Java (计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1] . Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点[2] .Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等[3]