Web服务器、HTTP服务器及应用服务器有何区别?Apache、Nginx、IIS、Tomcat、JBoss、Weblogic、WebSphere 都各属于哪种服务器?Web服务器是指驻留在Internet上的计算机程序,它的基本功能是提供Web信息浏览服务。因为Web服务器主要支持的协议就是HTTP协议,所以通常情况下WEB服务器和HTTP服务器说的是同一回事。应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序,它提供访问业务逻辑的途径以供客户端应用程序使用。
通俗的讲,Web服务器专门处理HTTP请求,应用服务器通过各种协议来为客户端提供业务逻辑。以J2EE为例,Web服务器主要处理静态页面以及作为Servlet容器,解释和执行servlet/JSP,而应用服务器主要运行业务逻辑,如EJB、 JNDI和JMX等J2EE API,还包含事物管理、数据库连接等功能。因此,在企业级应用中,应用服务器提供的功能比Web服务器强大得多。以这样的定义,Apache、Nginx、IIS、Tomcat都属于Web服务器,JBoss、Weblogic、WebSphere都属于应用服务器。
综上:Apache和Nginx是纯粹的Web服务器,而IIS和Tomcat因为具有了解释和执行服务器端代码的能力,可以称作为轻量级应用服务器。JBoss、Weblogic和WebSphere因为能提供强大的J2EE API功能,毫无疑问是绝对的应用服务器。对于处于中间位置的Tomcat,它可以配合Web服务器Apache/Nginx一起使用,也可以作为应用服务器的辅助与应用服务器一起使用。
Tomcat与Web服务器
Tomcat是一个支持Servlet和JSP技术的容器。Web服务器Apache、Nginx仅仅支持静态网页,对于支持动态网页就会显得无能为力,而Tomcat(Servlet和JSP能根据实时需要产生动态网页)既能为动态网页服务,又能为静态网页提供支持。尽管Tomcat没有通常的Web服务器快(通常的Web服务器都是用底层语言(如C/C++)编写,而Tomcat用纯Java编写)、功能也不如通常的Web服务器丰富,但是其正在不断的改进和完善。一般来说,大型网站都是将Tomcat与Apache/Nginx结合,Apache/Nginx负责接受来自客户端的HTTP请求,然后将HTTP请求转发给Tomcat来处理。为了提高性能,可以将一台Apache/Nginx连接多台tomcat实现负载均衡。
Tomcat与应用服务器目前,Tomcat一直被认为是Servlet容器。然而,Tomcat并不仅仅如此,它还提供了JNDI和JMX的实现机制。尽管如此,Tomcat仍然还不能算是应用服务器,因为它不提供J2EE API的其他大多数支持。目前许多的应用服务器通常把Tomcat作为它们Servlet容器。对于开发者来说,如果是为了寻找Servlet、JSP、JNDI和JMX技术来生成Java Web应用的话,选择Tomcat是一个优秀的解决方案;但是为了寻找其他的J2EE API的支持,那么寻找一个应用服务器或者把Tomcat作为应用服务器的辅助是一个不错的解决方案;第三种方式是找到独立的J2EE API实现,然后把它们跟Tomcat结合起来使用,虽然整合会带来相关的问题,但是这种方式是最为有效的。