最近在阅读一些开源项目,从中学习优秀的设计理念,并且与以往自己做过的项目 经验进行对照,以求将优秀的设计理念融入进实际的开发之中。虽然这在很大程度上是属于重复造轮子的行动,但是,没错,这就是在重复造轮子,而且我也喜欢重复造轮子,从大二重新实现了struts2的时候,就开始了造轮子之路。对业务开发的厌恶尤其加重了这方面的趋势,以后这将是工作的重点。
项目中的服务器采用了reactor机制,跨平台的实现中,windows平台使用select实现,linux平台使用了更高效的epoll。这里所谓的事件是纯粹的从tcp缓冲区中的读和写操作,和业务有隔离。有事件发生之后,如果是读事件,就读入服务器自己的数据缓冲层,然后解析数据。一次读入将包含大量的数据包,根据头部解析然后发送到不同的数据包的处理逻辑之中。这个处理过程构成了服务器网络层的骨架,业务逻辑在这个骨架之下进行编写。专门对于业务逻辑的抽象和处理,是另一门很有趣的艺术,上一任开发者在业务领域运用了大量OO领域的设计理念,对于设计模式的理解尤其深刻,这个有时间的话随后在别的文章里讨论。
ACE的设计非常庞大,如果不谙其设计思想,会带来非常大的灾难,所以ACE就 当做最后一道门槛了。但最近读了陈硕自己写的muduo库,又对照来了nginx服务器和libevent库,对服务器开发的理解更有所加深。记录一下,随后深入展开。