1、 WEB服务器、应用程序服务器、HTTP 服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere 都各属于哪种服务 器,这些问题困惑了很久,今天终于梳理清楚了:Web服务器的基本功能就是提供 Web信息浏览服务。它只需支持 HTTP协议、HTML文档格式及 URL。与客户端的网络浏览器配合。因为 Web服务器主 要支持的协议就是 HTTP,所以通常情况下 HTTP服务器和 WEB服务器是相等的(有没有支持除 HTTP之外的协议的 web服务器,作者没有考证过),说 的是一回事。 应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:“我们把应用程序服务
2、器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。 就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)“通俗的讲,Web 服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法 (methods)。确切一点,你可以说:Web 服务器专门处理 HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供 (serves)商业逻辑 (business logic)。以这样的定义,IIS、Apache、Tomcat 都可以属于 Web服务器,Weblo
3、gic、WebSphere 都属于应 用服务器。 Apache:在 Web服务器中,Apache 是纯粹的 Web服务器,经常与 Tomcat配对使用。它对 HTML页面具有强大的解释能力,但是不能解释嵌 入页面内的服务器端脚本代码(JSP/Servlet。 Tomcat:早期的 Tomcat是一个嵌入 Apache内的 JSP/Servlet解释引擎Apache+Tomcat就相当于 IIS+ASP。后来的 Tomcat 已不再嵌入 Apache内,Tomcat进程独立于 Apache进程运行。 而且,Tomcat 已经是一个独立的Servlet和 JSP容器,业务逻辑层代码和界面交互层代码
4、可以分离了。因此,有人把 Tomcat叫做轻量级应用服 务器。 IIS:微软早期的 IIS,就是一个纯粹的 Web服务器。后来,它嵌入了 ASP引擎,可以解释 VBScript和 JScript服务器端代码了,这时,它 就可以兼作应用服务器。当然,它与 J2EE应用服务器根本无法相比,但是,从功能上说,从原理上说,它勉强可以称之为应用服务器。确切地说,它是兼有一点 应用服务器功能的 Web服务器。 综上:Apache 是纯粹的 web服务器,而 Tomcat和 IIS因为具有了解释执行服务器端代码的能力,可以称作为轻量级应用服务器或带有服务器功能的 Web服务器。 Weblogic、WebSp
5、here 因为能提供强大的 J2EE功能,毫无疑问是绝对的应用服务器。对于处于中间位置的 Tomcat,它可以配合纯 Web服务器 Apache一起使用,也可以作为应用服务器的辅助与应用服务器一起部署:一、Tomcat 与应用服务器到目前为止,Tomcat 一直被认为是 Servlet/JSP API的执行器,也就所谓的 Servlet容器。然而,Tomcat 并不仅仅如此,它还提供了 JNDI和 JMX API的实现机制。尽管如此,Tomcat 仍然还不能算是应用服务器,因为它不提供大多数 J2EE API的支持。很有意思的是,目前许多的应用服务器通常把 Tomcat作为它们 Servlet
6、和 JSP API的容器。由于 Tomcat允许开发者只需通过加入一行致谢,就可以把 Tomcat嵌入到它们的应用中。遗憾的是,许多商业应用服务器并没有遵守此规 则。对于开发者来说,如果是为了寻找利用 Servlet、JSP、JNDI 和 JMX技术来生成 Java Web应用的话,选择 Tomcat是一个优秀的解决方案;但是为了寻找支持其他的 J2EE API,那么寻找一个应用服务器或者把 Tomcat作为应用服务器的辅助,将是一个不错的解决方案;第三种方式是找到独立的 J2EE API实现,然后把它们跟 Tomcat结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。二、To
7、mcat 与 Web服务器Tomcat是提供一个支持 Servlet和 JSP运行的容器。Servlet 和 JSP能根据实时需要,产生动态网页内容。而对于 Web服务器来说, Apache 仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat 则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的 Web 服务器快、功能也不如 Web服务器丰富,但是 Tomcat逐渐为支持静态内容不断扩充。大多数的Web服务器都是用底层语言编写如 C,利用了相应平 台的特征,因此用纯 Java编写的 Tomcat执行速度不可能与它们相提并论。一般来说,大的站点都是将 Tomcat与 Apache的结合,Apache 负责接受所有来自客户端的 HTTP请求,然后将 Servlets和 JSP的请求 转发给 Tomcat来处理。Tomcat 完成处理后,将响应传回给 Apache,最后 Apache将响应返回给客户端。