首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 SAHANA 项目的 web2py 框架介绍(1)

基于 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,可以满足常见的安全性要求,我认为这已经足够了。
返回列表