Odoo作为开源ERP,在欧洲有着广泛的应用,但就中国来说,基本上还处于起步阶段,国内的应用并不是太多,因此,从市场来看,其应用潜力是巨大的。要基于Odoo进行二次开发,就必须要对Odoo的web基本运行原理有必要的了解,才能从宏观上对Odoo有个大体认识。此文正是基于此目的,进行简要的分析,希望能够对开发Odoo应用有帮助。
Odoo使用的编程语言为python,python本身并不能直接处理web请求,就好比java并不能直接处理web请求一样,都需要一个媒介或桥梁,那么 要使基于python的Odoo能够处理来自WebServer包装之后的请求,这个媒介或桥梁是什么呢? 这个桥梁就是WSGI. 那么到底什么是WSGI呢?
1 WSGI
WSGI的官方定义:the Python WebServer Gateway Interface。顾名思义,这就是一个Gateway,也就是网关,具体标准请参看 http://legacy.python.org/dev/peps/pep-0333/
(注:以下内容摘自文章【1】)
网关的作用就是在协议之间进行转换,如下图所示
WSGI一边连着web服务器,另一边连着用户的应用。但是,这个桥的功能很弱,有时候还需要别的桥来帮忙才能进行处理,如下图所示:
在上图中:
wsgiapp又称应用 ,就是一个WSGIapplication。
wsgi container ,又称容器 ,虽然这个部分常常被称为handler,handler容易和app混淆,所以称之为容器。
wsgi_middleware ,又称中间件,一种特殊类型的程序,专门负责在容器和应用进行额外处理的
具体wsgi app、wsgi container 和wsgi middleware关系的详细介绍请参看文章【1】
2 Odoo中的web运行机制
2.1 Odoo中的web server
Odoo自身定义实现了4中类型的web server,可以从server.py文件中得知
CommonServer是其他三个server的父类