文/江涛 2009-8-25
ACE的全称是The ADAPTIVE Communication Environment ,中文意思是“自适应通讯环境”,它是开源的面向对象的框架(framework)。ACE提供了一组C++的包装类和一组强大的应用框架,非常方便开发各类网络应用的服务器,当然也非常适合开发游戏服务器。
要更好的理解ACE的定义,先来了解一下什么是框架(framework):
如果用框架是什么是什么来解释可能比较费解也比较难懂,让我们换一个角度来看,这个角度就是人们对“代码复用”的认知的过程。首先有需要和大家有一个共识,代码复用度越高就说明它的价值越大。
最原始的代码复用是什么呢?这很简单了,那就是在源代码中拷贝粘贴。
这种复用局限性太大了,接下来就有子过程和函数,然后就有了函数库,库函数就是C语言的一大特色。
随着硬件越来越强,人们对软件产品的期望越来越高,而软件开发的工艺却停滞不前,在这种矛盾下产生了软件危机,于是,人们开始思想了。面向对象就是人们思想产物中的佼佼者。于是,软件复用进入了一个新的层次,那就是基于类库的函数。
面向对象曾经被寄于厚望,但是,事情上这个世界上不存在包治百病的灵丹妙药(magic bullet),所以,当开发人员面对一些可复用的组件,想象成自己想建筑工人那样把不同砖头堆成高楼大厦时,发现粘合不同对象之间的胶水代码 (glue code)比组件本身更难写,更易出错。 这可怎么办呢? 框架(framework)!这就需要框架。代码的复用过程还在被推进(后面的我以后再介绍)。
ACE就是框架,她不仅仅是一堆类库,她是比类库更好的代码复用。
代码复用的发展归结如下:
拷贝粘贴-->库函数->类库->框架-> (???)->(???)->
所以,无论您是否编写网络程序,ACE也是很好的学习范例。用白话说,ACE源代码大滋大补哦!
我们再看网络服务应用,为什么说ACE是开发游戏服务器的利器?
不管你是否写过网络程序,有一些事实需要达成共识,那就是:
1. 网络环境很复杂。 同一个系统,往往是由不同的网络设备,不同时期(当时最好)的服务构成,有时还要运行不同的操作系统。
2. 不同类型的需要对服务要求的特性不同。 比如,游戏的在线用户管理服务,它要求单台机器提供更多的用户接入数;比如监视和控制服务,它要求系统的响应时间和延迟很小;再比如文件下载更新服务,它要求吞吐量能最大。上面的这些特性彼此之间还互相冲突。所以,这也不存在某一个单一的解决方案能解决所有问题。
3. 网络化的应用软件比单机的复杂。写网络程序面临着两方面的挑战。一种是固有的挑战,那就是无论服务多么小,都会面临着
a) 如何选择恰当的通讯机制和协议并有效的应用它们;
b) 如何设计网络服务来使用计算机资源并能减少以后的维护成本;
c) 如何设计有效的并发机制来让系统达到可预测性、可靠性和高性能;
d)如何部署和配置来让服务的可用性和灵活性得到最大化。
另一种是偶发的挑战,那就是:
e)操作系统原生的API都往往缺少类型安全、不可移植、扩展性差;
f)非向对象使用的是算法分解(algorithmic decomposition)的思想,往往会导致服务很难维护和扩展;
h)有人说我们自己做自己的网络开发包。但这种重复发现和发现,使得开发周期和成本都极大的浪费。
也许您会问,你说了这么多,ACE到底提供了哪些功能,有哪些优点呢?问得好,ACE提供了编写网络程序都会遇到的问题的解决办法,让您不必重头做起。这些功能包括了:
1. 网络事件的分离并向事件处理器分派出;
2. 信号处理;
3. 服务的初始化;
4. 进程间的通讯;
5. 共享内存管理;
6. 消息处理
7. 分布式服务的动态(再)配置
8. 服务的并发执行和同步
使用ACE让您让您的网络服务:
1) 让可移植性更好;
2) 更好软件的质量
3) 更高效有可预测性
4) 更容易向更高层的标准的中间件转移
哪里下载ACE呢?
ACE的官方网站是
http://www.cs.wustl.edu/~schmidt/ACE.html
ACE是开源的,她的源代码可以自由下载,当前的版本是 5.7.2,下载地址是
HTTPFTP
下载后还需要自行编译。 如何编译请参考 building and installing。
有不少网友反应,ACE太大太难学了。
呵呵,是啊,ACE不是小玩意,ACE已经经历了十多年发展,历史比Windows操作系统还悠久。她包含了见多开发网络应用的方方面,支持几乎所有的主流操作系统和编译器,所以不小。ACE的包含了数不数的贡献者的智慧。学习ACE需要一定的基础,需要学习者静心修炼。
如果您想跟我学ACE,欢迎和我联系。
分享到:
相关推荐
ACE框架在网络游戏服务器中的设计与应用 论文
ACE 客户端与服务器模拟通信。目前是发送什么返回什么
很全面的ACE服务器,包括proactor、reactor模式
用的libgdx引擎写的ACE 弹幕射击游戏设计与开发
介绍了一个网络游戏服务器开发系统。类似于ACE,该网络服务器系统采用了“异步模式、事件模式、任务模式”等开发模式,使用了智能指针。整个服务器系统分为“宿主(Host)、服务(Service)、精灵(Sprite)”三个...
ACE_DOC.CHM,The ACE Programmers Guide.chm, ACE服务器例子,ACE客户端例子
基于ace的服务器架构,包含了reactor、proactor架构。
使用ACE中功能强大的ACE_Svc_Handler做的一个简单服务器
ACE开发指南(初级)
安卓开发-用的libgdx引擎写的ACE 弹幕射击游戏设计与开发.zip
ACE开发指南初级版
ACE 弹幕射击游戏设计与开发 速度来了需要的拿去!!!!!!!!!!!!!!!!!!!!!!!!
ACE 客户端 服务器 模版 一个比较稳定的ACE模版,可以实现服务器、客户端的功能。还能实现心跳检测的功能。 (ACE 代码 客户端 服务器 网络通讯)
JAWS:高性能Web服务器构架 08-06-13 ACE应用-第3章 应用模式语言开发可扩展ORB中间件 08-05-06 编程精粹 - 多年前的笔记 08-05-06 Windows2000 服务器端应用程序开发设计指南-目录 08-05-06 Win2000服务器端应用...
对于使用c++的人来说,ACE无疑是一个极其强大的网络库,是你能够在纯粹编程的情况下无需考虑平台兼容性,现在风险给大家
用的libgdx引擎写的ACE 弹幕射击游戏设计与开发.zip安卓程序源码资源下载用的libgdx引擎写的ACE 弹幕射击游戏设计与开发.zip安卓程序源码资源下载 1.适合学生做毕业设计用 2.适合程序员学习研究用 3.适合新手自学...
ACE框架在网络游戏服务器中的设计与应用 运用到了不少ACE的框架
Adaptive Communication Environment(自适配通信环境),简称ACE。为一个以C++的Template技术所做成的...它提供了socket/threading/memory management等多种系统调用的面对对象的wrapper,使C++通信软件开发更加简单。
ace开发网络通信程序 ace开发网络通信程序 ace开发网络通信程序
ACE 服务器源码,高并发的高性能处理器和源码