很抱歉我对这个问题缺乏了解,但是: 如果我想创建一个使用Apache作为Web服务器公开REST API层的C应用程序,有2个选项(至少这2个我找到谷歌搜索)
使用CGI。
实现Apache扩展,即hello_world.so,然后加载Apache配置
在创建流程,开销,滞后等方面,它们之间的主要区别是什么?
感谢。
答案 0 :(得分:1)
使用CGI,可以在单独的过程中运行应用程序。
使用Apache扩展,该应用程序是Apache的加载模块,可以在与Apache相同的过程中运行。
对于性能,您可能希望它在同一个过程中;但是,如果您遇到编码错误,它将导致Apache崩溃。
为了稳定,你可能希望它在不同的过程中;但是,与启动和停止流程相关的成本将是您的请求处理中的永久开销,这将限制您可以维护和维护的连接数。
有一个妥协,但它不应该被视为两全其美。 FastCGI通过重用Apache使用的CGI进程来工作。但是,它仍然比Apache模块慢,并且会产生更多的开销,但这种开销通常比传统的CGI要小。
答案 1 :(得分:1)
您可以考虑编写一些FastCGI应用程序,并将Apache服务器配置为使用它来说FastCGI。然后你不会(与旧的CGI相反)为每个HTTP请求启动一个进程,并且你的应用程序将提供几个HTTP请求(由Apache转换为FastCGI请求)并且可以在它们之间保持一些状态。
你甚至可以在你的应用程序中使用一些HTTP服务器库,比如libonion(然后它会成为一些专门的HTTP服务器)。然后,您甚至不需要任何Apache服务器(或者您可以配置Apache服务器以将某些HTTP请求转发到您的应用程序)。
您当然需要了解更多HTTP协议本身及其请求,并回复header fields和HTTP cookies。
BTW,任何Apache扩展都是特定于Apache(不能与大多数其他HTTP服务器一起工作),也许是它的版本。