各种容器Web服务器应⽤服务器
总结 :
Web服务器 -- 只能解析静态资源 .
应⽤服务器 -- 如果不严格区分,应⽤服务器包含WEB服务器,因为WEB服务器是WEB服务应⽤程序实现的. 解析动态资源 , 也可以解析静态资源 , 但是静态资源解析能⼒没有web服务器好.
tomcat 不仅是⼀个Servlet容器 , 它还提供了JNDI和JMX API的实现机制。尽管如此,Tomcat仍然还不能算是应⽤服务器,因为它不提供⼤多数J2EE API的⽀持. tomcat 早起是和Apache⼀起的 , 后来独⽴了 .
对于开发者来说,如果是为了寻利⽤Servlet、JSP、JNDI和JMX技术来⽣成Java Web应⽤的话,选择Tomcat是⼀个优秀的解决⽅案;但是为了寻⽀持其他的J2EE API,那么寻⼀个应⽤服务器或者把Tomcat作为应⽤服务器的辅助,将是⼀个不错的解决⽅案;第三种⽅式是到独⽴的J2EE API实现,然后把它们跟Tomcat结合起来使⽤。虽然整合会带来相关的问题,但是这种⽅式是最为有效的。
Apache 是纯粹的Web服务器 , 感觉其他很多服务器都是处于中间状态的......
容器与服务器
容器是位于应⽤程序/组件和服务器平台之间的接⼝集合,使得应⽤程序/组件可以⽅便部署到服务器上运⾏。
各种容器的区别/联系
容器就是装东西的 ,技术上来说就是可以部署应⽤程序 ,并在上⾯运⾏的环境. 位于应⽤程序(你的项⽬)和服务器平台之间的接⼝集合 ,屏蔽了平台的复杂性
⽐如tomcat ,是⼀个servlet容器.
servlet容器: 实现了servlet技术规范的部署环境 , 可以部署运⾏servlet程序
java web容器: 实现了JavaEE Web应⽤技术规范的部署环境 -- Servlet、JSP(JavaServer Pages)、Java WebSocket等
Java EE 容器: 实现了Java EE技术规范的部署环境。-- 包含了JavaEE Web应⽤技术规范 , EJB等许多技术规范完整的Java WEB容器包含Servlet容器
完整的Java EE容器包含Java WEB容器(Servlet容器)、EJB容器等。
各种服务器的区别/联系
简单来说,服务器是提供某些服务的设备。
web服务器 : Apache、Nginx、IIS
只能解析静态资源 .
Web服务器的基本功能就是提供Web信息浏览服务。它只需⽀持HTTP协议、HTML⽂档格式及URL。与客户端的⽹络浏览器配合。因为Web服务器主要⽀持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有⽀持除HTTP之外的协议的web服务器,作者没有考证过),说的是⼀回事。
应⽤服务器
解析动态资源 , 也可以解析静态资源 , 但是静态资源解析能⼒没有web服务器好.如果不严格区分,应⽤服务器包含WEB服务器,因为WEB服务器是WEB服务应⽤程序实现的.
应⽤程序服务器(简称应⽤服务器),我们先看⼀下微软对它的定义:"我们把应⽤程序服务器定义为“作为服务器执⾏共享业务应⽤程序的底层的系统软件”。就像⽂件服务器为很多⽤户提供⽂件⼀样,应⽤程序服务器让多个⽤户可以同时使⽤应⽤程序(通常是客户创建的应⽤程序)"
通俗的讲,Web服务器传送(serves)页⾯使浏览器可以浏览,然⽽应⽤程序服务器提供的是客户端应⽤程序可以调⽤(call)的⽅法(methods)。确切⼀点,你可以说:Web服务器专门处理HTTP请求(request),但是应⽤程序服务器是通过很多协议来为应⽤程序提供(serves)商业逻辑 (business logic)。
以Java EE为例,Web服务器主要是处理静态页⾯处理和作为 Servlet容器,解释和执⾏servlet/JSP,⽽应⽤服务器是运⾏业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API⽅⾯的,还包含事务处理、数据库连接等功能,所以在企业级应⽤中,应⽤服务器提供的功能⽐WEB服务器强⼤的多。
WEB应⽤服务器
结合应⽤服务器和WEB服务器,可以说,它是带应⽤服务器的Web服务器,接收HTTP请求后,既能返回页⾯等静态内容,⼜能处理业务逻辑返回数据。
Java EE服务器
实现Java EE技术规范,并提供标准Java EE服务的应⽤程序服务器。
Java Web应⽤服务器 : Tomcat、Jetty、WebLogic、Websphere、JBoss
拿最常⽤的Tomcat来说,Tomcat是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket(Java EE)技术的开源实现。
因为可以通过HTTP提供HTML页⾯等静态内容的请求访问,所以是⼀个WEB服务器;
因为实现了Servlet规范,所以也是⼀个Servlet容器,可以运⾏Servlet程序;
因为可以通过Servlet容器,调⽤Servlet处理动态请求,所以也是⼀个应⽤服务器;
所以,可以说Tomcat是Java(EE) WEB应⽤服务器。
Nginx + Tomcat的WEB应⽤服务器(集)
⼀般在实际应⽤中,先是通过Nginx反向代理服务器接收请求,匹配分离动态/静态请求(动静分离),如果是静态请求,则转发到另外的Nginx WEB服务器上,返回静态内容;如果是动态请求,则转发到后⾯的Tomcat应⽤服务器,处理动态请求的业务逻辑。
Web服务器 / 应⽤服务器
Web服务器的基本功能就是提供Web信息浏览服务。它只需⽀持HTTP协议、HTML⽂档格式及URL。与客户端的⽹络浏览器配合。因为Web服务器主要⽀持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的(有没有⽀持除HTTP之外的协议的web服务器,作者没有考证过),说的是⼀回事。
应⽤程序服务器(简称应⽤服务器),我们先看⼀下微软对它的定义:"我们把应⽤程序服务器定义为“作为服务器执⾏共享业务应⽤程序的底层的系统软件”。就像⽂件服务器为很多⽤户提供⽂件⼀样,应⽤程序服务器让多个⽤户可以同时使⽤应⽤程序(通常是客户创建的应⽤程序)"
通俗的讲,Web服务器传送(serves)页⾯使浏览器可以浏览,然⽽应⽤程序服务器提供的是客户端应⽤程序可以调⽤(call)的⽅法(methods)。确切⼀点,你可以说:Web服务器专门处理HTTP请求(request),但是应⽤程序服务器是通过很多协议来为应⽤程序提供(serves)商业逻
辑 (business logic)。
以Java EE为例,Web服务器主要是处理静态页⾯处理和作为 Servlet容器,解释和执⾏servlet/JSP,⽽应⽤服务器是运⾏业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API⽅⾯的,还包含事务处理、数据库连接等功能,所以在企业级应⽤中,应⽤服务器提供的功能⽐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⼀起使⽤,也可以作为应⽤服务器的辅助与应⽤服务器⼀起部署.
还没看的部分 :
⼀、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实现负载平衡。
关于WEB服务器、应⽤程序服务器的更详细区别可以参考下⾯这篇⽂章:
通俗的讲,Web服务器传送(serves)页⾯使浏览器可以浏览,然⽽应⽤程序服务器提供的是客户端应⽤程序可以调⽤(call)的⽅法(methods)。确切⼀点,你可以说:Web服务器专门处理HTTP请求(request),但是应⽤程序服务器是通过很多协议来为应⽤程序提供(serves)商业逻辑 (business logic)。
下⾯让我们来细细道来:
Web服务器(Web Server)
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到⼀个HTTP请求(request),会返回⼀个HTTP响
应 (response),例如送回⼀个HTML页⾯。为了处理⼀个请求(request),Web服务器可以响应(response)⼀个静态页⾯或图⽚,进⾏页⾯跳转(redirect),或者把动态响应(dynamic response)的产⽣委托(delegate)给⼀些其它的程序例如CGI脚
本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者⼀些其它的服务器端(server-side)技术。⽆论它们(译者注:脚本)的⽬的如何,这些服务器端(server-side)的程序通常产⽣⼀个HTML的响应(response)来让浏览器可以浏览。
要知道,Web服务器的代理模型(delegation model)⾮常简单。当⼀个请求(request)被送到Web服务器⾥来时,它只单纯的把请求(request)传递给可以很好的处理请求 (request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供⼀个可以执⾏服务器端(server-side)程序和返回(程序所产⽣的)响应(response)的环境,⽽不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
虽然Web服务器不⽀持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集
特征(clustering—features)经常被误认为仅仅是应⽤程序服务器专有的特征。
应⽤程序服务器(The Application Server)
根据我们的定义,作为应⽤程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应⽤程序。
Web服务器主要是处理向浏览器发送HTML以供浏览,⽽应⽤程序服务器提供访问商业逻辑的途径以供客户端应⽤程序使⽤。应⽤程序使⽤此商业逻辑就象你调⽤对象的⼀个⽅法 (或过程语⾔中的⼀个函数)⼀样。
应⽤程序服务器的客户端(包含有图形⽤户界⾯(GUI)的)可能会运⾏在⼀台PC、⼀个Web服务器或者甚⾄是其它的应⽤程序服务器上。在应⽤程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显⽰标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和⽅法调⽤(calls)的形式⽽不是静态HTML,所以客户端才可以随⼼所欲的使⽤这种被暴露的商业逻辑。
在⼤多数情形下,应⽤程序服务器是通过组件 (component) 的应⽤程序接⼝(API)把商业逻辑暴露(expose)(给客户端应⽤程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应⽤程序服务器
的EJB(Enterprise JavaBean)组件模型。此外,应⽤程序服务器可以管理⾃⼰的资源,例如看⼤门的⼯作(gate-keeping duties)包括安全(security),事务处理
(transaction processing),资源池(resource pooling),和消息(messaging)。就象Web服务器⼀样,应⽤程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。
⼀个例⼦
例如,设想⼀个在线商店(⽹站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供⼀个表单(form)让你来选择产品。当你提交查询 (query)后,⽹站会进⾏查(lookup)并把结果内嵌在HTML页⾯中返回。⽹站可以有很多种⽅式来实现这种功能。我要介绍⼀个不使⽤应⽤程序服务器的情景和⼀个使⽤应⽤程序服务器的情景。观察⼀下这两中情景的不同会有助于你了解应⽤程序服务器的功能。
情景1:不带应⽤程序服务器的Web服务器
在此种情景下,⼀个Web服务器独⽴提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端
(server- side)可以处理请求(request)的程序。此程序从数据库或⽂本⽂件(flat file,译者注:flat file是指
没有特殊格式的⾮⼆进制的⽂件,如properties和XML⽂件等)中查定价信息。⼀旦到,服务器端(server-side)程序把结果信息表⽰成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。
简⽽⾔之,Web服务器只是简单的通过响应(response)HTML页⾯来处理HTTP请求(request)。
情景2:带应⽤程序服务器的Web服务器
情景2和情景1相同的是Web服务器还是把响应(response)的产⽣委托(delegates)给脚本(译者注:服务器端 (server-side)程
序)。然⽽,你可以把查定价的商业逻辑(business logic)放到应⽤程序服务器上。由于这种变化,此脚本只是简单的调⽤应⽤程序服务器的查服务(lookup service),⽽不是已经知道如何查数据然后表⽰为(formulate)⼀个响应(response)。这时当该脚本程序产⽣HTML响应(response)时就可以使⽤该服务的返回结果了。
在此情景中,应⽤程序服务器提供(serves)了⽤于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显⽰和客户端如何使⽤此信息的细节,相反客户端和应⽤程序服务器只是来回传送数据。当有客户端调⽤应⽤程序服务器的查服务(lookup service)时,此服务只是简单的查并返回结果给客户端。
通过从响应产⽣(response-generating)HTML的代码中分离出来,在应⽤程序之中该定价(查)逻辑的可重⽤性更强了。其他的客户端,例如收款机,也可以调⽤同样的服务(service)来作为⼀个店员给客户结帐。相反,在情景1中的定价查服务是不可重⽤的因为信息内嵌在 HTML页中了。
总⽽⾔之,在情景2的模型中,在Web服务器通过回应HTML页⾯来处理HTTP请求(request),⽽应⽤程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应⽤程序逻辑的。
警告(Caveats)
nginx和apache区别 现在,XML Web Services已经使应⽤程序服务器和Web服务器的界线混淆了。通过传送⼀个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能⼒与以前的应⽤程序服务器同样多了。
另外,现在⼤多数应⽤程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应⽤程序服务器的⼀个⼦集(subset)。虽然应⽤程序服务器包含了Web服务器的功能,但是开发者很少把应⽤程序服务器部署(deploy)成这种功能(capacity) (译者注:这种功能是指既有应⽤程序服务器的功能⼜有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独⽴配置,和应⽤程序服务器⼀前⼀后。这种功能的分离有助于提⾼性能(简单的Web请求(request)就不会影响应⽤程序服务器了),分开配置(专门的Web服务器,集(clustering)等等),⽽且给最佳产品的选取留有余地
Servlet 容器
Servlet容器也仅仅不过是⼀个Java程序。Servlet容器就是⽤来装Servlet的。
Servlet容器的基本思想是在服务器端使⽤Java来动态⽣成⽹页。因此,Servlet容器是Web服务器和servlet进⾏交互的必不可少的组件。
使⽤servlet,就要允许JVM为处理每个请求分配独⽴的Java线程,这也是Servlet容器主要的优势之⼀。每⼀个servlet都是⼀个拥有能响应HTTP请求的特定元素的Java类。Servlet容器的主要作⽤是将请求转发给相应的servlet进⾏处理,并在JVM处理完请求后,将动态⽣成的结果返回⾄正确的地址。在⼤多数情况下,servlet容器运⾏在独⽴的JVM中,但如果容器需要多个JVM,也有相应的解决⽅案。
Apache 和 Tomcat (了解)
经常在⽤apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在⽤tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在⽹上查询了⼀些这⽅⾯的资料,总结了⼀下:⼀
apache⽀持静态页,tomcat⽀持动态的,⽐如servlet等,
⼀般使⽤apache+tomcat的话,apache只是作为⼀个转发,对jsp的处理是由tomcat来处理的。
apache可以⽀持php\cgi\perl,但是要使⽤java的话,你需要tomcat在apache后台⽀撑,将java请求由apache转发给tomcat处理。
apache是web服务器,Tomcat是应⽤(java)服务器,它只是⼀个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独⽴于apache运⾏。
这两个有以下⼏点可以⽐较的: 1、两者都是apache组织开发的 2、两者都有HTTP服务的功能 3、两者都是免费的
不同点:
Apache是专门⽤了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的⼀个JSP服务器
⼆:
APACHE是⼀个web服务器环境程序启⽤他可以作为web服务器使⽤不过只⽀持静态⽹页如(asp,php,cgi,jsp)等动态⽹页的就不⾏
如果要在APACHE环境下运⾏jsp 的话就需要⼀个解释器来执⾏jsp⽹页⽽这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运⾏jsp的web服务器平台就需要APACHE+TOMCAT+JDK
整合的好处是:
如果客户端请求的是静态页⾯,则只需要Apache服务器响应请求如果客户端请求动态页⾯,则是Tomcat服务器响应请求
因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销
三:
apache:侧重于http server
tomcat:侧重于servlet引擎,如果以standalone⽅式运⾏,功能上与apache等效,⽀持JSP,但对静态⽹页不太理想
apache是web服务器,tomcat是应⽤(java)服务器,它只是⼀个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独⽴于apache运⾏。换句话说,apache是⼀辆卡车,上⾯可以装⼀些东西如html等。但是不能装⽔,要装⽔必须要有容器(桶),⽽这个桶也可以不放在卡车上。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论