apache和tomcat的区别

前言

曾经有人问我,Apache和Tomcat的区别,其实我也想过这个问题,但是没有仔细想,只觉得他们的不同大概在于可以执行的脚本语言不同。曾经安装过Apache是用来解释PHP所以我想都没有仔细想就回答说Apache是用来解释PHP的而Tomcat是用来解释jsp的。今天又突然有了这个疑问,终于想搞清这个问题了,于是在网上找了一下这个问题,发现这还真是一个问题,网上有很多关于这个问题的内容。于是把网上的内容总结一下,顺带加入一点自己的理解,作一个记录。

概述

首先从一个Web应用说起,Web应用包括的东西可不只是购物车、退出交易页面和那些引人注目的图形,大多数的电子商务应用都使用3层结构。所以当谈论“应用”时,实际上我们指的是一个或多个服务器。这是摘抄一本书上关于Web应用的一段话,我觉得这段话带出了很多问题。下面再摘抄一下他关于构成Web应用的“一个或多个服务器”的分类,这里分了下面三类。

web服务器:这一部分为用户浏览浏览器提供web页面。最常见的例子就是apache和iis。

应用服务器:这一部分替用户操作、解释、提供数据。应用服务器可以是web服务器的一部分,例如PHP和Apache,或是ASP.NET就是这样。另一方面,应用服务器可以是物理上独立的服务器,例如Tomcat servlet引擎。

数据库:这一部分存储应用所需的全部数据。尽管用户能够与Web和应用服务器交互,但他们通常不能直接访问数据库服务器。大多数情况下,应用服务器代理用户和数据库之间的数据,并格式化数据使之正确存储。

依据我对上面的理解,Apache是Web服务器,Tomcat是应用服务器。那Web服务器和应用服务器的区别在哪里呢,依据我的理解在于他们专注的方向不同,Web服务器专注于和客户交互,通信。将HTML页面返回给用户。而应用服务器则专注于处理服务器上的一些处理,例如将jsp转化为servlet,然后服务器在根据请求执行生成的java类文件动态生成HTML并将这个页面返回给用户。下面是从网上找来的两者的不同。

不同

1、APACHE是WEB服务器,Web服务器传送(serves)页面使浏览器可以浏览,Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供 (serves)商业逻辑(business logic)。
TOMCAT是运行在APACHE上的应用服务器,应用程序服务器提供的是客户端应用程序可以调用(call)的方法 (methods)。它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。

2、Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然),

Tomcat是jsp/servlet容器,同时也支持html,和CGI. CGI需要一些手动调试,不过很容易的。

3、apache:侧重于http server,但tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效,支持JSP,但对静态网页不太理想。

4、apache可以运行一年不重启, 稳定性非常好, 而 tomcat 则不见得。

5、 首选 web服务器是 apache,但有 apache解析不了的 jsp,servlet才用 tomcat。

6、apache是很最开始的页面解析服务, tomcat是后研发出来的 ,从本质上来说,tomcat的功能完全可以替代apache,但apache毕竟是tomcat的前辈级人物,并且市场上也有不少人还在用apache,所以apache还会继续存在,不会被取代, apache不能解析java的东西,但解析html速度快。

例子

apache是一辆车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。那这个桶就是TOMCAT。

再举个我自己想的例子

Apache就像是一家公司,公司给客户提供服务,而Tomcat就像是这家公司的一名技术人员,在公司给客户提供的服务中有这名员工的工作成果。这名员工可以为公司服务,通过公司和客户打交道,当然他也可以不再公司里出来自己混。那么他就要自己和客户打交道。也可以给用户提供服务。这就是我对Apache和Tomcat区别的理解。

初学Web,有错在所难免,欢迎知道的兄台不吝赐教。在下谢过了。

分享到 评论