设为首页 加入收藏

TOP

1.5.2 真实示例
2013-10-07 16:24:03 来源: 作者: 【 】 浏览:83
Tags:1.5.2 真实 示例

1.5.2 真实示例

以上列出的API示例是特意按照其结构层次组织的,目的是展示在构建应用程序时可能用到的API的类别。在构建大型软件产品时,经常会用到来自几个架构层面的API。图1-3展示了由Linden Lab开发的Second Life Viewer的示例架构图。这是一项大型开源程序,它让用户能够在一个在线虚拟3D世界中彼此交互,能够处理用户间的语音聊天和文本消息。该图演示了在大型的C++(www.cppentry.com)软件项目中API的使用与分层。

特别值得关注的是内部API这一层,其在本书中的含义是公司为某个特定产品或产品套件而在内部开发的一系列模块。虽然图1-3为了简洁仅将它们表示为一个层次,但是这套内部API可以形成额外的堆叠层次。从基础层次提供内部字符串、字典、文件IO、线程程序等例行程序,到提供应用的核心业务逻辑的API,再到用于管理应用程序用户界面的定制GUI API。

显然,图1-3没有提供该应用中所有API的详尽列表。它只是简单地展示了每个结构层次中的几个例子。表1-1中完整地列出了该应用程序依赖的第三方API,目的是说明开发一个当代软件项目要依赖多少开源代码和商业闭源代码。如果将系统和OS库考虑进去,该表会变得更大。

表1-1 Second Life Viewer所使用的开放和封闭源代码API列表

API

简述

API

简述

APR

Apache可移植运行时环境

libpng

PNG 图像库

Boost

一组可移植的C++(www.cppentry.com)工具库

llqtwebkit

QtWebKit嵌入式网页浏览器

c-ares

异步DNS解析库

OggVorbis

压缩音频格式库

cURL

客户端URL请求库

OpenGL

3D图形渲染引擎

Expat

面向流的XML解析器

openjpeg

开源JPEG-2000库,可取代KDU

FMOD

商业音频引擎及MP3流解码器

OpenSSL

安全套接字层(SSL)库

FreeGLUT

OpenGL工具包(GLUT)的开源版本

Quicktime

播放视频的库

FreeType

字体光栅化引擎

Vivox

商业语音聊天库

glh_linear

C++(www.cppentry.com) OpenGL 帮助库

xmlrpc-epi

XML-RPC 协议库

jpeglib

JPEG 解码库

zlib

无损数据压缩库

KDU

商业KakaduKDUJPEG-2000 解码库

 

 

API与SDK

术语SDK(软件开发工具包)和术语API是密切相关的。本质上讲,SDK是安装在计算机上的特定平台的包,其目的是使用一个或多个API构建应用。

SDK至少要包含编译程序所需的头文件(.h)以及提供API实现的库文件(.dylib、.so、.dll),用以链接到应用程序之中。然而, SDK还可能包含其他帮助使用API的资源,如文档、示例代码以及支持工具。

例如,Apple发布了多种iPhone API,以便程序员可以编写运行在iPhone、iPod Touch以及iPad设备上的应用。示例中包含了UIKit用户界面API、将Web浏览器功能嵌入到应用中的WebKit API以及支持音频服务的Core Audio API。

Apple同时还提供iPhone SDK,它是一个可下载的安装包,其中包含了实现多种iPhone API的框架(头文件和库文件)。你可以编译链接这些文件以使应用程序访问API的底层功能。iPhone SDK同时还提供API文档、示例代码、Apple集成开发环境(IDE)XCode下使用的各种模板和支持在台式机中运行iPhone应用的iPhone模拟器。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5.1 API层次 下一篇1.6 文件格式和网络协议

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)