Web服务器、应用程序服务器、web应用服务器、反向代理服务器

参考链接:https://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575.html

首先我们来了解什么是服务器(server)

一般来说,server 有两重意思

  1. 有时候 server 表示硬件,也就是一台机器。它还有另一个名字:「主机」。
  2. 更多时候,server 表示软件程序,这种程序主要用来对外提供某些服务,比如邮件服务、FTP 服务、数据库服务、网页服务等。

作为开发者,我们说 server 的时候,一般指的后者,也就是一个 24 小时运行的软件程序。一台主机上面可以运行多个这样的程序。

 什么是应用程序服务器(server)?

应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。 

就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)。

 什么是web 服务器(server)?

顾名思义,Web Server 就是提供 Web 服务的 Server。web server的主要功能是:存储,处理和传递网页给客户,

它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有支持除HTTP之外的协议的web服务器,没有考证过)

比如我们访问 http:// ,其实就是在使用百度的 Server 提供的服务。

一般来说, Web Server 对外提供的是 HTTP 服务(也可以是其他服务),这就是为什么我们的网址都以「http://」开头。

什么是web应用服务器(server)?

在java web开发时,最早接触的web服务器是tomcat,其实tomcat是web应用服务器,任何的 web项目资源文件如果没有部署在tomcat应用服务器中(资源文件没有放在tomcat安装目录中),都将不能访问得到。

什么是反向代理服务器(server)?

代理服务器是指:根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端。反向代理只是代理服务器的一种,与前向代理不同。前向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端作为代理使用,而不是客户端。客户端通过前向代理可以访问很多不同的资源,而反向代理是很多客户端都通过它访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,以为所有资源都来自于这个反向代理服务器。

互联网中的请求发送给反向代理,反向代理把请求转发到内网中的服务器。

反向代理的主要作用为:

  • 加密和SSL加速
  • 负载均衡
  • 缓存静态内容
  • 压缩
  • 减速上传
  • 安全防火墙
  • 外网发布
  • 突破互联网封锁
  • 解决跨域问题

应用程序服务器与web服务器的区别?

通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,而应用程序服务器提供的是客户端应用程序可以调用的方法。

确切一点,你可以说:Web服务器专门处理HTTP协议的请求,而应用程序服务器是通过各种协议,包括HTTP来为应用程序提供商业逻辑,应用程序使用此商业逻辑就象你调用对象的一个方法 (或过程语言中的一个函数)一样。在应用程序服务器与其客户端之间来回穿梭的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑,正是由于这种逻辑取得了数据和方法调用的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。

以Java EE为例,Web服务器主要是处理静态页面处理和作为 Servlet容器,解释和执行servlet/JSP,而应用程序服务器是运行业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、数据库连接等功能,所以在企业级应用中,应用程序服务器提供的功能比Web服务器强大的多。

一个例子 

  例如,设想一个在线商店(网站)提供实时定价和有效性信息。这个站点很可能会提供一个表单让你来选择产品。当你提交查询后,网站会进行查找并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务 的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器和web服务器的区别。

情景1:不带应用程序服务器的Web服务器 

  在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求,然后发送给服务器端可以处理请求的程序。此程序从数据库或文本文件(是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端程序把结果信息表示成HTML形式,最后Web服务器把会它发送到你的Web浏览器。

简而言之,Web服务器只是简单的通过响应HTML页面来处理HTTP请求。

情景2:带应用程序服务器的Web服务器 

  情景2和情景1相同的是Web服务器还是把响应的产生委托给脚本(译者注:服务器端程序)。然而,你可以把查找定价的商业逻辑放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务,而不是已经知道如何查找数据,然后表示为一个响应。

  在此情景中,应用程序服务器提供了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务时,此服务只是简单的查找并返回结果给客户端。

       通过从响应产生HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务来作为一个店员给客户结帐;相反,在情景1中的定价查找服务是不可重用的,因为信息内嵌在 HTML页中了。

  总而言之,在情景1和情景2的模型中,Web服务器通过回应HTML页面来处理HTTP请求,而应用程序服务器则是通过处理定价和有效性请求来提供应用程序逻辑的。

警告

  现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷给服务器,Web服务器现在可以处理数据和响应的能力与以前的应用程序服务器同样多了。

  另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署成这种功能(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求就不会影响应用程序服务器了),分开配置,而且给最佳产品的选取留有余地。

有人说到“web服务器”时,你通常要把它认为是以HTTP为核心、web UI为向导的应用。当有人说到“应用服务器”时,你可能想到“高负载、企业级特性、事务和队列、多通道通信(HTTP和更多的协议)”。

web应用服务器与web服务器的区别?

**web服务器只能解析静态页面,即html页面,它请求的路径是固定的。

而web应用服务器可以解析动态的jsp页面,即它请求的路径是动态生成的,负责的是请求的逻辑处理。**

所以一般在web项目开发 中,apache+tomcat+nginx联合使用,访问静态资源时用apache解析,访问动态资源时用tomcat解析,nginx作为反向代理服务器,同时支持高并发。

 

IIS、Apache、Tomcat、Weblogic、WebSphere?

IIS:微软早期的IIS,就是一个纯粹的Web服务器。后来,它嵌入了ASP引擎,可以解释VBScript和JScript服务器端代码了,这时,它就可以兼作应用服务器。当然,它与J2EE应用程序服务器根本无法相比。

确切地说,它可以称作为带有一点应用服务器功能的Web服务器。

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叫做轻量级应用服务器或带有应用服务器功能的Web服务器。

综上

 Apache属于纯粹的Web服务器,IIS、Tomcat因为具有了解释执行服务器端代码的能力,属于web应用服务器,Weblogic、WebSphere属于绝对的应用程序服务器。 

对于处于中间位置的Tomcat,它可以配合纯Web服务器Apache一起使用,也可以作为应用程序服务器的辅助与应用程序服务器一起部署。

一、Tomcat与应用程序服务器

   到目前为止,Tomcat一直被认为是Servlet/JSP API的执行器,也就所谓的Servlet容器。然而,Tomcat并不仅仅如此,它还提供了JNDI和JMX API的实现机制。尽管如此,Tomcat仍然还不能算是应用程序服务器,因为它不提供大多数J2EE API的支持。

  很有意思的是,目前许多的应用程序服务器通常把Tomcat作为它们Servlet和JSP API的容器。由于Tomcat允许开发者只需通过加入一行致谢,就可以把Tomcat嵌入到它们的应用中。遗憾的是,许多商业应用程序服务器并没有遵守此规则。

  对于开发者来说,如果是为了寻找利用Servlet、JSP、JNDI和JMX技术来生成Java Web应用的话,选择Tomcat是一个优秀的解决方案;但是为了寻找支持其他的J2EE API,那么寻找一个应用程序服务器或者把Tomcat作为应用程序服务器的辅助,将是一个不错的解决方案;第三种方式是找到独立的J2EE API实现,然后把它们跟Tomcat结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。。

二、Tomcat与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将响应返回给客户端。

而且为了提高性能,可以一台apache连接多台tomcat实现负载平衡。 

 (若有错误,烦请指正谢谢!)

转载于:https://www.cnblogs.com/linxiu-0925/p/10154005.html

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页