论坛首页 编程语言技术论坛

关于Python Web编程的一些概念总结

浏览 10943 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-29   最后修改:2011-08-30


最近看了一些Python的Web Framework,Python的web编程是百家争鸣,各种概念和相关“责任人”也没有java里面那么清晰,我简单的根据自己的理解做一个总结。
我想这些概念应该是通用的,或者对其他语言的web编程有借鉴意义的。



1. 传统的Web Server应该具备的功能

  • 监听一个本地端口,接受客户端的HTTP请求
  • 自己处理HTTP请求或者调用其他网关来处理请求
  • 将处理结果基于HTTP协议响应给客户端
  • 关于HTTP/HTTPS的其他方面支持



2. Web Gateway 应该具备的功能

  • Gateway 不需要处理HTTP协议的细节
  • Gateway 接受环境变量和调用参数作为自己的变量
  • Gateway 根据调用规则,返回调用结果



3. Web Framework 通常具备的功能

 

很少有一个框架完成所有的这些任务,一般的框架往往提供基本功能或者专攻一项功能,其余的功能由我们自己实现或者我们自己组合多个框架。Django据说很能干,大包大揽,但是需求是千变万化的,所以往往应该由程序员组合其他专攻一项的框架来完成特定的任务。java 里面的SSH就是这个道理。

 

  • 1. Session(Cookie) 
  • 2. Authentication/Authorization : AA是一个非常通用的功能,应该抽象到框架里面去实现,不要重复啃这个硬轮子
  • 3. Template :模板会大大增加可读性和可维护性,一个简单易用强大的模板非常重要
  • 4. MVC :MVC 已经是一种习惯
  • 5. Menu :菜单导航也是一个通用的模块,最好由框架实现
  • 6. Pagination:分页也是一个非常普遍的功能,在开发具体项目时,应该要提前实现
  • 7. i18n:框架应该提供国际化的解决方案
  • 8. DB/ORM:现在的项目,访问数据库几乎是家常便饭,所以好的框架应该提供简单的DB访问接口,能提供ORM更佳
  • 9. Workflow ?
  • 10. Web Service ?
  • 11. Batch Job
  • 12. 验证码?
  • 其他


4. Web Application 常见功能

  • 1. login/logout/Account maintenance :基于Web服务器或者Web框架提供的Session,AA等功能,实现基于用户的创建登录注销等
  • 2. Query / View / Create / Delete / Undelete / Import / :基于DB/ORM,Pagination等,实现数据的增删改查导入等等
  • 3. Front verification/Front control (JavaScript) :前端验证几乎都是用JavaScript了,可以考虑使用一个流行的JavaScript框架
  • 4. Back End verification :后端验证
  • 5. theme / UI(CSS) :谁都喜欢漂亮的页面,统一的主题和界面是每个项目必须的
  • 6. Parameter <system properties> :项目都有一些系统参数,应该提供页面让管理员去维护这些参数
  • 7. Code <Mapping)> : Code Mapping就是男M女F的mapping,应该提供页面让管理员去维护这些code
  • 8. Upload / Download :上传下载文件,这个应该写成本项目的common模块
  • 9. Report (Excel, PDF):报表,可以由代码生成也报表也可以使用第三方报表框架
  • 10. Audit trail :任何人做任何操作都应该有audit,这个功能每个项目都不一样,还是各做各的吧
  • 11. Backup/Recovery :故障恢复?



5. 什么是Web Middleware
什么是Web Middleware ?就是这家伙对Web Server来说,装的像个Web Application;同时对Web Application来说,这家伙又装的像个Web Server。也就是说对Web Server来说,Web Middleware 扮演Web Application的角色;同时对Web Application来说,Web Middleware 扮演Web Server的角色。

我个人觉得很多Python的Web框架,都是Middleware,对传统的Web Server来说,扮演基于WSGI的Application的角色,对于我们开发项目的人来说,他们又扮演Web Server/Web Framework的角色。

 

 

   发表时间:2011-09-01  
楼主总结的不错,我也是最近开始弄pythonweb,正如你所说,框架太多,各有所势,一时间真的不知道如何选择,有人说,选适合你需求的。可是还有一一去了解各种框架。
Django 和 webpy 都接触过。还有朋友推荐了flask。想问问楼主是怎么着手学习的.
0 请登录后投票
   发表时间:2011-09-02  
Django 太庞大了,plone这个也看过,感觉太重量,web.py轻量!
0 请登录后投票
   发表时间:2011-09-02  
flask文档很给力
0 请登录后投票
   发表时间:2011-09-02  
Javac_MyLife 写道
楼主总结的不错,我也是最近开始弄pythonweb,正如你所说,框架太多,各有所势,一时间真的不知道如何选择,有人说,选适合你需求的。可是还有一一去了解各种框架。
Django 和 webpy 都接触过。还有朋友推荐了flask。想问问楼主是怎么着手学习的.



我打算先按照如下的顺序迭代的学习,现在处在看完WSGI,在读web.py源代码,然后又返回看WSGI的阶段

1. WSGI
2. web.py
3. Tornado
3. Django"
0 请登录后投票
   发表时间:2011-09-02  
jarorwar 写道
Django 太庞大了,plone这个也看过,感觉太重量,web.py轻量!


J2EE定义了很多很多的规范,其中J2EE Web Server和J2EE Web Application之间的主要接口就是Servlet规范,这个Servlet规范定义了Server如何解析并调用Application,同时定义了Application应该遵循什么样的组织结构和继承怎样的接口。不管是Web Server还是Web Application的行为都定义的很完善,所以J2EE非常的“工业级”。一个标准的Java Web Application有固定的目录结构和配置文件语法,虽然Java Web编程也有很多的Framework,但是他们往往专攻一个方向,而且这些框架之间的配合非常流畅,因为J2EE把他们的发挥空间限制的很严格。


但是WSGI只定义了一个非常基础的Web server和Web Framework(Application)之间交互的方法,留给开发人员很多“想象空间”。你可以基于WSGI直接开发Application或者封装WSGI成一个抽象层次更高的Framework,然后基于这个Framework来开发Application,你甚至不需要了解WSGI,只要基于Framework开发就行,更底层的细节或者公用的模块交给Framework去处理。


WSGI留给我们无限的“想象空间”,我觉得学习每一个框架都仿佛呼吸看一部电影。
0 请登录后投票
   发表时间:2011-09-02  
yza0088 写道
flask文档很给力


谢谢推荐,暂时还没学习到Flask,准备排上日程。
0 请登录后投票
   发表时间:2011-09-03  
flask官方文档的教程跑着都出错,对flask看法一落万丈。
轻量级目前只看好bottle
0 请登录后投票
   发表时间:2011-09-14   最后修改:2011-09-14
congdepeng 写道
1. WSGI
2. web.py
3. Tornado
3. Django"


hay,兄弟,能说说你这个顺序的理由么?
0 请登录后投票
   发表时间:2011-09-14  
lance4t 写道
flask官方文档的教程跑着都出错,对flask看法一落万丈。
轻量级目前只看好bottle



相反,我到觉得django的文档更给力呢。有兄弟翻译成中文的了。你可以搜一下,django cook book2 ,但是django的唯一缺点就是版本更新太慢了。跟不上python ,python现在都3.2.2了,django才支持到2.7 。。。唉……
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics