在"3、fastcgi、fastcgi++"中,我们了解了cgi,也尝试了fastcgi++,这里,再记录一种对fastcgi的封装。
1、cgi接口层
request_t 请求,提供get、set、get_path、get_remote_ip response_t 应答,提供set_content_type、write cgi_handler_t int handle(request_t & req, response_t & resp) framework_t 包含init和run,由framework_factory来create_instance2、fastcgi++实现
fcgipp_handler_t : Fastcgipp::Request<char>, 实现register_handler和response(), 具体实现: fcgipp_request_impl_t request(env); fcgipp_response_impl_t response; int status = _p_handler->handle(request, response); fcgipp_framework_impl_t : framework_t fcgipp_handler_t::register_handler(p_handler); 实现run: Fastcgipp::Manager<fcgipp_handler_t> fcgi; fcgi.handler(); fcgipp_request_impl_t : request_t 使用Fastcgipp::Http::Environment<char> & env fcgipp_response_impl_t : response_t 处理headers和body来生产http应答内容总结:
1、基于fastcgi++能够快速稳定有效的实现c++的fastcgi功能2、通过封装,使fastcgi++的对外完全不可见,隐蔽了具体实现3、仍然是cgi基础层,在上面还可以进行进一步的封装