充当API的C程序

时间:2018-02-20 11:46:53

标签: c apache rest cgi-bin

很抱歉我对这个问题缺乏了解,但是: 如果我想创建一个使用Apache作为Web服务器公开REST API层的C应用程序,有2个选项(至少这2个我找到谷歌搜索)

  
      
  • 使用CGI。

  •   
  • 实现Apache扩展,即hello_world.so,然后加载Apache配置

  •   

在创建流程,开销,滞后等方面,它们之间的主要区别是什么?

感谢。

2 个答案:

答案 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 fieldsHTTP cookies

BTW,任何Apache扩展都是特定于Apache(不能与大多数其他HTTP服务器一起工作),也许是它的版本。