Discuss / Python / 还是不太明白

还是不太明白

Topic source

小夜1882

#1 Created at ... [Delete] [Delete and Lock User]

wsgi在服务器和web应用程序之间到底扮演了什么角色,干了些什么?

可以尝试这样理解一下:

服务器实际上就是一个一直在运行的程序脚本(参见TCP编程那一节中介绍的socket实现的server,实际上就是一个服务器)

但是,socket毕竟还是传输层的概念,它帮我们封装了底层的(网络层,链路层和物理层等这些我们不需要理解的)实现方式。

但是如果我们直接用socket自己编写服务器程序的话,就比较麻烦了。因为就本章所讲的web server来讲,已经有约定俗成的http协议了。我们自己用socket实现的服务器程序,需要去解析http协议中的那些header啊,method啊之类之类的,还是太底层了。我们希望集中注意力在web应用的逻辑处理层面。

所以,这一节的内容,实际上是对数据的一种抽象。当client端发过来一个http request的时候,我们只用application这个方法关注request的内容是什么,需要response什么内容。而application中的environ参数,用dict字典的形式,帮我们处理了最原始的数据,我们只管取我们需要的就可以了(而不需要对一大串字符串做有效性判断、字符串截取等操作);而application中的start_response参数,用固定的格式(一组list)接收我们需要返回的状态。

综上,可以这样理解,WSGI是一个数据抽象的模块。是web server和html之间的一个处理程序。为的是让程序员能够更加方便的获取他们想要的数据。


  • 1

Reply