Chinaunix

标题: 自己写了个web server [开源] [打印本页]

作者: windyrobin    时间: 2009-03-18 21:47
标题: 自己写了个web server [开源]
以前用别人的server ,往往我需要的功能它没有或不完善,
我不需要的东西倒是一坨 ,于是对代码进行增删 ,如果发现bug,
往往很难修正,天长日久 ,不厌其烦 ,于是造个轮子。

目前仅在vc 2008下编译 ,过段时间再搞linux 版
特点:

1 :http 核心代码用纯 c 写成,后台页面处理可用纯c 或c++ 进行编写,不需要什么虚拟机 ,框架 ,引擎之类的东西。

2 :面向ajax 和 web application ,静态html 与后台处理完全分离(不象传统php模板那种模式),前台需要广泛采用ajax获取相应动态信息 ,用js(jqury/prototype)进行dom 控制.

3: 精心设计的数据结构和算法处理,尽可能优化到每个字节。

4: 层层过滤处理,你可以很方便的添加自己的处理模块。

5: 仅支持最重要最基本的功能 ,get/post/head

详见:http://code.google.com/p/wrhttpd/wiki/Robin_introduction

初搞开源 ,大牛指点 ,感激不尽!

[ 本帖最后由 windyrobin 于 2009-3-19 13:18 编辑 ]
作者: 南无小和尚    时间: 2009-03-18 23:07
看楼主头像是很牛的人
作者: tianxiaogang12    时间: 2009-03-18 23:28
共享成果 那就赞一个
作者: dreamerx2004    时间: 2009-03-18 23:53
向楼主学习
作者: gawk    时间: 2009-03-18 23:59
太牛了,佩服
作者: cugb_cat    时间: 2009-03-19 08:15
web server
我们公司每个部门基本都写了一套http软件,为了追求性能,只能自己写了,呵呵。
作者: alexhappy    时间: 2009-03-19 09:05
有机会拜读一下
作者: flw    时间: 2009-03-19 09:06

作者: 雨过白鹭洲    时间: 2009-03-19 09:27
没仔细看,纯精神支持
作者: shenxiaocheng    时间: 2009-03-19 09:30
不错,下下来了,今晚回去琢磨琢磨,谢谢了
作者: converse    时间: 2009-03-19 10:08
练练手可以吧,但是如果大规模应用,如果没有亮点,那么现在市面上的web服务器已经足够强大了.
作者: redor    时间: 2009-03-19 10:17
标题: 回复 #1 windyrobin 的帖子
鼓励一下!!!! 给个建议... 写的过程中弄明白高并发的设计最好了
作者: windyrobin    时间: 2009-03-19 13:28
标题: 回复 #12 redor 的帖子
thank you very much,现在仅支持简单的多线程并发操作,同时连几百个应该没问题(没仔细侧过) ,

[ 本帖最后由 windyrobin 于 2009-3-19 18:39 编辑 ]
作者: xinglp    时间: 2009-03-19 15:04
标题: 回复 #13 windyrobin 的帖子
最近流行这个么
作者: windyrobin    时间: 2009-03-19 17:47
流不流行我不知道,反正我觉得这样做web Application 很方便,也很高效。
作者: xinglp    时间: 2009-03-19 18:00
标题: 回复 #15 windyrobin 的帖子
我也这么做过,也有些作品,但是哪里能找到相关工作呢.
作者: windyrobin    时间: 2009-03-19 18:28
标题: 回复 #16 xinglp 的帖子
这个问题想想就头痛,不管了,先提高自己再说,呵呵
作者: reiase    时间: 2009-03-19 22:06
自己写的web server,不太可能想商用的那样,对所有web协议扩展做支持吧
作者: windyrobin    时间: 2009-03-20 10:09
标题: 回复 #18 reiase 的帖子
我的设计目标是“简洁” ,“高效”,比如http协议的get/post/head/put/delete/option 等
共8.9个method,我仅实现了最重要最实用的前三个,再如http code 从1XX 到5XX
好几十个,我感觉没必要全实现,大部分都没啥用。
作者: james.liu    时间: 2009-03-20 10:19
能给个vs2008的项目的压缩包吗?

也就是打开就是个项目,,看起来方便点

我还没用过vc2008
作者: reiase    时间: 2009-03-20 11:19
原帖由 windyrobin 于 2009-3-20 10:09 发表
我的设计目标是“简洁” ,“高效”,比如http协议的get/post/head/put/delete/option 等
共8.9个method,我仅实现了最重要最实用的前三个,再如http code 从1XX 到5XX
好几十个,我感觉没必要全实现,大部分 ...


我觉得你可以尝试实现一个嵌入式的web server,为一般C程序提供Web接口方案

虽然用C实现CGI很简单,但是实际使用时,为了一个很简单的C CGI,不得不配置一个大个头的Web server,对俺这种业余人士还是比较困难的
作者: windyrobin    时间: 2009-03-20 11:21
标题: 回复 #20 james.liu 的帖子
我晕 ,vs2008本就包含vc2008了呀,如果你不习惯nmake,
可以在vs2008中新建项目,把所有.h ,.c ,.cpp 都加到工程中就ok了呀

如果把整个工程都压缩的话,会大大增加压缩体积的,而且过几天我还要在linux测试下,
也要用make ,makefile ,这样所有平台一个几十k的小压缩包就都搞定了。
作者: windyrobin    时间: 2009-03-20 11:29
原帖由 reiase 于 2009-3-20 11:19 发表


我觉得你可以尝试实现一个嵌入式的web server,为一般C程序提供Web接口方案

虽然用C实现CGI很简单,但是实际使用时,为了一个很简单的C CGI,不得不配置一个大个头的Web server,对俺这种业余人士还是比 ...


呵呵,这位老大肯定没仔细看我的introduction ,
Robin_e (embedded)就是为了你说的需求量身定做的,
用c写页面处理,我开发这个服务器的初衷就是这个目的,

Robin_w 则是面向较大性的web application ,可以用c++写页面处理
作者: reiase    时间: 2009-03-20 11:34
原帖由 windyrobin 于 2009-3-20 11:29 发表


呵呵,这位老大肯定没仔细看我的introduction ,
Robin_e (embedded)就是为了你说的需求量身定做的,
用c写页面处理,我开发这个服务器的初衷就是这个目的,

Robin_w 则是面向较大性的web applicati ...


开始确实没仔细看.....
作者: james.liu    时间: 2009-03-20 11:37
标题: 回复 #22 windyrobin 的帖子
嗯嗯,,谢谢
作者: zhoubug    时间: 2009-03-20 15:23
原帖由 windyrobin 于 2009-3-20 11:29 发表

用c写页面处理,我开发这个服务器的初衷就是这个目的,

支持一下
如果为了c处理请求 可以考虑写apache module 通用 强大
作者: xinglp    时间: 2009-03-20 20:15
原帖由 zhoubug 于 2009-3-20 15:23 发表

支持一下
如果为了c处理请求 可以考虑写apache module 通用 强大


为什么我觉得apache module更难写呢,很多东西还不可以控制
作者: gradylau    时间: 2009-04-08 16:14
不错,顶一下!
作者: urapple    时间: 2009-04-08 16:52
标题: 回复 #23 windyrobin 的帖子
楼主大大强!
不过,小弟看了下,感觉模型太过简单,采用unix 网络编程 那套,来一个连接起一个线程。这种模型不太好。尤其瞬间高并发情况,估计楼主大大的并发不会超过几百个。
建议采用线程池,把连接均匀分配到各个线程里,每个线程分配几百个连接。
另外,要有兴趣,楼主大大可以用linux2.6的核,用epoll。这个目前比较流行。也简单。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2