一 Web 概要

1、 Web概要

  1. 早期的web应用主要是静态页面的浏览,这些静态页面使用HTML语言编写,放在服务器上,用户使用浏览器通过HTTP协议请求服务器上的web页面,服务器上的web服务器软件接受到用户发送的请求后,读取请求URI所标识的资源,加上消息包头发送给客户端的浏览器,浏览器解析响应中的HTML数据,向用户呈现多姿多彩的HTML页面。
  2. 但是随着网络的发展,很多线下业务开始向网上发展,基于Internet的web应用也变得越来越复杂用户所访问的资源已不仅仅局限于服务器硬盘上存放的静态网页,更多的应用需要根据用户的请求动态生成网页信息,复杂的还需要从数据库中提取信息,经过一定的运算,生成一个页面返回给客户
  3. 如何才能实现? 利用已经实现HTTP协议的服务器端软件,这些软件预先给我们留出了扩展的接口,我们只需要按照一定的规则提供相应的扩展功能,当这类web服务器接受到客户端请求后,判断请求是否是访问我们提供的扩展功能,如果是,将请求交由我们编写的程序去处理,处理完成后,程序将处理结果交回web服务器软件,web服务器软件拿到结果后,再将结果作为相应信息返回给客户端。
  4. 早起使用的web服务器扩展机制是CGI,它允许用户调用web服务器上的CGI程序,CGI全称 Common Gateway Interface 公共网关接口,大多数的CGI程序使用Perl来编写,也有通过C,Python或PHP编写,用户通过单击某个连接或者直接在浏览器的地址栏输入URL来访问CGI程序,web服务器接受到请求后,发现这个请求是给CGI程序的,于是就启动并运行这个CGI程序,对用于请求进行处理。CGI程序解析请求中的CGI数据,处理数据,并且产生一个响应,这个响应被返回给web服务器,web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。但是CGI编写困难,对用户请求的响应时间较长以进程方式运行导致性能受限制。

2、Web应用历史

1、单机程序

软件从附着于电脑硬件之日起,就在不断的进行着自我完善和演变。从其使用模式的角度出发,可以简单分为单机程序和网络程序。发展到今时今日仍有大量的不依赖网络的单机程序被我们使用,如记事本、Excel、PPT、ZIP压缩等软件都是大家熟知的装机必备软件

2、网络程序

当电脑越来越多的参与到日常生产生活中,单机程序已经不能满足企业的需要。企业级应用要求能够最大程度的让更多的客户端参与到协同办公之中,所以依赖于网络的程序开始大力发展起来。

2.1、主机+终端模式

最早的网络程序是基于主机+终端模式的,也就是整个应用中只有一台大型主机,各个操作地点都是使用一条专线与主机相连,终端不提供任何运算和界面,类似于Unix形式,所有的运算和处理都由主机来完成。主机一般处理能力非常强大,并且稳定,主要机型都是由IBM这样的大公司提供。

主机-终端模式

但上述模式中,主机的高昂的价格以及扩展难、维护费用高等弊端并不是一般企业所能承受,所以除银行、航空订票、证券等大企业在使用以外,大多数企业开始转投CS架构的程序,即客户端服务器架构。

2.2、C/S架构
1、说明

CS架构的发展过程经历了两层CS架构,三层CS架构以及多层CS架构的演变。
两层的CS架构是由客户端和后面的数据库组成的。数据库用于存放数据,并且使用数据库编程语言编写业务逻辑,客户端则使用VB、VC、Delphi这样的可视化编程方便的语言来开发客户端的输入输出界面。用户通过界面向服务器发送请求,服务器发回的数据则通过界面进行显示,服务器的角色就由数据库来充当。这样做的好处就是开发效率高,满足企业需求。但是这种架构存在着很大的弊端,第一是可移植性差,如当数据库从SQL Server更换为Oracle时就必须将业务逻辑用新的语言再重新编写一遍;第二则是大型系统做不了,因为客户端与数据库需要建立持续的连接,而数据库能够支持的最大连接数是有限制的。所以在2000年这样的架构流行之后,慢慢的就开始向三层CS架构转变。
三层的CS架构指的是客户端+应用服务器+数据库,即将混合在数据库端的业务逻辑从中分离出来,放入到应用服务器中,数据库只负责数据的管理、存储及检索。客户端负责界面。三层之中的应用服务器其实也是程序,类似于前面讲过的TCP、Socket编程,任何支持TCP编程的语言都可以作为应用服务器。三层CS架构的工作流程。

C / S 三层架构图

