【问题标题】:What web server interface to choose?选择什么网络服务器接口?
【发布时间】:2010-02-25 17:22:26
【问题描述】:
我正在规划一个 Web 服务,它将用 C++ 编写。目标是能够选择或多或少的任何 Web 服务器来驱动服务。为了实现这一点,我显然必须在 Web 服务器和应用程序之间选择一个标准化的接口。
我听说过的众所周知的方法是:
现在,由于我完全没有使用这些界面的经验,我真的不知道该选择什么。不过我确实有一些要求。
- 需要相当快(据我所知,这几乎排除了 CGI)
- 应该可以在纯 C/C++ 环境中轻松使用(例如,应该有可用的库)
- 必须提供对 HTTP 1.1 的支持(不知道是否重要)
感谢您的任何建议:)
【问题讨论】:
标签:
c++
web-services
interface
webserver
【解决方案1】:
WSGI 用于 Python 应用程序;如果您的语言是 C++,这不是一个选项。
FCGI 是一个不错的选择。 FCGI可以作为标准CGI调用,方便调试和测试,然后在生产中作为FCGI运行。
CGI 与 FCGI 的性能在很大程度上取决于您尝试执行的操作以及您期望的流量。具有大量启动开销的任务从 FCGI 中受益最多; FCGI 控制器可以配置为产生额外的进程来处理繁重的负载。
几乎任何网络服务器都可以以最少的配置运行 CGI;您可能需要一个额外的模块来运行 FCGI,但这取决于 Web 服务器。
http://en.wikipedia.org/wiki/FastCGI
【解决方案2】:
CGI 没有什么“慢”的地方,它只是不可扩展。 FCGI 更具可扩展性,但您无法在该环境中轻松开发,因为该过程寿命很长,并且使调试成为一场噩梦。 HTTP/1.1 在这个抽象级别上不是问题。如果您担心速度并且此时没有任何分析或测试,您不应该担心,但这些接口与速度无关,它们与兼容性有关。速度取决于您运行代码的容器。
【解决方案3】:
CGI/fastCGI 应该没有太多问题。如果你实现了 fastcgi,你的程序仍然可以像普通的 CGI 一样运行。并且大多数 Web 服务器都支持 cgi/fastcgi。