精华内容
下载资源
问答
  • web 服务
    千次阅读
    2021-07-30 02:43:35

    web服务器的作用[编辑]

    概述

    Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,它的主要作用是向浏览器等Web客户端提供文档,放置网站文件让网络用户浏览以及提供可以下载的数据文件。

    一、web服务器简介

    WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。

    二、web服务器的特点

    1、Web是图形化的和易于导航的

    Web非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。同时,Web是非常易于导航的,只需要从一个连接跳到另一个连接,就可以在各页各站点之间进行浏览了。

    2、Web与平台无关

    无论你的系统平台是什么,你都可以通过Internet访问WWW。浏览WWW对你的系统平台没有什么限制。无论从Windows平台、UNIX平台、Macintosh还是别的什么平台我们都可以访问WWW。对WWW的访问是通过一种叫做浏览器(browser)的软件实现的。如Netscape 的Navigator、NCSA的Mosaic、Microsoft的Explorer等。

    3、Web是分布式的

    大量的图形、音频和视频信息会占用相当大的磁盘空间,我们甚至无法预知信息的多少。对于Web没有必要把所有信息都放在一起,信息可以放在不同的站点上。只需要在浏览器中指明这个站点就可以了。使在物理上并不一定在一个站点的信息在逻辑上一体化,从用户来看这些信息是一体的。

    三、web协议

    1、应用层使用HTTP协议。

    2、HTML(标准通用标记语言下的一个应用)文档格式。

    3、浏览器统一资源定位器(URL)。

    4、为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

    四、web服务器的工作步骤

    第一步:Web浏览器向一个特定的服务器发出Web页面请求。

    第二步:Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送Web浏览器。

    第三步:Web浏览器接收到所请求的Web页面,并将它显示出来。

    五、web服务器的主要作用

    1.向浏览器等Web客户端提供文档

    2.放置网站文件,让网络用户浏览

    3.放置数据文件,提供下载

    参考资料: 百度百科

    扩展阅读: 怎样搭建web服务器

    合作编辑: 李优  李优

    秀友百科词条内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。

    更多相关内容
  • 使用node.js构建一个web服务器(适合自学)

    千次阅读 多人点赞 2021-10-14 14:54:02
    先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

    使用node.js构建一个web服务器

    先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

    WEB服务器

    WEB服务器也称为WWW服务器。WWW(World Wide Web、翻译成中文:万维网或环球信息网)服务器的基本功能就是提供Web信息浏览服务。Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。

    常见的Web服务器软件有Apache、Internet信息服务器(Internet Information Services,IIS)等。

    Apache服务器:Apache服务器是一款开源免费的服务器软件,几乎可以在所以有的计算机平台上运行,由于Apache是开源,因此所有人都可以参与开发新功能,并且不断对Apache服务器进行完善。Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页,它是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上(即支持多平台)。其属于应用服务器。

    IIS服务器:IIS服务器是微软的服务器,可允许IIS在公共Intranet或Internet上发布相信的Web服务器。IIS只能在微软公司的windows操作系统下使用。

    不依赖前面提到的Web服务软件,使用Node.js 也能搭建Web服务器。

    Node.js是什么?

    简单地说,Node.js 是一种开源且跨平台的服务器端 JavaScript 运行时环境,并可以让 JavaScript 做后端。

    在Windows 上安装 Node.js

    要使用Node.js 需要安装之。

    要使用Node.js 需要安装之。先到nodejs官网 Node.js 或到中文网站下载 | Node.js 中文网  下载

    LTS代表“长期支持”,建议大多数用户使用这种版本。我下载的是node-v14.18.1-x64.msi

    双击下载后的安装包 直接安装就可以了,可以自定义路径。安装时会自动配置环境变量(默认自动将安装路径添加path环境变量)。为了照顾新手,下面详细演示安装过程。

    双击下载后的安装包 安装,如下所示

    点击Next按钮,将出现如下界面:

     勾选接受协议可选项,点击 next 按钮 ,将出现如下界面:

     Node.js默认安装目录为 "C:\Program Files\nodejs\" ,可以修改目录(我修改了盘符D),然后点击 next按钮,将出现如下界面:

    你可以点击树形图标节点来选择你需要的安装模式 , 在此保持默认不变,点击下一步 next按钮,将出现如下界面:

    如果要安装工具来编译本机模块,请单击复选框。通常,不需要安装这些工具,因此不必选中此框,点击next按钮,将出现如下界面:

    单击Install(安装)按钮开始安装Node.js,将出现如下界面:

    请稍等一会,将出现如下界面:

     此时,单击Finish(完成)按钮退出设置向导。

    安装完后的目录如下图所示:

    你将看到目录中有npm.cmd,它是什么?

    安装Node.js时将同时自动安装npm,它是node包(模块)管理工具,能解决Node.js代码部署上的很多问题,常见的使用场景有以下几种:

    允许用户从NPM服务器下载别人编写的第三方包到本地使用。

    允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

    允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

    如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,Window 系统使用以下命令即可:

    npm install npm -g

    使用npm包管理工具安装第三方库(npm包),有两种安装方式:全局安装和局部安装:

    从敲的命令行来看,差别只是有没有-g而已,如

    npm install X      # 局部(本地)安装,则是将模块下载到当前命令行所在目录。可能会遇到 “'X' 不是内部或外部命令,也不是可运行的程序”错误。

    npm install X -g   # 全局安装,可以直接在命令行里使用。

    【npm 、cnpm常用命令及.npmrc配置文件详解

    npm 、cnpm常用命令及.npmrc配置文件详解_cnds123的专栏-CSDN博客

    检查是否正确安装了Node.js和npm

    win+r打开运行,输入cmd后进入命令行界面。然后输入node -v和npm -v命令进行node的版本号和npm的版本号的查看。参见下图:

     正确显示了版本号,OK!

    使用node.js构建一个简单的web服务器

    在你项目的目录(这里以D:\测试文件夹为例)中创建一个叫myServer.js 的文件,并写入以下代码:

    var http = require('http');
    http.createServer(function (request, response) {
        // 发送 HTTP 头部
        // HTTP 状态值: 200 : OK
        // 内容类型: text/plain。并用charset=UTF-8解决输出中文乱码
        response.writeHead(200, {'Content-Type': 'text/plain; charset=UTF-8'});
    
        // 下句是发送响应数据
        response.end('Hello World! 这是简单的web服务器测试。\n');
    }).listen(8888);
    // 终端打印如下信息
    console.log('Server running at http://127.0.0.1:8888/');
    

    说明:其中var http = require("http"); 使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http。

    编写了.js的程序,运行的时候就要通过node.js来运行了,在CMD中先切换到编写程序的目录下,然后用node XXX.js即可启动服务,若不先切换路径,则用node 路径\XXX.js启动服务。然后在浏览器中输入相应的监听IP地址加上端口号,这里的端口号使用比较大一点的就可以,因为是回环测试,所以使用127.0.0.1来作为测试IP。

    使用 node D:\测试文件夹\myServer.js,参见下图:

    简单例子运行成功了,这其实是用node.js搭建了一个服务器,然后来监听端口的访问事件,最后做出相应的回应,需要指出的是,当我们关闭CMD或按CTRL+C键之后服务就关闭了。

    现在,打开浏览器访问 http://127.0.0.1:8888/,你会看如下的网页:

    成功了!

    网页与服务器之间的数据交互示例

    现在通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

    这个例子有两部分:服务器代码和网页代码

    服务器代码如下:

    //require表示引包,引包就是引用自己的一个特殊功能
     var http = require("http");
     var url = require("url");
     var server = http.createServer(function(req,res){
        //得到查询部分,由于写了true,那么就是一个对象
         var queryObj = url.parse(req.url,true).query;
         var name = queryObj.name;
         var age = queryObj.age;
         var sex = queryObj.sex;
         res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
         res.end("服务器收到了表单请求" + name + age + sex);
     });
    
     //运行服务器,监听3000端口(端口号可以任改)
     server.listen(3000,"127.0.0.1");
    
     // 终端打印如下信息
     console.log('Server running at http://127.0.0.1:3000/')
    
    

    保存文件名为server2.js ,项目的目录(这里以D:\测试文件夹为例)中

    使用 node D:\测试文件夹\Server2.js运行:

    网页代码如下:

    <!DOCTYPE html>
      <html >
      <head>
          <meta charset="UTF-8">
          <title>与服务端交互网页</title>
      </head>
      <body>
          <form action="http://127.0.0.1:3000/" method="GET">
              姓名:
              <input type="text" name="name" /> <br />
             年龄:
             <input type="text" name="age" /> <br />
             <input type="radio" name="sex" value="男"/> 男
             <input type="radio" name="sex" value="女"/> 女
             <br />
             <input type="submit">
         </form>
     </body>
     </html>
    

    保存文件名为 与服务端交互示例.html ,用浏览器运行:

    特别说明,示例比较简单,特别是后端对数据的处理进行了简化,在实际应用系统中后端一般使用数据库保存数据,这样做主要是让新手有一个直观易懂的感性了解,让初学者有个总体概观,便于快速入门,有了这些,深入学习就有了基础。

    Node.js 新手入门 https://blog.csdn.net/cnds123/article/details/104559497

    Nodejs操作MySql数据库详解 https://blog.csdn.net/cnds123/article/details/106210965

    展开全文
  • 1. Web服务器 2. Web容器 ① Web容器的组成 ② Web容器的作用 3. Servlet容器 ① Servlet容器的作用 ② Servlet容器的工作过程 ③ Servlet ④ Servlet的工作过程 ⑤ Servlet变化过程 4. Spring容器 5. SpringMVC容器...


    一、服务器和容器

    1. Web服务器

    广义的Web服务器(Web Server):提供web服务的软件或主机,即Web服务器软件或装有Web服务器软件的计算机。

    Web服务器可以处理 HTTP 协议,响应针对静态页面或图片的请求(静态请求),进行页面跳转。

    有的Web服务器还能处理动态请求,它会把动态请求委托其它程序(它的扩展、某种语言的解释引擎(php)、Web容器)。

    常见的Web服务器有:Apache、IIS、Tomcat、Jetty、JBoss、webLogic等。

    2. Web容器

    Web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,这个程序就是用来处理从客户端发出的请求的。一个服务器可以有多个容器。

    常见的Web容器有:IIS(asp容器)、Tomcat(servlet容器)、Jboss(EJB容器)。

    其实现在在很多时候,大家对Web服务器和Web容器已经没有了明确的界限。通常把Web服务器和Web容器当成同一个东西在讲。

    文章后面部分所讲的web容器都是以Tomcat容器为例。

    ① Web容器的组成

    Web容器管理Servlet(通过Servlet容器)、监听器(Listener)、过滤器(Filter)等。

    • Servlet:称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,是一个Java类。它负责客户端和服务端的信息交互和处理。

      Servlet不能独立运行(没有main方法),必须存放在Servlet容器中,由Servlet容器去管理Servlet。

    • Filter:Servlet的作用是处理请求,而Filter的作用是拦截请求和放行,在拦截请求后可以修改request和response,实现我们想实现的功能。Filter不能产生一个请求或者响应,只是能对请求或者响应进行拦截。

    • Listener:监听器。它可以监听Application、Session、Request对象,当这些对象发生变化的时候就会调用对应的监听方法。

    ② Web容器的作用

    • 管理和布置Web应用
    • 响应针对静态页面或图片的请求(静态请求
    • 动态请求委托给其他程序(Servlet容器、CGI等等技术)

    ServletFilterListener这些都是在Web容器的掌控范围里。但不在Spring容器和SpringMVC容器的掌控范围里。所以无法在这些类中直接使用Spring注解的方式来自动装配需要的对象,因为Web容器是无法识别Spring注解的。

    Web容器没有Servlet容器,也是可以直接访问静态页面的,比如Apache服务器。但是如果要显示jsp/servlet,就必需要Servlet容器。可是光有Servlet容器也是不够的,因为它需要被解析成html输出,所以仍需要一个Web容器。

    大多数的Web容器都包含Servlet容器,如:Tomcat、Jetty、webLogic。

    3. Servlet容器

    Servlet容器全称server applet,意为服务程序。Servlet容器负责管理Servlet,用与处理动态请求。

    Servlet容器是与Servlet交互的Web服务器的一部分,它可以从Web页面接收请求后再将这些请求重定向到Servlet对象中,然后将动态生成的结果返回到正确的位置中。

    Servlet容器给上级容器(Tomcat)提供doGet()和doPost()等方法。其生命周期实例化、初始化、调用、销毁受控于Tomcat容器。

    利用Servlet容器提供的方法,能轻松的让Servlet与Web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等等。容器知道自己与Web服务器之间的协议,不用担心Web服务器和你自己的Web代码之间的API,只需要考虑如何在Servlet中实现业务逻辑。

    大家通常把Tomcat称作Servlet容器,因为Tomcat就是一个围绕着Servlet工作的一个服务器软件。

    ServletContext与Servlet容器的关系

    ServletContext是Servlet与Servlet容器之间的直接通信的接口。

    Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象。每个web应用有唯一的ServletContext对象。
    同一个Web应用的所有Servlet对象共享一个ServletContext,Servlet对象可以通过它来访问容器中的各种资源。

    为了方便描述,后文直接将ServletContext称作Servlet容器。

    ① Servlet容器的作用

    • 管理Servlet(业务类)

      • 负责加载类、实例化和初始化Servlet
      • 调用Servlet的service方法提供服务
      • 管理Servlet实例的垃圾回收
      • 管理Servlet之间的共同资源(servletContext)
    • 处理动态请求

      • 解析包装请求
      • 调用某个Servlet
      • 将Servlet的执行结果返回给请求端
    • 多线程

      • 自动为它所接收的每个Servlet请求创建一个新的java线程
      • 但是也会出现线程安全问题
    • 实现简便安全

      • 使用xml部署描述文件来配置和修改安全性
    • JSP支持

      • 负责将jsp代码翻译为真正的java代码
    • 管理通信

      • 负责管理servlet与web服务器之间的通信

    ② Servlet容器的工作过程

    • Web服务器接收HTTP请求。
    • Web服务器将请求转发到Servlet容器。
    • 如果对应的Servlet不在容器中,那么将被动态检索并加载到容器的地址空间中。
    • 容器调用init()方法进行初始化(仅在第一次加载 Servlet 时调用一次)。
    • 容器调用Servlet的service()方法来处理HTTP请求,即读取请求中的数据并构建响应。Servlet将暂时保留在容器的地址空间中,可以继续处理其它 HTTP 请求。
    • Servlet容器将结果返回给Web服务器,Web服务器将动态生成的结果返回到浏览器/客户端。

    ③ Servlet

    Servlet是用来处理客户端请求并产生动态网页内容的Java类,Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息。

    所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这个接口,或者是继承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。
    在这里插入图片描述

    ④ Servlet的工作过程

    • 客户端发送请求,请求传递到Servlet容器;
    • Servlet容器将数据转换成服务端可以处理的数据后发给服务端;
    • 当服务端处理完成之后,返回给Servlet容器;
    • Servlet容器将其转换成客户端可以处理的数据交给客户端。

    ⑤ Servlet变化过程

    • 不同请求的处理逻辑不同,于是将逻辑处理这块单独抽取出来成了Servlet
    • 但是Servlet并不擅长往浏览器输出HTML页面,所以出现了JSP
    • 随着三层架构的出现,一些逻辑从Servlet抽取出来,分担到Service和Dao
    • 随着Spring的出现,Servlet开始退居幕后,取而代之的是方便的SpringMVC。

    SpringMVC的核心组件DispatcherServlet其实本质就是一个Servlet。它在原来HttpServlet的基础上,又封装了一条逻辑。

    4. Spring容器

    Spring容器用来管理Service和Dao。

    5. SpringMVC容器

    SpringMVC容器用来管理Controller、视图解析器(view resolvers)等。

    6. SpringBoot容器

    SpringBoot容器是一个应用容器,管理所有bean。

    大家也常叫做Spring容器,这为了和上面的Spring容器区分开来,称他为SpringBoot容器。

    二、容器相关知识归纳

    1. 各种容器的管理范围

    • Web容器:管理Listener(监听器)、Filter(过滤器)、间接管理Servlet(通过Servlet容器)
    • Servlet容器:管理Servlet
    • Spring容器:管理Service、Dao
    • SpringMVC容器:管理Controller
    • SpringBoot容器:管理所有Bean

    2. 为何设计父子容器

    在早期的Spring+SpringMVC的项目中,会有父子容器这个概念(Spring容器:父容器;SpringMVC容器:子容器)。

    早期为什么会这样设计呢?

    • 早期Spring为了划分框架边界。将Service、Dao层交给Spring来管理(父容器)、Controller层交给SpringMVC管理(子容器)
    • Spring规定:子容器可以获取父容器的bean,但父容器不可以获取子容器的bean(父子容器的关系就像子类和父类的关系)

    可见,父子容器的设计主要是要是为了方便子容器的切换

    比如:我们想把Web层从SpringMVC替换成Struts, 那么只需要将spring­mvc.xml替换成Struts的配置文件struts.xml即可,而spring­core.xml不需要改变。

    因此才会有网络上大家常说的:Service、Dao无法注入Controller,Controller却可以注入Service、Dao。

    但需注意:这概念只在Spring+SpringMVC项目中,SpringBoot项目并没有父子容器这个概念。

    3. 父子容器的事务问题

    事务管理器属于Spring容器管理,SpringMVC容器无法访问到事务相关的对象,所以不能在Controller上配置事务。

    三、各种项目中的容器

    1. SpringMVC项目

    ① 项目背景

    • SpringMVC+Tomcat
    • 配置DispatcherServlet的为dispatcherServlet。

    项目用到的容器:Web容器、Servlet容器、SpringMVC容器。

    ② Servlet容器

    全局上下文servletContext(Servlet容器)是一个ApplicationContextFacade类型的对象。

    Servlet容器的属性:

        private final Map<String, Class<?>[]> classCache;
        private final Map<String, Method> objectCache;
        private final ApplicationContext context;
    

    servletContext中context属性就是Tomcat的上下文信息。它是一个ApplicationContext类型的对象。

    context中有一个Map类型的属性attributes,我们的SpringMVC容器就在里面。

    ③ SpringMVC容器

    SpringMVC容器是一个XmlWebApplicationContext类型的对象。

    attributes中键为org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet的值存的就是SpringMVC容器对象。

    SpringMVC容器的主要属性:

    • servletContext:Servlet容器的引用
    • servletConfig:servletConfig的引用
    • beanFactory:DefaultListableBeanFactory类型,管理SpringMVC容器中的所有bean
    • configLocations:SpringMVC的配置文件路径,如classpath:springMVC.xml
    • parent:父容器,值为null

    ④ 容器关系图

    在这里插入图片描述

    2. Spring+SpringMVC项目

    ① 项目背景

    • Spring+SpringMVC+Mybatis+Tomcat
    • 配置DispatcherServlet的为dispatcherServlet。

    项目用到的容器:Web容器、Servlet容器、Spring容器、SpringMVC容器。

    ② Servlet容器

    全局上下文servletContext(Servlet容器)是一个ApplicationContextFacade类型的对象。

    Servlet容器的属性:

        private final Map<String, Class<?>[]> classCache;
        private final Map<String, Method> objectCache;
        private final ApplicationContext context;
    

    servletContext中context属性就是Tomcat的上下文信息。它是一个ApplicationContext类型的对象。

    context中有一个Map类型的属性attributes,我们的Spring容器和SpringMVC容器都在里面。

    ③ Spring容器

    Spring容器是一个XmlWebApplicationContext类型的对象。

    attributes中键为org.springframework.web.context.WebApplicationContext.ROOT的值存的就是Spring容器对象。

    Spring容器主要属性:

    • servletContext:Servlet容器的引用
    • beanFactory:DefaultListableBeanFactory类型,管理Spring容器中的所有bean
    • parent:父容器,这里Spring容器就是父容器,所以值为null

    ④ SpringMVC容器

    SpringMVC容器是一个XmlWebApplicationContext类型的对象。

    attributes中键为org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet的值存的就是SpringMVC容器对象。

    SpringMVC容器主要属性:

    • servletContext:servletContext的引用
    • servletConfig:servletConfig的引用
    • beanFactory:DefaultListableBeanFactory类型,管理Spring容器中的所有bean
    • configLocations:SpringMVC的配置文件路径,如classpath:springMVC.xml
    • parent:父容器,也就是Spring容器

    ⑤ 父子容器

    在Spring+SpringMVC项目中,Spring容器和SpringMVC容器为父子容器:

    • Spring容器和SpringMVC容器共同管理所有的bean
    • Spring容器管理Service和Dao,SpringMVC容器管理Controller
    • Spring容器为父容器,SpringMVC容器为子容器
    • SpringMVC容器有指向Spring容器的引用,但Spring容器没有指向SpringMVC容器的引用

    所以Controller可以注入Service和Dao对象,但是在Service和Dao里不可以注入Controller对象。

    SpringMVC的拦截器(Interceptor)也是SpringMVC容器管理的,所以Interceptor也是可以可以注入Service和Dao对象的。

    ⑥ 容器创建过程

    容器的创建过程:

    1. Tomcat服务器启动,Servlet容器启动
    2. 创建Spring容器的实例
    3. 创建SpringMVC容器的实例

    容器的详细创建过程可参考文章:Spring+SpringMVC项目中的容器初始化过程

    ⑦ 容器关系图

    在这里插入图片描述

    3. SpringBoot项目

    ① 项目背景

    SpringBoot+内置Tomcat

    SpringBoot项目中的容器:Web容器、Servlet容器、SpringBoot容器。

    对于SpringBoot项目中的容器,大家也常叫做Spring容器,这为了和上面的Spring容器区分开来,称他为SpringBoot容器。

    ② Servlet容器

    全局上下文servletContext(Servlet容器)是一个ApplicationContextFacade类型的对象。

    servletContext对象有三个属性:

        private final Map<String, Class<?>[]> classCache;
        private final Map<String, Method> objectCache;
        private final ApplicationContext context;
    

    servletContext中context属性就是Tomcat的上下文信息。它是一个ApplicationContext类型的对象。

    context中有一个Map类型的属性attributes,我们的SpringBoot容器就在里面。

    ③ SpringBoot容器

    SpringBoot容器是一个AnnotationConfigServletWebServerApplicationContext类型的对象。

    attributes中键为org.springframework.web.context.WebApplicationContext.ROOT的值存的就是SpringBoot容器对象。

    attributes中键为org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet的值存的也是SpringBoot容器对象。

    SpringBoot容器主要属性:

    • servletContext:servletContext的引用
    • beanFactory:DefaultListableBeanFactory类型,管理SpringBoot容器中的所有bean
    • parent:null

    ④ 容器创建过程

    容器的详细创建过程可参考文章:SpringBoot项目中的容器初始化过程

    ⑤ 容器关系图

    在这里插入图片描述

    展开全文
  • web 服务器有哪些

    万次阅读 多人点赞 2018-08-27 16:53:49
    什么是web服务器 "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"...

    <1>什么是web服务器

    "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。

    Web Service架构和云

    如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"给其他网站了,那么我们就说这个软件属于Web Service架构。

    Web Service架构的基本思想,就是尽量把非核心功能交给其他人去做,自己全力开发核心功能。比如,如果你要开发一个相册软件,完全可以使用Flickr的网络服务,把相片都储存到它上面,你只要全力做好相册本身就可以了。总体上看,凡是不属于你核心竞争力的功能,都应该把它"外包"出去。

    最近很红的"云计算"(cloud computing)或者"云服务"(cloud services),实际上就是Web Service的同义词,不过更形象一些罢了。它们不说你把事情交给其他计算机去做,而说你把事情交给"云"去做。

    Web Service的优势

    除了本地服务的缺点以外,Web Service还有以下的优越性:

    * 平台无关。不管你使用什么平台,都可以使用Web service。

    * 编程语言无关。只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Web service。这大大增加了web service的适用性,降低了对程序员的要求。

    * 对于Web service提供者来说,部署、升级和维护Web service都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。

    * 对于Web service使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。

    Web service的发展趋势

    根据我的观察,目前Web service有这样几种发展趋势。

    * 在使用方式上,RPC和soap的使用在减少,Restful架构占到了主导地位。

    * 在数据格式上,XML格式的使用在减少,json等轻量级格式的使用在增多。

    * 在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。

    本地服务的缺陷

    "网络服务"是未来软件开发和使用的趋势,本地服务将用得越来越少,主要因为以下三个原因:

    * 本地资源不足。很多数据和资料,本地得不到,只有向其他网站要。

    * 成本因素。本地提供服务,往往是不经济的,使用专业网站的服务更便宜。这里面涉及硬件和人员两部分,即使你买得起硬件,专门找一个人管理系统,也是很麻烦的事。

    * 可移植性差。如果你想把本机的服务,移植到其他机器上,往往很困难,尤其是在跨平台的情况下。

    对本地服务,除非是大型局域网或者说ejb这类局域网协议访问,不然的话没啥意义

    现在市面上有面向过程、方面、模块化编程,当然最多的是应该是面向对象,

    与其说对象编程,不如说是类编程,软件即服务,若软件不能提供功能(接口方法),

    也就失去原本意义,它的灵活性,独立,跨平台、跨语言

    <2>web服务器有哪些

    WEB服务器也可以称为网站服务器,可以用来放置网站文件,供用户浏览。那么常见的WEB服务器有哪些呢?

    web服务器有哪些

    ①Apache

    Apache是世界使用排名的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。  Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

    ②IIS

    IIS(Internet信息服务)英文Internet Information  Server的缩写。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。

    ③Nginx

    Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

    ④Tomcat

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta  项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。Tomcat 技术先进、性能稳定,而且免费,因而深受Java  爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

    ⑤Lighttpd

    Lighttpd是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web  server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI, CGI, Auth, 输出压缩(output  compress), URL重写, Alias等重要功能。

    ⑥Zeus

    Zeus是一个运行于Unix下的非常的Web 服务器,据说性能超过Apache,是效率的Web 服务器之一。


    <3>概念

    webserver 基本由这些组成

    • 绑定TCP端口,监听客户端(浏览器)请求
    • 处理客户端(浏览器)请求
    • 响应客户端(浏览器)请求

    Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器。
    比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分


    <4>web框架和web服务的区别

    web服务器(web server)的主要作用是,接收客户端请求,而web框架(web framework)则是处理web服务器收到的请求,并生成HTML内容,将生成的内容传递给web服务器,再由web服务器返回给客户端。

    服务器和客户端之间的连接靠web服务器来维持,web服务器接收到请求后,将请求以及相关的参数传递给web框架,由框架负责生成内容,并将生成的内容传递给web服务器。所以web服务器的职责是接受并返回请求,web服务器的职责是内容生成。

    对于Django这类的MVC 框架来说,面临的主要挑战是:易开发;对请求对象的完全访问;保持某种状态的能力;最重要的是能有写出业务级逻辑的方式。

    而对于 apache, tomcat, nginx这类web 服务器来说,面临的主要挑战是并行;和数以千计的用户同时保持连接(高并发);能够在一定时间内传送大量数据(吞吐量)。

    虽然Django这类的框架自带有web服务器,但是在面对以上挑战(高并发,吞吐量)时,性能太鸡肋,所以需要专门的web服务器。

     

    <5>原理

    web程序都运行在 TCP/IP 协议上,程序之间使用 socket(套接字) 进行通信,它能够让计算机之间的通信就像写文件和读文件一样简单。 一个 tcp socket 由一个IP地址和端口号组成。

    IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,写成10进制的形式就是我们常见的 174.136.14.108。我们通过IP地址来标识所连接的主机。

    端口号是一个范围在0-65535之间的数字,一台主机上可能同时有多个sockets,因此需要端口号进行标识。端口号0-1023 是保留给操作系统使用的,我们可以使用剩下的端口号。

    超文本传输协议(HTTP)描述了一种程序之间交换数据的方法,它非常简单易用,在一个socket连接上,客户端首先发送请求说明它需要什么,然后服务器发送响应,并在响应中包含客户端的数据。响应数据也许是从本地磁盘上复制来的,也许是程序动态生成的。传输过程如图:

    HTTP请求就是一段文本,任何程序都能生成一个http请求,就像生成文本一样简单。这段文本需要包含以下这些部分:

    • HTTP method:HTTP请求方法。最常用的就是 GET(抓取数据)与POST(更新数据或者上传文件)
    • URL:通常是客户端请求的文件的路径,比如 /research/experiments.html, 但是是否响应文件都是由服务器决定的。
    • HTTP version:HTTP版本。通常是 HTTP/1.0 或 HTTP/1.1
    • header field:HTTP头的键值对,做一些基本设置,就像下面这样:
    #客户端接受的数据类型
    Accept: text/html
    #客户端接受的语言
    Accept-Language: en, fr         
    If-Modified-Since: 16-May-2005
    
    • body: 一些与请求有关的负载数据。比如在一个网站登陆的时候提交登陆表单,那负载数据就是你的账号与密码信息。

    HTTP响应的结构类似于请求:

    • status code:状态码。请求成功响应200,请求的文件找不到则响应404。
    • status phrase:对状态码的描述。

    <6>WEB服务器、应用程序服务器、HTTP服务器区别

      WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了:

        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)

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

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

     

    <7>了解和简单的服务

    server 有两重意思

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

    作为开发者,我们说 server 的时候,一般指的后者,也就是一个 24 小时运行的软件程序。

    一台主机上面可以运行多个这样的程序。

    什么是 Web Server?

    顾名思义,Web Server 就是提供 Web 服务的 Server。

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

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

    如何提供 HTTP 服务?

    下面是有 Node.js 写的一个最简单的 HTTP server

    // 文件名 index.js
    // 使用 node index.js 可运行本程序
    
    var http = require('http')
    
    var server = http.createServer( function (request, response){
        response.end('这是页面内容,你请求的路径是:' + request.url)
    })
    
    server.listen(8080, function(){
        console.log("正在监听 %s 端口", 8080);
    });
    

    你不用看懂这段程序,你只需要知道两件事情:

    1. 这段程序监听了当前机器的 8080 端口。
    2. 一旦外部访问当前机器的 8080 端口,这段程序就会返回一段文字。

     

    这就是一个最简单的 HTTP server。

    分类

    提供 HTTP 服务的 server 分为两类。

    1. 静态文件服务器

    这种服务器简单地根据访问路径,返回对应的文件。

    比如用户访问 http:// 123.123.123.123:8080/a/b/c/d.html,那么这种服务器就会在网站根目录找到 a/b/c/d.html 文件,原样返回给用户。

    2. 动态内容服务器

    这种服务器返回的内容一般不是文件,而是动态生成的字符串(比如从数据库中获取的字符串)。

    比如用户访问 http:// http://weibo.com/home,那么这种 http://weibo.com 的服务器则会返回当前用户最新的微博消息。显然每个用户得到的内容是不一样的

     

    <8>app server和web server的区别

    app服务器和web服务器的区别是什么呢?

    简单来说,web服务器提供页面给浏览器,而app服务器提供客户端可以调用的接口。具体而言,我们可以说:

             Web服务器处理HTTP请求,而app服务器基于多种不同的协议,处理应用程序的逻辑问题。

     

    以下将详细介绍它们之间的区别。

    Web服务器

    web服务器处理HTTP协议。当收到一个HTTP请求之后,web服务器会返回一个HTTP响应,比如一个HTML页面。为了处理请求,它可能响应一个静态的HTML页面、图片、重定向,或者代理(delegate)其他动态响应。这些动态响应可以由其他程序生成,包括CGI脚本,JSPs,servlets,ASPs,服务器端的Javascript,或者其他服务器端技术。而这些服务器端程序响应,大多数时候都表现为HTML页面,供浏览器访问。

    理解一个web服务器的代理模型(delegate model)相对比较简单。当web服务器接收到一个请求,它只是简单的将请求交给处理该请求的最优程序。除了为服务器程序简单的提供一个运行环境(服务器程序可以在其中运行,并且返回生成的响应)之外,web服务器不提供任何功能。服务器程序一般自己处理交换(transaction)、数据库连接、消息分发等。

    虽然web服务器不提供以上的服务,但是它一般会提供诸如容错机制,负载均衡、缓存、集群等的可扩展性。而后者,一般来说不应该部署在web服务器上,而应该在app服务器上!

    App服务器

    根据我们的定义,app服务器可以基于各种不同的协议(可能包含HTTP协议),为客户端程序提供应用逻辑的处理。不同于web服务器主要发送用来展示在浏览器上的HTML页面,app服务器为客户端程序处理应用逻辑方面问题。应用程序使用这些逻辑,就如同调用一个对象的方法(或者面向过程编程中的函数)一样简单。

    这些应用程序可能包含PC机上运行的GUI进程,web服务器,甚至其他的app服务器。app服务器和客户端之间的通信并不局限于简单的显示标记,而是可以由程序逻辑,比如数据表单、方法调用,而非静态的HTML,这样,客户端程序就可以按需去用了!

    在大多数情况下,app服务器通过元件API,比如基于j2ee app服务器的EJB,来提供应用逻辑。而更多的情况下,app服务器自己管理自己的资源。这些责任(gate-keeping)包括安全、进程交互、资源池、消息分发等。同web服务器一样,app服务器也可能需要各种可扩展性和容错机制。

    一个例子

    以一个提供实时价格和相关信息的在线商店为例,它极有可能提供了一个表单,用户可以选择不同的产品并查询。它会查找,并通过HTML网页展示结果。这个网站可能有多种方式来实现这个功能,下面我们将举两个相反的例子,一个不使用app服务器,而另一个使用。通过这两个例子,可以帮助你理解app服务器的功能。

    场景1:web服务器,而非app服务器

    在这个场景里,web服务器独自提供在线商店的功能。它接受用户的请求,交给服务器端程序处理。该服务器端程序通过数据库,或者纯文本,查找到价格信息,然后生成HTML响应,通过web服务器返回给用户的浏览器。

    总结来说,web服务器仅需要接受HTTP请求,并响应HTML网页。

     

    场景2: web服务器 + app服务器

    同场景1一样,web服务器仍然代理脚本生成的响应。但是你可以把业务逻辑部署在app服务器上。这样,脚本就不需要去关注怎样查询和生成响应,而仅需要调用app服务器提供查询服务,从而利用其生成它的HTML响应。

    在这个例子中,app服务器提供了价格查询的业务逻辑。这个逻辑不应该包含怎样去展示,或者强迫客户端使用这些数据。相反的是,客户端和app服务器进行交互,只有当客户端调用了app服务器的价格查询服务的时候,该服务才查找到信息并返回。

    同HTML代码生成分离开后,价格查询逻辑的复用性提高了。另外一个客户端,比如收银机,同样可以调用这个接口。而场景1里,价格查询服务就很难被重用,因为它和HTML页面紧密联系。

    总结来说,第二个场景中,web服务器处理HTTP请求,并返回HTML页面,而app服务器处理业务逻辑。

    注意事项

    近来,XML web服务器模糊了app服务器和web服务器的界限。发送一个XML请求给web服务器,web服务器可以像过去的app服务器一样,处理数据并返回响应。

    另外,很多app服务器包含web服务器,这就意味着你可以把web服务器看做app服务器的一个子集。虽然app服务器包含web服务器的功能,但是开发者还是很少以此身份发布app服务器。如果需要的话,他们通常将web服务器和app服务器分离开。这样的目的是,性能(简单的web请求不会影响到app服务器的性能)、发布配置(专用的web服务器,集群等)、更好的厂商选择。

     

    <9>应用服务器和web服务器

    Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主 要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的。

    以这样的定义,IIS、Apache、Tomcat都可以属于Web服务器

           Web服务器(Web Server)可以解析(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服务器的代理模型(delegationmodel)非常简单。当一个请求(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-keepingduties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

      以这样的定义,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一起使用,也可以作为应用服务器的辅助与应用服务器一起部署。

     

    常见的web服务器: (其实IIS和Apache同时也支持基础的应用服务器的功能)

      Microsoft IIS

      Microsoft的Web服务器产品为Internet Information Server (IIS), IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS 的平台上。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。

      IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器, 分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供 ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

           Apache

           Apache 源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。 Apache是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来 使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。

       Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此, 在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,世界上很多著名的网站 都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、 Windows、Linux系统平台上)以及它的可移植性等方面。

    常见的应用服务器:

      IBM WebSphere

      WebSphere Application Server 是一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。 这一整套产品进行了扩展,以适应 Web 应用程序服务器的需要,范围从简单到高级直到企业级。

      WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。

      BEA WebLogic

      BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。

      BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。BEA WebLogic Server 的遵从 J2EE 、面向服务的架构,以及丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。现在已经归于Oracle所有。

      IPlanet Application

      IPlanet Application Server作为Sun与Netscape联盟产物的iPlanet公司生产的iPlanet Application Server 满足最新J2EE规范的要求。它是一种完整的WEB服务器应用解决方案,它允许企业以便捷的方式,开发、部署和管理关键任务Internet 应用。该解决方案集高性能、高度可伸缩和高度可用性于一体,可以支持大量的具有多种客户机类型与数据源的事务。

      iPlanet Application Server的基本核心服务包括事务监控器、多负载平衡选项、对集群和故障转移全面的支持、集成的XML 解析器和可扩展格式语言转换(XLST)引擎以及对国际化的全面支持。iPlanet ApplicationServer 企业版所提供的全部特性和功能,并得益于J2EE系统构架,拥有更好的商业工作流程管理工具和应用集成功能。

      Oracle IAS

      Oracle iAS的英文全称是Oracle Internet Application Server,即Internet应用服务器,Oracle iAS是基于Java的应用服务器,通过与Oracle数据库等产品的结合,OracleiAS能够满足Internet应用对可靠性、可用性和可伸缩性的要求。

      Oracle iAS最大的优势是其集成性和通用性,它是一个集成的、通用的中间件产品。在集成性方面,Oracle iAS将业界最流行的HTTP服务器Apache集成到系统中,集成了Apache的Oracle iAS通信服务层可以处理多种客户请求,包括来自Web浏览器、胖客户端和手持设备的请求,并且根据请求的具体内容,将它们分发给不同的应用服务进行处 理。在通用性方面,Oracle iAS支持各种业界标准,包括 JavaBeans、CORBA、Servlets以及XML标准等,这种对标准的全面支持使得用户很容易将在其他系统平台上开发的应用移植到 Oracle平台上。

      Tomcat

      Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。

      Tomcat是Java Servlet2.2和JavaServerPages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。

     

     

     

     

     

     

     

    展开全文
  • web 体系结构_Web服务体系结构概述

    千次阅读 2020-06-22 19:46:25
    Web服务是独立的,模块化的应用程序,可以通过通常是万维网的网络进行描述,发布,定位和调用。 Web服务体系结构描述了三个角色:服务提供者,服务请求者和服务代理。 和三个基本操作:发布,查找和绑定。 网络...
  • web服务器、应用服务器和常见的服务器概念

    千次阅读 多人点赞 2020-04-17 16:36:01
    什么是web服务器,什么是应用服务器? 浏览器的编译原理是什么? http的头文件为何要这样配置? Nginx,Apache等为何要这样操作? 不同的服务器软件有什么作用? 而网上关于http的实战讲解一般都是以操作为主,涉及...
  • 基于C++的web服务器---总述篇

    千次阅读 2022-03-14 17:37:27
    一个web服务器的项目,这里把自己的理解写出来,同时也是想记录一下整个学习的过程。 废话不多说,直接开始。 什么是web服务器? 就是通过HTTP协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理...
  • 我们配置Web服务器,就是在服务器上建立网站,并设置好相关的参数,至于网站中的网页应该由网站的维护人员制作并上传到服务器中,下面小编就来介绍下如何配置服务器。 IIS的安装 一般在安装操作系统时不默认安装IIS...
  • windows server 2008安装配置web服务器

    千次阅读 2022-01-09 20:15:03
    IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事...
  • Web服务器的安装与配置

    万次阅读 多人点赞 2020-12-04 16:46:53
    Web服务器的安装与配置前言一、IIS服务器的安装与配置遇到的问题解决方法二、 Apache 的安装与配置遇到的问题解决办法三、Tomcat 的安装与配置遇到的问题解决办法四、 WAMP的安装与配置遇到的问题解决方法 ...
  • python实现一个web服务器

    千次阅读 2021-12-25 16:44:54
    一,使用python开启一个web服务器 自带的simple_server模块开启一个服务器; from wsgiref.simple_server import make_server #导入simple_server模块 #定义一个application,遵循wsgi协议; def app(env, start_...
  • IIS之web服务器

    千次阅读 2022-03-29 11:59:04
    web服务器和FTP服务器 WEB服务器 1.也叫网页服务器或HTTP服务器 2.WEB服务器使用的协议是HTTP或HTTPS 3.HTTP协议端口号:TCP:80 HTTPS协议端口号:TCP 443 FTP:21 4.web服务器发布软件: 微软:IIS(可以发布web...
  • 什么是web服务_什么是Web服务

    千次阅读 2020-07-28 07:09:46
    什么是web服务 什么是Web服务? (What are Web Services?) Web Services are client and server applications that communicate over the World Wide Web's (WWW) Hypertext Transfer Protocol (HTTP). As ...
  • 3、常见的WEB服务器 目前,最主流的WEB服务器有以下几个: IIS Apache Tomcat Nginx 3.1 IIS服务器 Internet Information Services(简称IIS),是微软公司推出的WEB服务器组件,也是Windows Server默认,特有的...
  • 六、Web服务体系结构

    千次阅读 2020-04-27 16:32:53
    一、Web服务概述 什么是Web服务Web服务作为一种新兴的Web应用模式,是一种崭新的分布式计算模型,是Web上数据和信息集成的有效机制。 Web服务就像Web_上的构件编程,开发人员通过调用Web应用编程接口,将Web服务...
  • 如何在windows10下搭建web服务器

    千次阅读 2021-08-01 01:58:05
    我们都知道Web服务器的使用,让很多的用户们实现了局域网内资源共享的方法,因为利用Web服务器,我们就可以将自己的信息上传到自己指定的服务器端,不仅可以实现资源共享,而且还有效地达到信息的同步,是一个非常...
  • Internet Explorer,Firefox,Chrome等Web浏览器是世界上最受欢迎的网络应用程序之一。它们用于基本信息浏览,也用于各种其他需求,包括在线购物和休闲游戏。Web服务器是为Web浏览器提供内容的东西; 浏览器请求的...
  • 通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。 在 Node.js 中,不需要使用 IIS、Apache(针对php) 等第三方 web 服务器软件...
  • web服务器、Web中间件和Web容器的区别

    万次阅读 多人点赞 2018-11-25 20:36:21
    目录 Web服务器 中间件 容器 ...所以,我们会把他们都叫成是Web服务器,因为他们都提供了Web服务,可以让我们通过http协议访问到。但是又有很多地方会说Tomcat是Servlet容器,而又有很多地方...
  • 几款比较好的WEB服务器软件推荐

    千次阅读 2021-08-01 02:38:25
    但许多客户却针对WEB服务器软件掌握的并不是许多 。今日,服务器之家就为大伙儿详细介绍几款比较好的WEB服务器软件。1.Tomcat软件Tomcat是现阶段应用较广的WEB服务器软件了。它完成了对Servlet和JSP的适用,并提供了...
  • web服务器和应用服务器的区别与分析

    万次阅读 多人点赞 2018-07-10 15:28:21
    Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满...
  • IIS Web服务器的安装与配置

    千次阅读 2022-02-24 16:45:40
    1、打开控制面板,搜索“程序与功能”;... 3、点击“启用或关闭Windows功能”,弹出小窗口,找到“Internet Information... 9、如果你想打开文件下的web页面,在“localhost”后面加“/文件名”,回车就能出现页面啦 ;
  • Web服务器是什么意思?

    千次阅读 2020-12-22 10:36:05
    Web服务器是什么意思?...Web服务器,也称为“WWW服务器”( 英文全写:World Wide Web,翻译成中文:万维网或环球信息网 ),主要功能是“提供网上信息浏览服务”。 WWW 是Internet(互联网)的多媒体信息查询工具
  • 1. 了解web服务器的基本概念、端口号等; 2. 了解静态网站和动态网站的区别、看懂简单标签; 3. 熟悉web服务器的部署和网站的发布、熟悉一台服务器配置多个网站的三...4. 本节内容主要是为实战中搭配靶机环境服务。...
  • 局域网内访问虚拟机 web 服务器

    千次阅读 2021-11-04 17:49:29
    想让和主机处于同一网段的电脑都可以访问虚拟机的 web 服务器 下面这一步为了局域网内都能访问虚拟机 web 服务器 ②、主机 下面以 window 为例,其他系统类似 你可以选择直接关闭防火墙,可以实现局域网内都可以访问...
  • 19Web服务

    千次阅读 2019-05-27 17:10:00
    Web服务 Web服务 Micosoft.Net平台架构中的分布式系统主要包括两部分:用ASP.Net技术构建服务器端动态网页,以及Web服务(Web Service或XML Web Service)。前边章节已详细介绍了构建服务器端动态网页的方法,本...
  • Java中常用WEB服务器和应用服务器

    万次阅读 2018-06-29 15:20:31
    一、web服务器和应用服务器的区别 Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是...
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-08-14 17:12:00
    Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。 Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议...
  • 关于安卓手机改装成Web服务器的尝试

    千次阅读 多人点赞 2021-11-23 17:16:55
    关于安卓手机改装成Web服务器的尝试 手机型号:华为的畅享9 然后,我这几天尝试了网上的许多种方法把手机安装一个Linux系统,下面是几种可行的方法 方法一:Busybox + Linux Deplay(要root权限) 这个方法的先行...
  • CentOS快速安装、配置Web服务器(Apache) 本文,我们来学习如何快速搭建一个 Web 服务器。 安装 Apache 服务程序 首先,登录 Linux 服务器。 使用 yum 安装: yum install httpd -y 启动服务 service httpd start ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,696,816
精华内容 1,078,726
关键字:

web 服务

友情链接: PDEcodes.zip