This question询问“基于cgi-bin”服务的缺点。据我所知,除了命名约定之外,在基于web的客户端/服务器交互方面,这些年来并没有太大的变化。当然,现在可以选择使用AJAX客户端,但最终它们仍然是无状态的,并且服务器上的代码,无论它是用什么语言编写的,仍然等待输入通过“GET”或“POST”方法发送。
就web编程而言,我已经离开了很长一段时间,我是不是遗漏了什么显而易见的东西?
为了澄清我的问题:我提到的问题表明基于cgi-bin的系统不再使用,新的替代方案是什么?
@sarnold。谢谢你的回答。正因为如此,我百分之百地确定,即使一个系统是使用‘最新最好的’服务器平台开发的(我猜这可能是一个基于.net的系统或Linux的等价物),它最终仍然只是一个或多个程序,在服务器上运行(如果使用快速cgi)或等待启动,所以这些年来真的没有任何变化。如果是这样的话,布莱恩在他的question?中指的是什么替代方案
发布于 2011-03-26 17:17:48
最大的变化是像mod_php和FastCGI这样的工具,它们直接在web服务器的地址空间中执行代码,它们实现了与CGI协议几乎相同的东西,但使用了几个长时间的进程,而不是为每个请求使用新的解释器的fork(2) + execve(2)。
当然,这两种方法都有问题:直接在web服务器的地址空间中执行解释器对于可靠性和安全性可能是可怕的:服务器(通常)始终以相同的权限运行,因此(通常)不可能分离用户。此外,解释器中的缺陷可能非常常见,因此它不是共享主机环境的好解决方案,因为任何用户都可以使用访问系统上所有其他用户的所有数据所需的权限运行任意代码。
FastCGI方法几乎保持了相同的速度;它确实牺牲了一些在进程之间复制数据的速度,但这对于除了大容量站点之外的任何人来说都不是什么大问题。但是,您可以以连接到单个“web服务器”的不同位置的不同用户帐户运行多个FastCGI系统(例如,http://example.com/public/在帐户www-public下运行,而http://example.com/private/在帐户www-private下运行),并且FastCGI系统不需要以与web服务器相同的权限运行。
当然,还有一些servlet systems,其中服务器调用链接到服务器进程的已编译回调(通常是编译为字节码)代码。更不用说“脚本”-feel了。
https://stackoverflow.com/questions/5441335
复制相似问题