WSGI

作者:田田田田
链接:https://www.zhihu.com/question/19998865/answer/295453533
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

WSGI很好理解,虽然是Web App相关的一个概念,但是彻底理解需要了解一下TCP/IP协议,至少能够区分应用层、传输层和物理层。不清楚的话容易误解。
WSGI是一个接口,接口就是把两个模块连接起来。理解接口,重点不在接口本身,而在连接的两个模块,接口……只是个接口而已了。具体需要理解:
1、这个接口连接了哪两个模块?
2、两个模块各自做了什么工作,通过接口连接后,共同实现了什么功能?
3、为什么不在1个模块内做完所有的事,要划分成两个模块?(接口的好处:分工)

下面来分析【用户通过浏览器访问网页】的全过程,理解这个就能回答前两个问题了。
1 首先理解:用户通过浏览器访问网页,具体经过了哪些环节?
用户通过浏览器访问网页,在应用层就是用户的浏览器和服务器的Web App会话,而建立应用层的会话需要依托TCP/IP协议封装与数据传输,具体步骤有:
(1)用户输入URL
(2)浏览器代为封装成符合http格式的Request请求,包含请求首行、请求头和请求体
(3)Request请求是应用层数据,再由OS完成TCP、IP、MAC层封装,送到网卡处以比特流形式送送
(4)经过网络传输,比特流到达服务器端,被服务器接收。
(5)服务器OS逐一去掉 MAC、IP、TCP层封装,剥出应用层数据,也就是Request请求,并交给应用层的Web应用
(6)Web解析Request请求内容,并生成Respond响应,交给服务器OS
(7)Respond响应也是应用层数据,由服务器OS完成TCP、IP、MAC层封装,送到网卡处以比特流形式送送
(8)经过网络传输,比特流到达服务器端,被用户机器接收。
(9)用户机器OSS逐一去掉 MAC、IP、TCP层封装,剥出应用层数据,也就是Respond响应,并交给应用层的浏览器。
(10)浏览器根据Response响应内容,组织显示给用户看。

2 接着着重理解:在上述流程里,服务器OS和Web APP各自做了什么事情?
【服务器OS】从比特流拆出Request请求,以及将Response打包成比特流。
【Web APP】主要在实现http协议,具体有:
(1)收到 Request;
(2)解析Request具体请求内容,调用资源生成html,并组织成一个Response;
(3)发出Response;

3、再理解:服务器OS跟Web APP如何完成数据交换?
注意到服务器OS跟Web APP有数据交换:服务器OS将Request请求传给Web APP,Web APP处理后,将Respond响应传给服务器OS。
那么,服务器OS怎么把Request请求传给Web APP?
答案,通过调用WSGI接口。WSGI接口是抽象的,具体实现一般是调用函数。
如httpd = make_server(’’, 8001, application)创建一个服务器,这个服务器上的WSGI接口实现,就是调用application函数。在application中实现了Web App的请求处理,服务器调用application函数,同时将自己的成果Request作为参数传递进去,就由Web App接力完成下一步处理。Web App处理后,成果作为application的返回值返回给服务器。

最后回答开头的两个问题:
1、这个接口连接了哪两个模块?
答:服务器OS和Web APP。
2、两个模块各自做了什么工作,通过接口连接后,共同实现了什么功能?
服务器OS完成TCP/IP底层的工作,Web App完成TCP/IP应用层的工作,共同组成Web服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值