`
pleasetojava
  • 浏览: 698043 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

什么是ACE?为什么它说是开发游戏服务器的利器?

阅读更多

文/江涛 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,欢迎和我联系。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics