【一类你不得不面对的服务端-linux】C语言实现支持yield/resume的插件式网络框架demo

说明:简单做了一个服务端框架demo,粗略实现一下自己的想法,和协程(coroutine)的理念基本相同,有这么几个核心设计要素是我希望通过代码展现出来的:

1,程序性质是一个服务端框架,需要用户编写请求的解析/反序列化函数,之后请求将经过若干预先编写的插件进行处理。(PS:个人精力的关系,插件直接与源码一起编译,而不是.so)。
2,框架支持插件异步化处理,即某个插件在处理某个请求时可以yield,并在异步处理完成后resume恢复后续插件的处理以及后续请求的处理,这与lua coroutine的想法是一样。

框架的目的是:有这么一大类服务,它们的客户端要求严格的请求->应答顺序,比如请求1->2->3,那么服务端也应返回1->2->3,此类服务如果需要支持异步业务逻辑,实在是离不开诸如coroutine此类的思想进行设计解耦,否则难成框架。(对应的另一类服务是通过在请求中携带唯一的ID来关联应答的,此种服务可以很简单的实现各种复杂的异步逻辑)

 

如果你很好奇如何实现一个请求应答强一致并且支持异步的服务端,比如强大的nginx/lighttpd等同类服务,那么你真的值得简略的了解一下代码了。

 

云盘下载地址:http://pan.baidu.com/share/link?shareid=482636&uk=2686094642

posted @ 2013-05-18 11:17  xmpp?  阅读(932)  评论(0编辑  收藏  举报