在网络编程中应用框架
为啥要编写出健壮的、可扩展的以及高效率的网络应用是很困难的一项任务,其中的一个原因就是开发人员必须掌握很多复杂的网络编程概念和编程机制,包括如下:
- 网络地址以及服务标识/服务发现
- 诸如编排、反编排、加密之类的表示层转换,其目的是用来处理具有可选择性的字节排列次序处理器的不同种类的主机。
- 本地以及远程进程间的通信机制(IPC)
- 事件多路分离以及事件处理器的分派
- 进程、线程生命周期管理以及同步处理
在unix的文件I/O API上建立了很多的IPC API模型,这些API 定义了open()、read()、wirte()、close()、ioctl()、lseek() 和select()等函数。然而,由于在语法和语义上,文件I/O和网络I/O之间存在很多差别,因此网络API提供的标准UNIX文件I/O API不能直接支持额外功能。比如,在unix系统中用来标识文件的路径名,在不同种类的分布式环境下的多个主机上并不是全局唯一的。从而,人们设计了诸如IP+端口的命名方案,用来在网络应用中唯一地标识通信地址端点。
主机基础框架中间件框架
结合主机基础架构中间件框架,很多网络应用采用同步/异步请求/响应协议,在彼此之间交换信息。为了使网络应用开发的很多低级的方面能够实现自动化,主机基础架构中间件封装了操作系统的并发性和IPC机制:
- 链接管理以及事件处理器的初始化。
- 事件检测、多路分离和事件处理器的分派
- 在诸如TCP之类的字节流协议之上的消息分帧
- 包括网络字节序以及参数排列与反排列在内的表示转换问题
- 并发模型以及并发操作的同步性
- 由动态配置的服务组成的网络应用
- 分层网络应用和服务的层次结构
- 诸如调度对处理器、网络和内存的访问之类的服务质量(Qos)属性的管理
ACE是一种高度可移植、广泛应用的、开放源代码的主机基础架构中间件工具包。
大约500个类、大约25万行代码。