如何在Web服务器中使用c ++应用程序?

时间:2016-06-01 07:32:11

标签: c++ web-services com

我在Windows中使用C ++控制台应用程序。我想在我的网站中使用这个应用程序,以便从客户端获取输入,然后调用此应用程序来处理它,输出将转发到Web服务器。我听说过 COM DLL ,但不知道如何为我的应用程序创建它。

5 个答案:

答案 0 :(得分:17)

您应该尝试创建一个cgi脚本,根据应用程序的需要,您应该使用FastCGI(每次调用时都不会创建整个流程上下文)。

  • CGI

您应该安装Apache服务器并激活cgi模块(通常默认激活它)。 然后你可以开发一个c ++程序,将可执行文件放在配置的CGI文件夹中,给出正确的权限。这个CGI脚本应该进行某种进程间通信(可以通过套接字或共享内存,第一个更容易)。 我希望你知道CGI脚本在C / C ++ + Apache中是如何工作的,但它非常直接,总之你在stdin中接收环境并将你的答案放到stdout。

  • 的FastCGI

你可以使用apache,安装fastcgi模块并在你的程序中创建一个线程(它也可以在你的主循环中,但我不建议)并将apache服务器FastCGI模块附加到你的守护进程。

最后但同样重要的是,您应该将守护程序作为服务运行。

  PS:有一些框架选项(比如cppcms和wt),但是从那以后   你已经有了守护进程,我认为这会很痛苦   改变一切的屁股(当然,这取决于很多   事情,比如应用程序的复杂性和大小。)

答案 1 :(得分:6)

使用CGI:http://cgi.sourceforge.net/

如何从客户端获取输入?

getenv("QUERY_STRING")  

如何将输出转发到Web服务器?

cout << "<html>\n";

Hello world CGI:

#include <iostream>
#include <cstdlib>

using namespace std;

int main ()
{

   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - First CGI Program</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! This is my first CGI program</h2>\n";
   cout << "<p>REQUEST_METHOD = " << getenv("REQUEST_METHOD") << "</p>\n";
   cout << "<p>QUERY_STRING = " << getenv("QUERY_STRING") << "</p>\n";
   cout << "</body>\n";
   cout << "</html>\n";

   return 0;
}

答案 2 :(得分:4)

甚至还有几个用于开发它们的框架,包括Wt,cppcms,CSP等。 FastCGI的主线实现在C语言中,直接支持多种语言,包括C ++。

我建议在http://www.webtoolkit.eu/使用C ++ webtoolkit Wt(发音为Witty)。

这个框架(带有集成的应用程序服务器)允许您根据窗口小部件和信号/插槽连接设计Web应用程序,并将大部分Web应用程序留在库中。生成的应用程序是面向对象的,严格类型化的,并且可以完美地维护。该库自动检​​测浏览器的功能,并使用正确的方式呈现网站,避免浏览器错误。这是an example of aplication using wt

另见this thread

答案 3 :(得分:4)

我的小组刚刚将其作为一个课程项目,我们大多使用cpp-netlib作为网络库,但我们也使用curlpp作为一些小的东西。我们将它作为Windows服务器托管在Amazon EC2实例设置上,您可以随意使用UI。这是一个相当简单的项目,但采取这种方式并不像我想象的那样有限。希望有所帮助

答案 4 :(得分:4)

为了在Windows和IIS 6上获得高性能,您需要创建ISAPI dll;在IIS 7中,您将要创建module。两者都不是特别微不足道,你将不得不做很多阅读。