我草草画了一个http的简单流程图,几个关键点很显然。好的的web架构都在于后台数据的及时处理。
读者范围
好吧,切入正题。本文的读者群是想用c++开发web的geek,适用于中小规模的业务需求,其服务是基于c或者cpp,其作者只会这两种语言,需要将自己的产品封装成web服务的群体。大并发量的web架构不是本文考虑的要点。你可能会在想我是不是有病,没事用C++搞web?
原理与关键点
假设你有这样的服务,例如股票交易系统,你的算法都是用cpp实现的。你的产品需要做web,你的web界面基本上是静态页面(不需要用到数据模板),你可能会用到异步请求和给app封装的数据接口。
常规的web,无论是ruby/python/php,其基本原理都是上图描述的。因此,关键点在于开发一个能够解析http派发路由的tcp长连接服务。
例如
http;//www.songtzu.com/index.html
这样的请求,后台在收到tcp链接之后,需要路由出这个请求需要读取index.html文件,将文件内容读取出来,通过tcp返回给客户端。
这个需求我推荐使用这个库
https://github.com/cesanta/mongoose
如果你需要更高级的,实现模板类型数据页面(根据请求,在后台生成html页面),则用cpp会很棘手,注意,只是很棘手,并不是不能实现。