ACE的起跑点

接触ACE的起源应该是入行以后不久的一些困惑。那时接手的是一个视频点播项目,这个项目中核心功能的部分已经开发完成,实际上我都看不到那一部分的内容。我所要做的仅仅是使用现成的动态库完成界面部分的功能而已。若说有一些技术含量的便是网络通信的处理了。网络通信是如此重要,却也是如此之复杂。

初学网络通信者在掌握了几个连接、侦听、收发数据的SDK方法后一定会大呼:这很简单嘛,有什么难的。是的,没错,假如我们的应用是仅限于局域网内两台机器之间收发几十个字符的需求,那的确很简单。但这样的应用哪个会有需要呢?那就扩展一下想像力,有很多东西我们天天在使用,却很少去思考它的细节。

QQ为例,这是一个典型的网络客户端程序,它最早的出现是一个简单的字符串收发终端,后来加入了很多增值功能,五花八门各类应用都有。它在网络通信领域内应该算是一个入门级的应用了,如果每个QQ上只有一个用户,那么谁都可以做好。但是,用户数一个一个地增多之后,是否对每个用户都要进行管理,这时候管理的策略是什么?因为多用户处理要求的是实时性,你不能让用户顺序的响应,而是要根据消息到达的先后顺序进行提示。假如你做的QQ一次只能接收一个用户的消息,而其他用户的消息只能循环接收时,那将出现一个很怪异的场景,就是用户的消息将会从上往下顺序出现,而不是按照到达的时间先后。这就要求客户端对同步多路事件进行处理,到了这里就要考虑采用何种机制来分派消息。Windows平台与linux平台都可以使用select阻塞式调用,再下一步呢?你是想让所有用户的消息都通过一个套接口传进来,还是为每个用户分配一个套接口?直观的说,好吧,当然是为每个用户建立一个连接,但用户增长没有限制,极端的某一天你线上所有用户都上线了那将是一个多么可怕的情景,你会抱怨说怎么系统变这么慢啦,消息发不出去也收不进来。你也许明白了,网络通信的复杂之处在于不确定性与数据处理的实时性。

ACE就是这样一个终极宝物,它替你扛下了你最不愿面对也是最复杂的部分,你所要做的仅仅是掌握它的规则,创建自己专门的应用就行了。当然,它也像一匹劣马,没有高超的技术就像骑上它只会摔的鼻青脸肿。这些技术就包括基本的网络通信API使用、TCP/IP原理、系统调用、C++模板知识、数据结构、设计模式等。其中最重要的就是设计模式知识了,其他的都是基础。没有充分的了解典型的23种模式,根本不会知道ACE到底在干什么。因为你写出来的应用代码只有区区数十行,但在其下却奔腾着千军万马。试想,一个下错了命令的指挥官,看着手下全军覆没该是何等痛心,最要命的是还不知道错在哪。当然,进行网络通信开发,没有理由强调你只会Windows或只懂linux,那是行外话,但要进行跨平台编程常会被不同的系统调用所困扰,这是事实。ACE又替你解决了这一切烦恼,同样的代码,不同的平台,编译之后同样的运行效果,多么美好的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值