appweb显然是不二之选,看了下最新版,已经到了4了
下载下来,http://appwebserver.org/software/appweb-4.4.4-0-src.tgz,十几M,直接吓傻,离我的目标有点远,
翻箱倒柜,到了一个老版本2的,体积还算还好,而且功能强大
瞄了下代码,虽然是为嵌入式系统准备但是功能还真是强大,甚至于支持一个类asp的动态网页语言,叫做esp。
这一个web服务器应该有的结构,虽然小巧,但我想,apache也应该是这样的结构
拿着这个web服务器显示不是为了做网页用了,所以,如果让自己想要的功能跑进服务器才是关键。
每种服务需要一个MaModule/MaHandlerService/MaHandler
在服务器启动的时候将手工调用new MaModule(继承自),会将该模块载入到服务器中,并且,当请求(类MaRequest)来的时候传入时MaHanlder实例的matchRequest进行匹配
当匹配这个请求成功后,会调用MaHanlder的Close方法生成一个新实例给他,并执行run(MaRequest*),一次请求完成
其中,多个模块的Hanlder有可能都同时匹配,那么怎么来控制Hanlder的匹配优先级呢。答案就在new MaModule
代码里面,为我们提供了很多的Hanlder组合拼装一下应该是够了
下载地址:https://github.com/linbc/appweb2-win
使用cmake编译,目前仅用于windows下,linux有太多的选择,反而不需要这个了,所以也不用考虑跨平台了,不过要改还是挺快的,改下CMake的宏就结了