在许多情况下,我会遇到一个问题:Web服务器和应用服务器之间的区别是什么?特别是当我跨越ruby on rails(一个使用ruby的web框架)时。
答案 0 :(得分:2)
网络服务器
Web服务器处理HTTP协议。当Web服务器收到HTTP请求时,它会响应HTTP响应,例如发送回HTML页面。要处理请求,Web服务器可以使用静态HTML页面或图像进行响应,发送重定向或将动态响应生成委派给其他程序,例如CGI脚本,JSP(JavaServer Pages),servlet,ASP(Active Server Pages) ),服务器端JavaScripts,或其他一些服务器端技术。无论其目的是什么,这些服务器端程序都会生成响应,通常以HTML格式生成,以便在Web浏览器中查看。
了解Web服务器的委派模型非常简单。当请求进入Web服务器时,Web服务器只是将请求传递给最能够处理它的程序。除了简单地提供服务器端程序可以执行的环境并传回生成的响应之外,Web服务器不提供任何功能。服务器端程序通常为自己提供事务处理,数据库连接和消息传递等功能。
虽然Web服务器本身可能不支持事务或数据库连接池,但它可能采用各种策略来实现容错和可扩展性,例如负载平衡,缓存和群集功能,这些功能通常被错误地指定为仅为应用程序服务器保留的功能。 / p>
应用程序服务器
对于应用程序服务器,根据我们的定义,应用程序服务器通过各种协议(可能包括HTTP)向客户端应用程序公开业务逻辑。虽然Web服务器主要处理发送HTML以便在Web浏览器中显示,但是应用程序服务器提供对业务逻辑的访问以供客户端应用程序使用。应用程序可以像调用对象上的方法(或程序世界中的函数)一样使用此逻辑。
此类应用程序服务器客户端可以包括在PC,Web服务器或甚至其他应用程序服务器上运行的GUI(图形用户界面)。在应用程序服务器及其客户端之间来回传递的信息不限于简单的显示标记。相反,信息是程序逻辑。由于逻辑采用数据和方法调用的形式而不是静态HTML,因此客户端可以使用它想要的公开的业务逻辑。
在大多数情况下,服务器通过组件API公开此业务逻辑,例如J2EE(Java 2平台,企业版)应用程序服务器上的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器管理自己的资源。这种守门职责包括安全性,事务处理,资源池和消息传递。与Web服务器一样,应用程序服务器也可以采用各种可伸缩性和容错技术。