在开始写之前,有些问题需要理清楚。对于项目的一些想法还需要明确,有些问题需要问问自己。
一个基于 C++ 11 & Linux 的高性能 Web 服务器。首先,它需要支持基本的功能有:
- 客户端和服务端的正确连接
- 基本的 HTTP 请求处理能力
- 有较高的并发处理能力,符合 Web 服务器的应用场景
- 可定制化的启动参数
- 准确且高效而稳定的日志功能
- 对于已有的设计,有配套的 test suite
- 使用 CMAKE 进行项目的管理
上面是对于 EasyServer 的基本功能的要求。那么,基于这些,我还想要有:
- 有连接 MySQL之类数据库的能力(当然,这一点应该通过业务逻辑而非 server 来实现)
- 有点播传输/实时传输流媒体的能力(视频网站/直播网站)
- 对于 2 中的功能,支持 multi-protocol
- 跨平台能力
- And more...
- C++ 11 以上标准 C++ 的使用
- CGI 校验
- 多线程/多进程编程
- Epoll
- unit test, benchmark programming
- CMAKE 对于复杂项目的管理
- 音视频编码能力
- And more...
项目暂时就叫 EasyServer 吧,后续可以想一个更有意思的名字。
有很多优秀的开源项目可以参考,稍微罗列一下用到的参考资料。
TinyWebServer 以及它的 C++ 11 实现 WebServer
也是一个star很多的,参考muduo实现的 WebServer
一个看起来比较成熟的 C++ 11 网络框架 ZLToolKit 以及作者基于这个框架开发的流媒体服务器 ZLMediaKit
30dayMakeCppServer 虽然(截止目前)没有写完且已经有段时间没有更新了,已有的内容对项目帮助很大
蒋哥参照muduo实现的一个日志库 TinyLog
感谢以上这些无私的作者!