gpt4 book ai didi

apache - Web 服务器程序和内容提供程序之间交互范式的演变是怎样的?

转载 作者:行者123 更新时间:2023-11-28 22:23:21 26 4
gpt4 key购买 nike

在我看来,Web 服务器负责向客户端传送 内容。如果它是静态内容,比如图片和静态 html 文档,网络服务器直接将它们作为比特流传送。如果是在处理客户端请求期间生成的一些动态内容,Web 服务器不会自己生成内容,而是调用一些外部程序来生成内容。

据我所知,这种动态内容生成技术包括以下内容:

  • 计算机生成

  • ISAPI

  • ...

来自here ,我注意到:

...In IIS 7, modules replace ISAPI filters...

还有其他的吗?任何人都可以帮我完成上面的列表并详细说明或显示一些指向他们的演变的链接吗?我认为了解 IIS、TomCat 和 Apache 等应用程序将非常有帮助。

我曾经写过一个 CGI 小程序,虽然它作为一个内容生成器,但它仍然只是一个普通的独立程序。我称之为正常,因为 CGI 程序有一个 main() 入口点。但是随着像ASP.NET这样的新兴技术,我写的不是完整的程序,而是一些类库。 为什么会发生如此彻底的变化?

非常感谢。

最佳答案

好吧,您的问题中最大的遗漏部分是您也可以让网络服务器动态生成内容。这对于 PHP 和 Perl 之外的大多数平台都很常见。您经常将该网站设置在用作代理的 apache 或 nginx 后面,但它不会在任何合理的意义上“调用外部程序”,而是将 http 请求转发到代理服务器。这主要是为了让您可以在同一台服务器上拥有多个站点,并且还可以让 apache/nginx 保护您免受不正确的请求。

但是可以肯定的是,为了这个问题,我们可以说“代理”是一种调用外部程序的方式。 :-)

“调用外部程序”的另一种方法是 Python 的 WSGI,您可以在其中调用永久运行的服务器。因此,您再次没有启动外部程序,它更像是在 ASP 中调用模块(虽然它是一个单独的程序,而不是一个模块,但您不会在每个请求时都启动它,而是使用一个 API)。

从像在 CGI 中调用外部程序到像在 ASP.NET 中调用模块、使用 WGI 处理或代理到另一个 Web 服务器的变化发生了,因为使用 CGI 你必须为每个请求启动一个新的程序。 PERL/PHP 解释器以及它们使用的所有模块都需要加载到内存中。这很快就会变得非常繁重,并且会占用大量进程/内存。

因此,为了能够使用永久运行的更大系统,已经开发了其他技术。它们中的大多数是平台/语言相关的,唯一独立于平台的是真正制作一个完整的网络服务器,然后使用 apache/nginx 作为前面的代理(在这种情况下,apache/nginx 不再是必需的) ).

我希望这能让事情变得更清楚一些。

关于apache - Web 服务器程序和内容提供程序之间交互范式的演变是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com