服务器是现实中常被讨论的设备之一,因为服务器与现代生活息息相关。按照服务器的用途,服务器可细分为诸多类别。为增进大家对服务器的了解程度,本文将对三种服务器予以介绍,它们分别是:Web服务器、应用程序服务器以及HTTP服务器。如果你正在了解服务器相关知识,不妨继续阅读本文哦。

一、概述

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实现负载平衡。

下面让我们来细细道来:

1. 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)经常被误认为仅仅是应用程序服务器专有的特征。

2. 应用程序服务器(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)技术。

3. 警告(Caveats)

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

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

以上便是此次小编带来的“服务器”相关内容,通过本文,希望大家对Web服务器、HTTP服务器以及应用程序服务器具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

无法连接到已配置的开发web服务器_你知道多少种服务器?这三种服务器你都认识吗?...相关推荐

  1. 无法连接到已配置的开发web服务器_Power BI 报表服务器极简安装指南

    ​本文是PowerBI星球嘉宾天行老师的力作,详细介绍了报表服务器的用处以及安装步骤,看完本文,你也可以轻松用上报表服务器,更方便的分享你的PowerBI报告. Power BI 报表服务器极简安装指 ...

  2. vs2012无法启动已配置的开发Web服务器

    ] 有些教程说要开,我就没懂了 转载于:https://www.cnblogs.com/0to9/p/5040829.html

  3. 在web页面上快速生成二维码的三种实用方法

    转载自:在web页面上快速生成二维码的三种实用方法 二维码是桌面和移动端快速分享的高效手段之一,这里介绍两个不错的快速开发二维码的方法,和大家分享一下~~ 方法1:使用极客标签提供的二维码快速生成服务 ...

  4. asp.net python 开发web 效率_【Django】Python web开发:几个模板系统的性能对比(转)...

    http://blog.chedushi.com/archives/910 结论: 点评一下吧.django就是个渣,不多废话了.webpy的代码很简洁,可惜速度太慢了.bottle看起来快一点,不过 ...

  5. asp 开发app_ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式

    由于ASP.NET Core应用是一个同时处理多个请求的服务器应用,所以在处理某个请求过程中抛出的异常并不会导致整个应用的终止.出于安全方面的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得 ...

  6. PHP开发日志 ━━ php、javascript生成二维码的三种方法

    最简单最实例的goolge开源方法 推荐手册:php完全自学手册 1.google开放api 代码如下: $urlToEncode="http://www.helloweba.com&quo ...

  7. java c app开发 比较_简谈企业最常用的三种安卓app开发语言!

    Android是一个基于Linux的免费和开源移动操作系统,用户基数很大,很多企业在进行app开发的时候: 都会选择开发安卓版本的app,下面就给大家简单介绍一下,企业最常用到的安卓app开发语言有哪 ...

  8. VSCode通过SSH远程连接虚拟机并配置SpringBoot开发环境

    1.VSCode如何通过SSH远程连接虚拟机 VSCode通过下载Remote SSH插件进行SSH远程连接 2.VSCode下载好Remote SSH插件之后,进行配置,类似gitlab或者gith ...

  9. 【SSM面向CRUD编程专栏 2】Spring相关API 数据源(连接池)的配置 注解开发 整合junit

最新文章

  1. # 2017-2018-1 20155224 《信息安全系统设计基础》第九周学习总结
  2. UVA 10341 二分搜索
  3. ubuntu 14.04安装chrome浏览器
  4. java 显示天气的小程序_超级简单的微信小程序获取今日天气预报代码 小程序获取七日天气...
  5. Oracle 中 call 和 exec的区别
  6. WebSocket服务器上的oTransactionID_SiteDetailMap的qrcode是何时生成的
  7. 【IT笔试面试题整理】删除无序链表中重复的节点
  8. 金融数据公司发展趋势小探
  9. 设计模式(5)——单例模式
  10. 【OpenCV学习笔记】【函数学习】十五(批量读入图片)
  11. Unity:一键移除所有预制体上的Missing脚本
  12. [C#][Quartz]帮助类
  13. 土方计算软件FastTFT V15.1.0更新说明(支持AutoCAD2020平台)
  14. linux进程关系图谱
  15. JavaScript生成PDF
  16. ligerui demo php,ligerui grid行编辑示例
  17. photoshop cs5 中 复制图层的快捷键是那个
  18. 机器视觉镜头的计算方法
  19. focus和onfocus区别
  20. IBM沃森会成为第一个被抛弃的AI技术吗?

热门文章

  1. 008_效果和动画的Callback函数
  2. 小程序input框letter-spacing失效,处理方法
  3. matlab的多项式拟合,函数求导,画函数曲线
  4. 三维坐标 偏转_什么是激光三维扫描?
  5. 前端判断session对象是否为空_谈谈JavaScript这个语言与前端是否需要面向对象?...
  6. loader调用过程
  7. python查询字典里的多个key_Python:如何快速找到多个字典中的公共键(key)
  8. NIO详解(九):Selector详解
  9. 数据结构和算法解析:排序问题简易总结
  10. 上如何刻字_校园石阶上被人刻了1700多个字?!这次网友却说好