2011-03-26 80 views
0

This question询问'基于cgi-bin'的服务的缺点。据我所知,除了可能的命名约定之外,就基于Web的客户端/服务器交互而言,多年来没有什么变化。当然,现在可以选择使用AJAX客户端,但最终它们仍然是无状态的,无论编写哪种语言,服务器上的代码仍然等待输入通过“GET”或“POST”方法发送。替代cgi-bin

就网络编程而言,已经走出循环一段时间了,我是否错过了一些明显的东西?

澄清我的问题:我提到的问题表明'cgi-bin'系统不再使用,新的替代方案是什么?

@sarnold。谢谢您的回答。即使系统是使用“最新最好的”服务器平台开发的(我猜这将是一个基于.net的系统或Linux等价物),但它最终仍然只是一个程序,或程序,运行(如果使用快速CGI)或等待在服务器上启动,所以多年来确实没有任何变化。如果这是另一种方法是布赖恩提到的情况在他的question?

回答

2

最大的变化是在工具,如它们实现一些非常几乎完全相同mod_php直接在Web服务器的地址空间执行的代码和FastCGI CGI协议,但有少量长寿命进程,而不是每个请求的新解释器的fork(2) + execve(2)

当然,这两种方法都存在问题:直接在Web服务器的地址空间中执行解释器对于可靠性和安全性来说可能是非常可怕的:服务器(通常)始终以相同的权限运行,因此将用户分开(通常)不可能。此外,解释器中的缺陷可能相当普遍,所以它不适用于共享主机环境,因为任何用户都可以使用访问系统上所有其他用户的所有数据所需的特权运行任意代码。

FastCGI方法几乎保持相同的速度;它确实牺牲了在进程间复制数据的速度,但对于除了巨大的卷网站之外的任何人都不是什么大问题。但是,您可以将多个FastCGI系统作为连接到单个“Web服务器”不同位置的不同用户帐户运行(例如,http://example.com/public/在帐户www-publichttp://example.com/private/下运行,帐户www-private下运行),并且FastCGI系统无需运行与Web服务器相同的权限。

当然,也有servlet systems其中服务器调用链接到服务器进程的编译回调(经常编译为字节码)代码。更少的“脚本” - 感觉。