用户通过GUI(图形用户界面)进行操作,然后调用客户端的通信模块,通信模块依据自定义协议将请求数据打包,通过网络发送该请求,到达应用服务器时,应用服务器同样也有一个通信模块,将收到的数据包按照协议进行拆包,调用相应的业务处理模块,处理数据,其中可能需要访问数据库来完成数据的获取,将处理完的结果再次发送给通信模块,通信模块将结果按照自定义协议进行打包,然后将数据包发送给客户端的通信模块,客户端进行拆包获取响应数据,将结果显示在界面上,更新界面上的数据显示。

这样的程序结构虽然在一定程度上降低了对数据库编程的依赖,并且能够适应大型的应用程序,但数据通信模块的增加却提升了开发的难度以及整体架构的复杂度。

2、优缺

优点

  1. 能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。
  2. 操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
  3. C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
  4. 安全性能可以很容易保证,C/S一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。
    缺点
  5. 需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
  6. 兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变。
    1. 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户,所以适用面窄,通常用于局域网中
3、B/S架构
1、说明

为了降低三层CS架构中与通信有关的复杂度,BS架构开始成为了网络程序中一大重要的架构类型。
BS架构即Browser + Web Server + DB

B/S三层架构图

由于三层CS架构中,自定义协议提升了整体的复杂度,那么就将自定义协议变成标准的HTTP协议。于是客户端使用HTTP协议进行数据打包拆包的程序即各厂商依据标准开发的浏览器,Web服务器也是基于HTTP协议由一些厂商提供,如IIS,Apache等。这样基于浏览器和服务器的架构中,由于协议已被限定,所以与通信有关的数据打包拆包的过程都不用我们开发人员来编写程序,只需要考虑将HTTP协议解析出来的数据进行业务处理,以及将什么样的结果提供给响应即可。也就是开发过程中只需要考虑7,8,9这三个步骤即可。于是大大降低了网络程序的开发难度,所以这种架构得到了大量的应用。

2、优缺点

优点

  1. 分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理。
  2. 业务扩展简单方便,通过增加网页即可增加服务器功能。
  3. 维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
  4. 开发简单,共用性强。
    缺点
  5. 个性化特点明显降低,无法实现具有个性化的功能要求。
  6. 在跨浏览器上,BS架构不尽如人意。
  7. 客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)
  8. 在速度和安全性上需要花费巨大的设计成本。
  9. 功能弱化,难以实现传统模式下的特殊功能要求。

二、什么WEB应用程序

  1. WEB应用程序指供浏览器访问的程序,通常也简称为web应用。例如有x.html 、x.html……多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用程序
  2. 一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。
  3. Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理

三、WEB应用程序的开发

1、概要

Web应用程序指供浏览器访问的程序,通常也简称为web应用

2、静态web

  1. 定义
    指web页面中供人们浏览的数据始终是不变,例如 .htm、.html,这些是网页的后缀,用户直接访问这些文件就能看到内容
  2. 流程示例图
    img
  3. 缺点
    1、Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。
    2、静态WEB无法连接数据库,无法实现和用户的交互
  4. 静态WEB想达到动态效果需要用到的技术

    JavaScript(常用)

    JScript

    ScriptEase

    VBScript

3、动态web

  1. 定义
    指web页面中浏览的数据是由程序产生的,不同时间点,不同地点,不同人访问同一个web页面看到的内容和界面可能不一样,而且动态WEB具有交互性,WEB的页面的内容可以动态更新
  2. 流程示意图
    img

    动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(.htm或者是.htm)还是动态资源。

    如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.html),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

    如果WEB Server Plugin发现客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行

  3. 动态web技术
    • ASP
    • PHP
    • JSP
    • template语法

四、什么是WEB 服务器

1、概念

  1. 一台负责提供网页的电脑,主要是各种编程语言构建而成的,通过HTTP协议传给客户端。
  2. 一个提供网页的服务器程序
  3. 服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应

2、常见的WEB服务器

  1. Nginx服务器
    Nginx(发音同engine x)是一个 Web服务器,也可以用作反向代理,负载平衡器和 HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。同名公司成立于2011年,以提供支持。
    Nginx 是免费的开源软件,根据类似 BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为反向代理,负载均衡器。
  2. Gunicorn
    (从Ruby下面的Unicorn得到的启发)应运而生:依赖Nginx的代理行为,同Nginx进行功能上的分离。由于不需要直接处理用户来的请求(都被Nginx先处理),Gunicorn不需要完成相关的功能,其内部逻辑非常简单:接受从Nginx来的动态请求,处理完之后返回给Nginx,由后者返回给用户
  3. uwsgi
    因为使用C语言开发,会和底层接触的更好,配置也是比较方便,目前和gunicorn两个算是部署时的唯二之选。
  4. Apache服务器
    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器软件之一。它快速可靠,并且可以通过简单API扩充,将Python/Perl等解析器编译到服务器中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值