标签:代码 控制 调用 git 编写 sig 不同的 row 安全
各位,学Python 的同志,相信对 Django 、Flask、等不会陌生,这些就是Python语言的web 框架。
那么问题来了,web 服务器又是什么,他和web框架有什么关系?他们又是如何工作的,分别处于什么位置?还有有时候有人会把HTTP服务器叫做web服务器,这是为何?这种说法对吗?带着这些疑问,听我慢慢道来…
平时我们都是通过浏览器(比如Chrome,Firefox等)上网的,当我们在浏览器的地址栏里输入地址后,会得到一个网页。
这个网页就是 web 服务器返回给我们的,而浏览器就称为客户端,当我们输入网址并按下回车后,就像web服务器发送了一个web请求。
这种模式成为 B/S 模式 ,即 Browse / Server 模式
在浏览器中输入地址、按回车后,按下F12 就是看到如下信息
下面就让我们来目睹整个过程吧
这里Request 和 Response 都需要遵守 HTTP 协议,关于 HTTP 协议的详细内容,可以读读《HTTP 权威指南
但是实际中的 Web 服务器远远比上面示例的复杂的多,因为要考虑的因素实在是太多了,比如:
目前在UNIX和LINUX平台下使用最广泛的免费 Web 服务器有Apache和 Nginx 。而这些软件都是遵循遵守 HTTP 协议的。
所以可以称他们为HTTP服务器,只是可以通过HTTP协议语言的解析转换。
Web 服务器接受 Http Request,返回 Response,很多时候 Response 并不是静态文件,因此需要有一个应用程序根据 Request 生成相应的 Response。这里的应用程序主要用来处理相关业务逻辑,读取或者更新数据库,根据不同 Request 返回相应的 Response。注意这里并不是 Web 服务器本身来做这件事,它只负责 Http 协议层面和一些诸如并发处理,安全,日志等相关的事情。
应用程序可以用各种语言编写(Java, PHP, Python, Ruby等),这个应用程序会从Web服务器接收客户端的请求,处理完成后,再返回响应给Web服务器,最后由Web服务器返回给客户端。整个架构如下:
对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。
框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。
以 python web 框架 flask 为例,框架本身并不限定我们用哪种架构来组织我们的应用,不过其中一种比较经典的Web框架 Flask 采用了 MVC 架构,可以很好地支持以 MVC 方式组织应用。
控制器(Controller)
首先会拿到请求模型(Models)
从数据库取出所有需要的数据,进行必要的处理,将处理后的结果发送给 视图(View)
如下图所示:
还有一种同样热门且强大的 Web 框架: Django
它的模式是:MTV
Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
我们知道Python有着许多的 Web 框架,而同时又有着许多的 Web 服务器(Apache, Nginx, Gunicorn等),框架和Web服务器之间需要进行通信,如果在设计时它们之间不可以相互匹配的,那么选择了一个框架就会限制对 Web 服务器的选择,这显然是不合理的。
那么,怎样确保可以在不修改Web服务器代码或网络框架代码的前提下,使用自己选择的服务器,并且匹配多个不同的网络框架呢?答案是接口,设计一套双方都遵守的接口就可以了。对python来说,就是WSGI
(Web Server Gateway Interface,Web服务器网关接口)。其他编程语言也拥有类似的接口:例如Java的Servlet API和Ruby的Rack。
Python WSGI的出现,让开发者可以将 Web 框架与 Web 服务器的选择分隔开来,不再相互限制。现在,你可以真正地将不同的 Web 服务器与Web框架进行混合搭配,选择满足自己需求的组合。例如,可以使用 Gunicorn 或Nginx/uWSGI来运行Django、Flask或web.py应用。
Web Server 包括 提供 Htttp 服务的软件,Web 应用程序,后端存储数据库
标签:代码 控制 调用 git 编写 sig 不同的 row 安全
原文地址:http://www.cnblogs.com/xiguatian/p/6821473.html