Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
充当API的C程序_C_Apache_Rest_Cgi Bin - Fatal编程技术网

充当API的C程序

充当API的C程序,c,apache,rest,cgi-bin,C,Apache,Rest,Cgi Bin,很抱歉,我对这个问题缺乏相关知识,但是: 如果我想创建一个使用Apache作为web服务器公开RESTAPI层的C应用程序,有两个选项(至少我在谷歌上找到了这两个选项) 使用CGI 实现一个Apache扩展,即hello_world.so,然后加载到Apache配置中 在创建的流程、开销、滞后等方面,它们之间的主要区别是什么 谢谢。使用CGI,可以在单独的进程中运行应用程序 使用Apache扩展,应用程序是Apache的一个加载模块,可以在与Apache相同的进程中运行 对于性能,您可能

很抱歉,我对这个问题缺乏相关知识,但是: 如果我想创建一个使用Apache作为web服务器公开RESTAPI层的C应用程序,有两个选项(至少我在谷歌上找到了这两个选项)

  • 使用CGI

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

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


谢谢。

使用CGI,可以在单独的进程中运行应用程序

使用Apache扩展,应用程序是Apache的一个加载模块,可以在与Apache相同的进程中运行

对于性能,您可能希望在相同的过程中使用它;然而,如果您有一个编码错误,它将使Apache崩溃

对于稳定性,您可能希望它处于不同的过程中;但是,与启动和停止进程相关的成本将是请求处理中的永久性开销,这将限制您可以维护和服务的连接数


这是一个折衷方案,但不应被视为两全其美。FastCGI通过重用Apache使用的CGI进程来工作。但是,它仍然比Apache模块慢,并且会带来更多的开销,但是开销通常低于传统的CGI。

< P>您可以考虑编写一些应用程序,并配置Apache服务器用它来讲FastCGI。然后,您将不会(与旧的情况相反)为每个HTTP请求启动一个进程,您的应用程序将服务于多个HTTP请求(由Apache转换为FastCGI请求),并且可能会在它们之间保持一些状态

您甚至可以在应用程序中使用一些HTTP服务器库,例如(然后成为一些专门的HTTP服务器)。然后,您甚至不需要任何Apache服务器(或者您可以将Apache服务器配置为向应用程序转发一些HTTP请求)

您当然需要更多地了解协议本身及其请求和回复,以及

顺便说一句,任何Apache扩展都是特定于Apache的(不适用于大多数其他HTTP服务器),可能也适用于其版本