什么是web框架


参考原文:http://www.cnblogs.com/xueweihan/p/5408468.html

统一词汇

什么是web框架

网络应用框架web application frameworks,简称:web框架,用于构建web应用。不管是简单的博客网站,还是复杂的AJAX应用,每一个页面都是通过代码生成。很多开发者喜欢学习Flask或Django等web框架,但他们却不真正理解什么是web框架、web框架的目的是什么、web框架是如何工作的。该文章将助你理解以上问题,同时,你将能够:更快的理解一个新的框架,知晓一个框架的优劣,从而根据需求选择使用合适的框架。让你真正理解web框架,而不是只会用框架。

web框架是如何工作的

在开始谈论web框架之前,我们需要知道web是如何工作的。我们将弄清楚:当你在浏览器中输入URL,按下回车,之后都发生了什么。

在你的浏览器窗口访问http://www.codez.me或任何一个其他网址,我们将一步步的来探究你的浏览器在显示这个页面的过程中都做了什么。

提交表单有不同的逻辑,这两个不同的方法(method)用于两种不同的需求。

最简单的web应用代码:(如不能运行,尝试将port更换为8080)

import socket

HOST = ''
PORT = 80
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
connection, address = listen_socket.accept()
request = connection.recv(1024)
connection.sendall("""HTTP/1.1 200 OK
Content-type: text/html


<html>
    <body>
        <h1>Hello, World!</h1>
    </body>
</html>""")
connection.close()

这段代码接收连接信号和请求信号,不管请求任何的URL,它都回复HTTP 200响应(所以这段代码不是一个真正的web服务器)。content-type: text/html是头(header)字段,被用来表示请求和响应的元信息,meta-information元信息可用于浏览器(如何显示内容或加载页面),搜索引擎(关键字)。这个例子中我们告诉客户端数据类型是HTML:content-type: text/html而不是json:content-type: application/json

  1. 如何解析URL使得返回URL对应的结果。(路由:route)
  2. 如何在支持GET的基础上支持POST。
  3. 如何处理cookie和session。
  4. 如何处理上千的并发量。

没有人愿意每次建立web应用的时候都需要去处理这些问题。所以,就出现解决这些问题和HTTP协议的packages(包)。记住:这些包的核心方法我们上面的例子是一样的:监听端口,接收请求,返回HTTP响应和HTML。

web框架总结

到目前为止,web框架到底做了什么就变得清晰了:把HTTP的请求和响应,根据特定的规则对应到具体的处理函数上。把处理完的结果传递到模板引擎上。Django和Flask是两个极端。Django包含了各种功能,Flask是 微型框架,只包含web框架的基本功能,但可以通过第三方包来扩展功能。
记住,python web框架做的事情都是同样一件事情:接收HTTP请求,分配处理的方法,生成HTML作为HTTP响应,返回给客户端。实际上,几乎所有的web框架都是做了这些工作。
但愿你现在能够根据自己的需求,挑选最适合的框架了。