我总是对 Web 服务器和应用程序服务器感到困惑。有人可以告诉我这两者之间到底有什么区别。
6 回答
应用程序服务器是任何应用程序级协议上的任何服务器。
HTTP 是应用程序级协议,因此 Web 服务器就是应用程序服务器。应用服务器也可以使用完全不同的协议。
但是,如果说 Web 服务器运行“Web 应用程序”,则它仅可能被称为应用程序服务器,这通常意味着具有一定(任意)复杂程度的“动态”内容。这在技术上是无稽之谈,因为所有 HTTP 都在应用程序级别(并且在外部是一个黑盒子,因此它是从“静态”内容还是“动态”内容提供的无关紧要)。
尽管如此,这种区别的部分原因是有些人仍然将 HTTP 视为某种传输协议,并期望有应用程序“在上面”,但主要是为了让营销人员暗示存在某种有意义的区别制作,您应该投资他们的“应用程序服务器”而不是网络服务器。
网络服务器:
- Apache、IIS、nginx、Lighttpd 等。
他们可以通过 CGI、FastCGI、SCGI、模块等与 CGI 后端、PHP、.Net、Lua 等应用程序交互来生成动态内容。
网络应用服务器:
- Tomcat/JBoss/GlassFish/WebSphere(Java 脚本)、G-WAN(ANSI C 脚本)等。
他们通过使用集成脚本引擎(如上述示例中的 Java 或 C 脚本)来原生生成动态内容。
应用程序服务器通常更快,因为它们不必承受服务器和脚本引擎之间的 INTERFACE 开销。
基本上,服务器只是计算机正在执行的任务。服务器不是机器的名称(尽管通常称它为服务器)。所以一台机器可以作为网络服务器、应用服务器等等。
Web 服务器意味着服务器正在交付 Web 内容(HTML、PHP 等)。典型的服务器软件是 Apache 或 IIS。
应用程序服务器是一个更通用的术语。根据定义,Web 服务器也是应用程序服务器(Apache 软件是应用程序)。但应用程序服务器并不局限于交付 Web 内容。
我希望它不会太令人困惑;-)
“Web 服务器”意味着 HTTP(很可能是 HTML);“应用服务器”可以是任何协议。
甚至这种区别也不是 100%,除此之外,还有激烈的领域和对语义的争论。
If your question comes from the Java domain, an application server is a fully conformant server to J2EE specification, providing all related features (e.g. Glassfish, JBoss, WebLogic)
A web server on the other hand is just light-weight server not fully implementing the J2EE specs (e.g. Apache Tomcat)