应用服务器和 Web 服务器有什么区别?
大多数时候,这些术语 Web 服务器和应用程序服务器可以互换使用。
以下是 Web 服务器和应用程序服务器功能的一些主要区别:
Web Server 旨在提供 HTTP 内容。App Server 也可以提供 HTTP 内容,但不仅限于 HTTP。可以提供其他协议支持,例如 RMI / RPC
Web 服务器主要设计用于提供静态内容,尽管大多数 Web 服务器都有插件来支持脚本语言,如 Perl,PHP,ASP,JSP 等,这些服务器可以通过这些插件生成动态 HTTP 内容。
大多数应用程序服务器都将 Web Server 作为其组成部分,这意味着 App Server 可以执行 Web Server 所能执行的任何操作。此外,App Server 还具有支持应用程序级服务的组件和功能,例如连接池,对象池,事务支持,消息传递服务等。
由于 Web 服务器非常适合静态内容和用于动态内容的应用程序服务器,因此大多数生产环境都将 Web 服务器用作应用程序服务器的反向代理。这意味着在为页面请求提供服务时,静态内容(例如图像 / 静态 HTML)由解释请求的 Web 服务器提供。使用某种过滤技术(主要是所请求资源的扩展),Web 服务器可以识别动态内容请求并透明地转发到应用程序服务器
这种配置的示例是 Apache Tomcat HTTP Server 和 Oracle(以前称为 BEA)WebLogic Server。Apache Tomcat HTTP Server 是 Web 服务器,Oracle WebLogic 是应用程序服务器。
在某些情况下,服务器紧密集成,例如 IIS 和.NET Runtime。IIS 是 Web 服务器。当配备.NET 运行时环境时,IIS 能够提供应用程序服务。
这是一些场景的详细答案,以清楚地了解差异和相似性,以及两者如何协同工作。
应用服务器是有时与web 服务器混合的术语。虽然 web 服务器主要处理HTTP 协议,但是应用服务器处理若干不同的协议,包括但不限于 HTTP。
Web 服务器的主要工作是显示站点内容,应用程序服务器是负责逻辑,即用户与显示内容之间的交互。应用程序服务器是与 Web 服务器协同工作,其中一个显示,另一个交互。
在服务器及其客户端之间来回传输的信息不限于简单的显示标记,而是限于两者之间的交互。
在大多数情况下,服务器通过组件 API创建此交互,例如J2EE(Java 2 平台),EJB(Enterprise JavaBean)和其他不同的应用程序软件模型。
An example:要了解应用程序服务器与 Web 服务器一起工作的情况与没有应用程序服务器的情况之间的区别,最好的方法是通过在线商店。
场景 1:没有应用服务器的 Web 服务器
您有一个只有 Web 服务器而没有应用程序服务器的在线商店。该站点将提供一个显示,您可以从中选择产品。当您提交查询时,该站点将执行查找并将 HTML 结果返回给其客户端。Web 服务器将您的查询直接发送到数据库服务器 (请耐心等待,我将在我们的下一个 nugget 数据库中解释这一点),并等待响应。一旦收到,Web 服务器就会将响应编制成一个 HTML 文件,并在
场景二:带应用服务器的 Web 服务器
如果您要运行的查询以前已经完成,并且此后没有任何数据更改,则服务器将生成结果,而无需将请求发送到数据库服务器。这允许实时查询,其中第二个客户端可以访问相同的信息并接收实时,可靠的信息,而无需将另一个重复的查询发送到数据库服务器。服务器基本上充当数据库服务器和 Web 服务器之间的中介,这使得在第二种情况下提取的信息不可重用,因为“
为了支持各种复杂的任务,该服务器必须具有内置的冗余,强大的处理能力和大量的 RAM 来处理它实时提取的所有数据。
这两个术语都非常通用,在某些情况下,一个包含另一个,反之亦然。
Web 服务器:使用 http 协议向 Web 提供内容。
应用服务器:托管并公开业务逻辑和流程。
我认为要点是 Web 服务器通过 http 协议公开所有内容,而应用程序服务器不限于此。
也就是说,在许多情况下,您会发现 Web 服务器用于创建应用程序服务器的前端,也就是说,它公开了一组网页,允许用户与应用程序服务器中的业务规则进行交互。
运行pytn -m 'SimpleHTTPServer'
并转到http://localst:8080。您看到的是正在运行的 Web 服务器。该服务器仅通过存储在计算机上的 HTTP 提供文件。关键点是所有这些都是在 HTTP 协议之上完成的。例如,也存在 FTP 服务器,它们执行完全相同的操作(服务存储的文件),但基于不同的协议。
应用程序服务器
假设我们有一个像下面这样的小应用程序(来自Flask的片段)。
@app.route('/')
def mepage():
return '<html>My mepage</html>'
@app.route('/about')
def about():
return '<html>My name is John</html>'
小示例程序将 URL/
映射到函数mepage()
,将/about
映射到函数about()
。
要运行此代码,我们需要一个应用程序服务器(例如 Gunicorn)-一个程序或模块,可以来自客户端的请求并使用我们的代码,动态返回一些东西。
其他人谈论的业务逻辑是什么?好吧,由于 URL 映射到我们代码库中的某个特定位置,因此我们假设显示了有关程序工作原理的一些逻辑。
RecappingWeb 服务器-提供存储在某处的文件(最常见的是.css,.html,.js)。常见的 Web 服务器是 Apache,Nginx 甚至 Pytn 的 SimpleHTTPServer。
应用程序服务器-提供即时生成的文件。基本上大多数 Web 服务器都有某种插件,甚至带有内置功能。也存在严格的应用程序服务器,如 Gunicorn(Pytn),Unicorn(Ruby),uWSGI(Pytn)等。
请注意,您实际上可以使用应用程序服务器的代码构建 Web 服务器。在开发过程中的某些情况下,您不希望在计算机上运行大量不同的服务器。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(48条)