Web应用 - HTTP协议 -Web框架

一、web应用

1、Web应用程序是什么

①介绍

Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。

WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。

然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。

②Web应用程序的优点

网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;

网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;

它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;

网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;

因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)

③Web应用程序的缺点

网络应用程序强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或操作系统版本(导致不适用),就会影响大量用户;

网络应用依靠互联网远程服务器端的应用文件。因此,当连接出问题时,应用将不能正常使用。

许多网络应用程序不是开源的,只能依赖第三方提供的服务,因此不能针对用户定制化、个性化,而且大多数情况下用户不能离线使用,因而损失了很多灵活性;

它们完全依赖应用服务商的可及性。如果公司倒闭,服务器停止使用,用户也无法追索以前的资料。对比而看,即使软件制造商倒闭了,传统的安装软件也可以继续运行,尽管不能再更新或有其他用户服务;

相似地,提供方公司对软件和其功能有了更大的控制权。只要他们愿意就能为软件添加新特性,即使用户想等bugs先被解决再更新。跳过较差的软件版本也不可能了。公司可以强加不受欢迎的特性给用户,也可以随意减少带宽来削减开支。

公司理论上可以检索任何的用户行为。这有可能引起隐私安全问题。

④B/S架构优点

这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据。

在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载。

在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是计算机的标准设备

本质上:浏览器是一个socket客户端,服务器是一个socket服务端

 

2、基于SOCKET写一个web应用

 

3、手写简单web框架

 

二、http协议

1、简介

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,规定了客户端与服务端消息传输的格式

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

2、特性

①基于TCP/IP协议之上的应用层协议

基于请求-响应模式

③无状态保存

④无连接

3、请求协议与响应协议

 ①数据格式之请求:

请求首行
请求头(一堆k, v键值对)

请求体(post请求携带的数据)

②数据格式之响应:

响应首行
响应头(一堆k,v键值对)

响应体(post请求携带的数据)

③响应状态码:

1XX 服务器已经成功接受到你的数据正在处理,你可以继续提交其他数据
2XX 请求成功 服务器已经将你请求的数据发送给你了
3XX 重定向
4XX 请求资源不存在
5XX 服务器错误

4、url简介

统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

格式:协议://IP:端口(80)/路径?name=lqz&age=18

?之前的是请求路径,?之后的是请求数据部分

5、 HTTP请求的完整过程

当用户在浏览器输入网址回车之后,网络协议都做了哪些工作呢?

①首先干活的是浏览器应用程序,他要解析出URL中的域名

②根据域名获取对应的ip地址,首先从浏览器缓存 如下可以查看浏览器中域名对应ip的解析

③如果没有则从本机域名解析文件hosts(/etc/hosts)中查看,还没有则从LDNS(Localdnsserver)、Rootserver域名服务器,国际质级域名服务商的DNS 的层层解析

④拿到IP地址后,浏览器就可以发起与服务器的三次握手

⑤握手建立之后,就开始组装http请求报文,发送报文

⑥服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据

⑦浏览器收到响应之后,开始渲染页面

 

三、web框架

1、简介

Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率。

2、python三大主流web框架

①Django:大而全,自带了很多功能模块,类似于航空母舰(缺点:有点笨重)

②Flask:短小精悍,自带的功能模块特别少,大部分都是依赖于第三方模块(小而轻)

③Tornado:异步非阻塞 主要用在处理高io、多路复用的情况 可以写游戏后端

三种框架的比较:
        socket           路由与视图函数      模板渲染
Django    用别人的wsgiref         自己写          自己写
Flask     用别人werkzeug          自己写        用别人的jinjia2
Tornado      自己写            自己写          自己写

3、wsgiref模块

最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。

如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。

正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口协议来实现这样的服务器软件,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。而wsgiref模块就是python基于wsgi协议开发的服务模块。

 

posted @ 2019-06-05 16:32  TianShu  Views(131)  Comments(0Edit  收藏  举报