背景
新的c++11标准出后,c++语法得到了很多的扩展,比起以往任何时候都要灵活和高效,提高了程序编码的效率,为软件开发人员节省了不少的时间。 之前我也写过基于ACE的网络服务器框架,但ACE毕竟有些臃肿,内部对象关系错综复杂,容易给人造成只见树木不见森林的错觉。 所以打算用c++11开发一个较为简洁,高效,支持高并发的网络库。
开源
基础的结构已经开发完成,代码也开源在github上,网址是 https://github.com/lichuan/fly 欢迎各位提出建议。
结构
fly网络库主要分为base模块,task模块,net模块。base主要是一些最基础的功能集合,包括日志,id分配器,随机数,队列等;task主要封装了任务抽象以及任务调度执行等功能;net主要是实现网络层面的封装,为上层使用者提供简单易用的网络接口,这也是fly库的核心模块,实现了解析协议的Parser封装,负责监听网络的Acceptor,负责网络连接io功能的Poller封装体,在Parser、Acceptor、和Poller的基础上还进一步封装了作为服务器来使用的Server类和作为客户端来使用的Client类,这两个类是fly库的核心类,上层的应用可以直接使用Server对象和Client对象来建立网络服务器。作为网络连接概念的Connection对象则是通过std::shared_ptr来管理它的生命周期的,shared_ptr内置共享对象的功能大大地简化了网络连接生命期的管理。
协议
fly库的网络协议基于全世界最通用的json格式,而它的解析则依赖于rapidjson第三方库来完成。