当前位置: 首页 > 科技观察

Web服务器、应用服务器、HTTP服务器的区别

时间:2023-03-17 00:59:25 科技观察

IIS、Apache、Tomcat、Weblogic、WebSphere属于哪个服务器。这些问题困惑了很久,今天终于整理出来了:Web服务器的基本功能就是提供Web信息浏览服务。它只需要支持HTTP协议、HTML文档格式和URL。与客户端的网络浏览器一起工作。因为web服务器主要支持的协议是HTTP,所以HTTP服务器和WEB服务器通常是等同的(笔者没有验证是否有web服务器支持HTTP以外的协议),说的是同一个东西。应用服务器(简称应用服务器),我们先看看微软对它的定义:“我们将应用服务器定义为“作为服务器执行共享业务应用的底层系统软件”。就像文件服务器提供文档一样,应用程序服务器允许多个用户同时使用一个应用程序(通常是客户端创建的应用程序)。”通俗地说,Web服务器提供(serves)浏览器可以浏览的页面,而应用服务器则提供客户端创建的Methods供终端应用程序调用(call)。准确地说,可以说:Web服务器专门处理HTTP请求(request),而应用服务器则通过很多协议为应用程序提供(serves)业务逻辑(businesslogic)。以JavaEE为例,Web服务器主要进行静态页面处理,作为Servlet容器,解释执行servlet/JSP,而应用服务器运行业务逻辑,主要以EJB、JNDI、JMXAPI。包括事务处理、数据库连接等功能,所以在企业级应用中,应用服务器提供的功能要比WEB服务器强大的多。按照这个定义,IIS、Apache、Tomcat都可以属于Web服务器,Weblogic、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容器,业务逻辑层代码和界面交互层代码可以分离。因此,有人称Tomcat为轻量级应用服务器。IIS:微软早期的IIS是一个纯Web服务器。后来嵌入了ASP引擎,可以解释VBScript和JScript服务器端代码。这时,它可以兼作应用服务器。当然,它根本不能与J2EE应用服务器相提并论,但从功能和原理上来说,勉强可以称为应用服务器。准确的说,它是一个带有一点应用服务器功能的Web服务器。总结一下:Apache是??纯Web服务器,而Tomcat和IIS可以称为轻量级应用服务器或具有服务器功能的Web服务器,因为它们具有解释和执行服务器端代码的能力。因为Weblogic和WebSphere可以提供强大的J2EE功能,所以毫无疑问它们是绝对的应用服务器。对于中间的Tomcat,可以和纯web服务器Apache一起使用,也可以和应用服务器部署在一起作为辅助应用服务器:1.Tomcat和应用服务器至此,Tomcat已经被被视为Servlet/JSPAPI。执行器,也称为Servlet容器。然而Tomcat不仅如此,它还提供了JNDI和JMXAPI的实现机制。尽管如此,Tomcat仍然不是应用服务器,因为它不提供对大多数J2EEAPI的支持。非常有趣的是,目前许多应用服务器都使用Tomcat作为它们的Servlet和JSPAPI容器。因为Tomcat允许开发人员只需添加一行致谢就可以将Tomcat嵌入到他们的应用程序中。不幸的是,许多商业应用服务器并不遵循这条规则。对于开发人员来说,如果他们希望使用Servlet、JSP、JNDI和JMX技术生成JavaWeb应用程序,那么选择Tomcat是一个很好的解决方案;但是为了找到对其他J2EEAPI的支持,那么寻找一个应用服务器或者使用Tomcat作为辅助应用服务器将是一个很好的解决方案;第三种方式是寻找独立的J2EEAPI实现,然后与Tomcat结合。这种方法是最有效的,尽管集成会带来相关问题。.2.Tomcat和Web服务器Tomcat提供了一个支持Servlet和JSP运行的容器。Servlet和JSP可以根据实时需要生成动态的网页内容。对于Web服务器,Apache只支持静态网页,对动态网页的支持将无能为力;Tomcat既可以为动态网页提供服务,也可以为静态网页提供支持。虽然它不如通常的网络服务器快,功能也不如网络服务器丰富,但Tomcat正在逐渐扩展以支持静态内容。大多数Web服务器都是用C等底层语言编写的,利用了相应平台的特点,因此纯Java编写的Tomcat的执行速度无法与之相比。一般而言,大型站点将Tomcat与Apache结合使用。Apache负责接受来自客户端的所有HTTP请求,然后将Servlets和JSP请求转发给Tomcat进行处理。Tomcat完成处理后,将response传回给Apache,***Apache将response返回给客户端。并且为了提高性能,可以将一个apache连接到多个tomcat,实现负载均衡。让我们仔细看看下面的内容:Web服务器(WebServer)Web服务器可以解析(处理)HTTP协议。当网络服务器收到一个HTTP请求(request)时,它会返回一个HTTP响应(response),比如发回一个HTML页面。Web服务器为了处理一个请求(request),可以响应(response)一个静态页面或图片,执行一个页面跳转(redirect),或者委托(delegate)生成一个动态响应(dynamicresponse)给一些其他程序如CGIScript、JSP(JavaServerPages)脚本、servlet、ASP(ActiveServerPages)脚本、服务器端(server-side)JavaScript,或其他一些服务器端(server-side)技术。不管它们(译者注:Script)的目的是什么,这些服务器端(server-side)程序通常会生成一个HTML响应(response)让浏览器浏览。请注意,Web服务器的委托模型非常简单。当一个请求(request)被发送到web服务器时,它只是将请求(request)传递给一个能够很好地处理请求(request)的程序(译者注:服务器端脚本)。Web服务器只是提供了一个可以执行服务器端(server-side)程序并返回(由程序生成)响应(response)的环境,而没有超出功能范围。服务器端程序通常具有事务处理、数据库连接和消息传递等功能。Web服务器虽然不支持事务处理或数据库连接池,但可以配置(employ)各种策略(strategies)来实现容错(faulttolerance)和可扩展性(scalability),例如负载平衡(loadbalancing)、缓冲(缓存)。集群功能经常被误认为是应用服务器独有的功能。应用服务器(TheApplicationServer)根据我们的定义,作为应用服务器,它通过包括HTTP在内的各种协议将业务逻辑暴露给客户端应用程序。Web服务器主要处理将HTML发送到浏览器以供查看,而应用程序服务器提供对业务逻辑的访问以供客户端应用程序使用。应用程序使用此业务逻辑,就像您在对象上调用方法(或过程语言中的函数)一样。应用服务器(包括具有图形用户界面(GUI)的客户端)的客户端可以运行在PC、Web服务器甚至其他应用服务器上。在应用服务器和它的客户端之间来回传输的信息并不局限于简单的显示标记。相反,此信息是程序逻辑。正是因为这个逻辑采用的是数据和方法调用(调用)的形式,而不是静态的HTML,所以客户端可以随心所欲地使用这个暴露的业务逻辑。在大多数情况下,应用服务器通过组件(component)的应用程序接口(API)将业务逻辑(向客户端应用程序)暴露出来,例如一个基于J2EE(Java2Platform,EnterpriseEdition)的应用程序的EJB(EnterpriseJavaBean)程序服务器的组件模型。此外,应用服务器可以管理自己的资源,例如安全、事务处理、资源池和消息传递等守门职责。与Web服务器一样,应用程序服务器配置有各种可伸缩性和容错技术。注意事项现在,XMLWeb服务已经模糊了应用程序服务器和Web服务器之间的界限。通过向服务器发送一个XML负载(payload),Web服务器现在可以像以前的应用服务器一样处理数据和响应(response)。此外,现在大多数应用服务器还包括Web服务器,也就是说Web服务器可以看作是应用服务器的一个子集。虽然应用服务器包含了Web服务器的功能,但是开发者很少将应用服务器部署到这种能力(译者注:这种能力指的是既有应用服务器的功能,也有Web服务器的功能)。相反,如果需要,他们通常会独立配置Web服务器,并与应用程序服务器一起配置。这种功能分离有助于提高性能(简单的网络请求(request)不会影响应用服务器),单独的配置(专用网络服务器,集群(clustering)等)都有选择的余地。