Board logo

标题: 基于 SAHANA 项目的 web2py 框架介绍(1) [打印本页]

作者: look_w    时间: 2018-10-19 19:28     标题: 基于 SAHANA 项目的 web2py 框架介绍(1)

背景 :SAHANA 和 web2py 时间线图 1. SAHANA 和 web2py 时间线
从时间线上可以看到,有这么几个关键的词汇:IBM、SAHANA、地震、web2py、python……
IBM 想必大家都耳熟能详了,大型的跨国 IT 公司,在社会责任面前,向来是有很强烈的存在感。SAHANA 赈灾管理系统就是其针对自然灾难的一个灾难应急解决方案。本文作者之一有幸作为志愿者,参与了 IBM 组织的 2013 年雅安地震 SAHANA Eden 版本赈灾系统的开发工作,以此项目为基础深入介绍项目中用到的 web2py 应用框架。
SAHANA 赈灾管理系统主要功能Web2py 架构及其简介众所周知 web2py 作为 Python 语言提供的全功能 Web 应用框架,于 2007 年发布,其创作的灵感来源于 Ruby on Rails,旨在敏捷快速的开发 Web 应用。官方号称 web2py 可以跨越多个平台,但具体应用在 SAHANA 项目中,明确的可以支持的平台是 Windows 和 Linux,我们在 SAHANA 项目的开发和部署过程中,也只做到了这两种平台的支持。
当然,说到 python 应用框架,肯定绕不开和 Django 做个比较,甚至也有帖子专门去讨论 web2py 十宗罪,存在即合理,具体框架的谁输谁赢,本文不去做比较,让我们一起来看 web2py 的架构、工作流程以及其特点:
图 2. Web2py 架构图 3. Web2py 工作流程通过上面 Web2py 的架构和工作流程,我们可以很清楚的看到 SAHANA 项目本身在整个 Web2py 框架中所处的位置,实际上就相当于 Web2py 的一个子模块,而且分成了前端系统和后台管理两大模块。技术实现上是基于 MVC 的架构,技术架构贯穿在每个模块的实现里,模块之间有明显的界限,原则上是互不相通的,这样的系统架构和技术实现有怎样的好处呢?可以从下面 Web2py 的特点中看到答案。
Web2py 特点简洁性:容易使用是 web2py 的首要目标,Web2py 的目标就是成为开发效率高,能直接运行的应用框架。对开发人员来说,简洁性意味着缩短学习和部署的时间,它只需要简单安装和近乎于无的配置,就完全可以在上述支持的环境中跑起来。更简单的是,它竟然内置了 trace log 和 debug 运行模式,详细的在 ticket 页面打印出出错日志。这意味着你只要有记事本,就可以去做 web2py 的开发工作了。当然,相信没有人真的会去这么做,不过这的确从另一个角度反映出设计者追求"小而美"的设计初衷。
扩展性:支持绝大多数的 web 服务器、数据库以及所有的 Python 库,应用框架默认的数据库是 SQLite,我们开发的过程中用到的是 MySQL,另外官方号称支持 PostgreSQL、MSSQL、Oracle、IBM DB2、Informix 以及 Ingres,数据库、服务器之间的支持,可以简单的通过更改配置文件实现,不同数据库数据会在切换的同时自动生成。
模块化设计:在 web2py 中,每一个功能都可以看做是一个独立的应用,这点可以从 web2py 的架构上一目了然。不同的模块之间原则上是独立的,每个模块可以看做是从前台 - 控制 - 后台的独立应用程序,而且支持即开即用。模块化的设计使得开发人员可以快速响应需求的变更,在增加新功能的同时,不会有顾虑会影响到其他的已有的模块。
安全性:相信安全性应该是每个 web 应用框架都会强调的的核心之一,毕竟没有安全性保证的产品,市场前景能有几何,真的很难讲。在 web2py 的安全性特性上,大体体现在数据层消除 SQL 注入、表单验证、跨域请求伪造阻止和关键字段的加密保护上。在安全性上想突出自己特有的一面真的很难,对 web2py 这种定位于快速开发、部署的 web 应用框架来说,在这一方面,很多的特性都在效仿 Rails,可以满足常见的安全性要求,我认为这已经足够了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0