TKeed既是个人网络编程项目,也是一次串联知识结构的过程,在整个开发过程不仅仅是为了做出一个"能用"的Web服务器,也在扩展性、稳定性方面做了很多思考和总结,也给出了测试数据和系统架构,方便别人学习交流。
-
软件开发流程
遵循完整开发流程,确定需求 -> 选定服务器模型 -> 定义数据结构 -> 开发辅助工具 -> 单元测试 -> 核心部分开发 -> 集成测试 -> 性能测试。开发环境也统一到Linux环境下,通过git进行版本控制,尽可能模拟真实工作环境。
-
基础知识
开发HTTP服务器从宏观上来说会对网络协议TCP及其各个状态理解更深,会对HTTP协议主要字段的功能理解更深,会对操作系统中多线程、多进程并发概念和局限性理解更深刻,会对网络I/O模型认识更深。
-
数据结构
通过对场景需求和将来扩展性的研究,需要设计合理的、高效的数据结构,比如在本项目中最核心的tk_request_t、tk_timer_t和tk_pq_t结构考虑到了扩展性和操作高效性(比如tk_time_t中的deleted字段、tk_pq_t中的size字段)。同时根据需求实现了list和priority_queue库并提供统一接口,可以帮助更好地掌握数据结构和设计接口。
-
编程语言
项目中涉及C语言中方方面面,比如预定义、typedef、全局变量、静态全局变量、函数指针、位运算、强制类型转换、结构体操作等,很多在调试时候遇到过问题,但也能学到很多。另外,也顺带学些了很多编译和调试的小技巧。
-
开发工具
最后,在开发过程中使用到的都是最基本、最常用的开发工具,开发、调试、版本控制都有所涉及,可以更好地利用辅助工具完成开发任务。