今天,开始从头做一个小小的项目,纯粹的演习。
项目概述:
既然是演习,就不太关心其意义了,所以目标是:一个跨平台的app_httpd,多线程,支持插件。
跨平台:这个不说了。
app_httpd:之所以选择这个方向,是因为近期工作涉及到这个方向,另外在很多场景下,使用http作为界面和逻辑的接口,是个很好的选择,所以tea的准确目的不是做一个类似apache的通用http server,而是一个为了方便的把应用(逻辑)与界面分离,并且使用http接口通讯的app server。
多线程:每个连接使用一个独立的工作线程,这样作的效率似乎很低,但是对于app server,每个连接不互相干扰是很方便的,一个app session完全可以阻塞整个工作线程,而不用关心其它session;
支持插件:app 使用插件实现;
整个项目使用 autoxxxx 工具管理,主要在linux和mac上开发,使用c语言。
创建项目:
万事开头难,先得学习 autoxxxx 工具,水深啊!按照网上的搜索的一大堆结果,一步一步,磕磕碰碰;
1. 创建目录:tea 主目录
inc 全局头文件
src 源码,以及私有头文件
test 测试程序
plugins 插件目录
xxx xxx插件
build 构建目录
2. 编写 Makefile.am:主目录,plugins 目录,这里的 Makefile.am 就是为了指示子目录的,所以模样差不多
3. 继续编写 tea/src 目录的 Makefile.am:
4. 编写 configure.ac: 这个最头大了(gnu autoconf 的文档里面都说,autoconf不是为了方便开发者,而是方便使用者的),不过理解了基本道理之后,扩展项目可真是方便啊。
5. 好了,autoconf/automake的准备好了,边写代码,边修改configure.ac, Makefile.am,边测试 :)
autoreconf -i
cd build
../configure
make
src/test/test_xxx
今天就这些吧,后面开始tea项目本身了。
(刚刚开始用 csdn,是否支持 git 呢?源码如何附上呢?先放在资源里吧,搜 tea source)