免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: stay_sun
打印 上一主题 下一主题

[其他] python 架构你选择什么呢? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2015-09-29 16:43 |只看该作者
本帖最后由 zhou_xingbo 于 2015-09-29 16:44 编辑

1 对于上述的架构你了解那个,请用自己的语言说下你的认识?

答:
Django
一站式的Web开发框架,几乎把所有Web开发要用到功能都集成于一身,数据层,路由层,模版层,用户,权限,日志,缓存等等。
MVT结构和非常多的第三方扩展,极大的提高了开发效率和代码可维护性,但被诟病的还是性能。

Flask
非常轻量级的Web开发框架,自定义程度高,可以按照自己的喜欢选择数据层,模块层等等。
但需要自己要解决更多的Web开发上的问题,对于初学者来说,开发效率有点低。

Web2py
暂时没有使用,不过Web2py的作者是一个非常传奇的人,Aaron Swartz,非常可惜自杀啦,还有一部分关于他的记录片<互联网之子>

Tornado:
轻量级的Web开发框架,和Flask有相似的感觉,不过更侧重于高并发,解决C10K的问题,主要针对Web核心的部分,外部的数据等,可以高度自定义。


2 学习上述的框架,应该学习什么知识呢?

答:
无论上面什么框架,最主要的是对MVC(MVT)的理解,只有对MVC有深刻的理解,才能合理组织代码,才能容易维护,提高效率。
M主要定义数据层,保证数据有效性等问题和一些模型有关的方法,很重的一层,容易单元测试
V主要是处理用户的请求,返回应答,处理业务逻辑,很薄的一层,较容易单元测试
T主要是页面,给用户看到的内容,主要是前端的东西,Html+js+css,不容易单元测试
一般实际开发时,需要增加一层,可以叫Helper或Service或ops等,把具体处理的业务逻辑放到这里,可以方便复用和测试。

RESTFull设计风格的了解,主要是HTTP的Method的理解和对资源的理解。

还有就是能够进行单元测试和验收测试,方便以后代码重构和业务扩展。


3 上面的框架对应于什么项目呢?

答:
Django是适合做后台运营系统,主要对内部人员使用,因为并发量不大,如果是做一些对外的网站,如果动态内容不多的话,也是适合的。
Flask适合一些API较少的Web应用,因为比较轻量,所以少量的API的情况时,开发效率还是非常快的。
Tornado主要是处理高并发的Web应用,比如对外的API等。

论坛徽章:
10
数据库技术版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00数据库技术版块每日发帖之星
日期:2015-12-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-09 06:20:00IT运维版块每日发帖之星
日期:2015-11-02 06:20:00IT运维版块每日发帖之星
日期:2015-07-13 22:59:28IT运维版块每日发帖之星
日期:2015-06-23 22:20:00程序设计版块每日发帖之星
日期:2015-06-21 22:20:00每日论坛发贴之星
日期:2015-06-14 22:20:00IT运维版块每日发帖之星
日期:2016-08-02 06:20:00
32 [报告]
发表于 2015-10-10 19:37 |只看该作者
  1 对于上述的架构你了解那个,请用自己的语言说下你的认识?
简单说一下Python:
Python是一种面向对象的编程语言,被设计得超级容易教学,并且在功能上没有任何打折。绝大部分Java算法都可以用Python来重写,而长度仅为原来的二十分之一。Python自带了一整套可移植的库,包括对许多标准互联网协议(http, xml, smtp, pop, 和imap,只提到了几个)的支持和对操作系统API的支持。

Django
目前对于web端我主要使用的是django+python+mysql,使用python主要是因为的解释性语言。
对djang的理解如下:
一、框架
Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
用于创建模型的对象关系映射,    为最终用户设计的完美管理界面,    一流的 URL 设计,    设计者友好的模板语言,    缓存系统
Django 至少需要 2.3.5 版本的 Python(我用的是python2。5,2.6,2.7),可以从 Python Web 站点上下载它。应该熟悉 MVC 架构的编程方式。

二、orm
Django 提供了自己的对象关系型数据映射组件(object-relational mapper,ORM)库,它可以通过 Python 对象接口支持动态数据库访问。
这个 Python 接口非常有用,功能十分强大,但如果需要,也可以灵活地不使用这个接口,而是直接使用 SQL。
ORM 目前提供了对 PostgreSQL、MySQL、SQLite 和 Microsoft® SQL 数据库的支持。
这个对快速建模、正向与反向工程很有用。

Flask
正如楼主所说的。Flask是一个使用Python编写的轻量级Web应用框架。
我是个用多种语言开发复杂程序有超过10+年经验的码农,一开始我工作时学习Python来写C++库的Python接口。
除了Python,我还用PHP, Ruby, Smalltalk来写Web app, 所有这些东西中,我觉得Python+Flask是最灵活的.
必须要安装Flask和服务端扩展,这些都是我们即将要用到的。我偏爱的方式是创建一个虚拟环境,所有东西都已经
安装在这个虚拟环境中了,因此你自已主要的Python安装环境则不会受影响。附加的一个好处是,用这种方式来安装
时不需要root管理员权限。

Web2py
说实话,web2py用的不多,但也做过一些项目。介绍一下:
web2py 是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,
兼容 Google App Engine。web2py具有非常良好的架构设计和代码实现,其不依赖于除了Python标准库之外的任何第三方软件包,另一方面
web2py的架构使得其很容易和第三方软件包协作。web2py提供了一个基于web的IDE环境,您可以在这个环境中创建、修改、部署以及管理您的程序,大大提高您的工作效率。
web2py的官方站点中提供了诸多web2py的相关资料,包括代码、安装方式、快速开始教程以及API文档等。

Tornado:
异步非阻塞IO的Python Web框架
Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。
这是使用 Python 编写的,相对简单的 非阻塞式 Web 服务器。其应用程序使用的 Web 框架看起来有些像 web.py 或者 Google 的 webapp, 不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。
Tornado 就是我们在 Web 服务器及其常用工具的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。我们开发这个 Web 服务器的主要目的就是为了处理的实时功能 ——在 的应用里每一个活动用户都会保持着一个服务器连接。


    2 学习上述的框架,应该学习什么知识呢?

1)PYthon知识必要的。
2)web service知识必须有一些。
3)MVC要知道为何物,最好做一个试试。
4)ORM是什么,不知道也是不行的。
5)数据库的范式还是知道些吧。
6)对于异步非阻塞的Tornado:还是学学NIO和ajax等

    3 上面的框架  对应于 什么项目呢? 请简述
openstack用的是django,是私有云。web压力不大。
小的门户网站可以用flask
非阻塞的方式和对 epoll的运用是用Tornado

评分

参与人数 2信誉积分 +15 收起 理由
ylnba + 10
stay_sun + 5 赞一个!

查看全部评分

论坛徽章:
9
IT运维版块每日发帖之星
日期:2015-08-27 06:20:00IT运维版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-22 06:20:00操作系统版块每周发帖之星
日期:2015-12-02 15:01:04白银圣斗士
日期:2015-12-07 18:37:03数据库技术版块每日发帖之星
日期:2015-12-10 06:20:00数据库技术版块每周发帖之星
日期:2016-02-03 16:55:092017金鸡报晓
日期:2017-01-10 15:19:56
33 [报告]
发表于 2015-10-11 14:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
34 [报告]
发表于 2015-10-15 14:03 |只看该作者
回复 26# ylky_2000
精华。。。
没有废话。。。
适合快餐文化。

   

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
35 [报告]
发表于 2015-10-15 14:03 |只看该作者
回复 32# hiyachen

不错,很详细。。谢谢。
   

论坛徽章:
0
36 [报告]
发表于 2015-11-13 12:50 |只看该作者
学完语法基础,求介绍一本Python的进阶书籍

论坛徽章:
18
2015亚冠之阿尔希拉尔
日期:2015-06-02 09:56:10数据库技术版块每日发帖之星
日期:2016-08-13 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-03-19 06:20:00数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-12-25 06:20:35数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00数据库技术版块每日发帖之星
日期:2015-09-11 06:20:00ChinaUnix专家徽章
日期:2015-06-30 16:29:48ChinaUnix专家徽章
日期:2015-06-30 16:29:342015年中国系统架构师大会
日期:2015-06-29 16:11:28
37 [报告]
发表于 2015-11-13 15:55 |只看该作者
回复 36# li842094


    我基本看视频  学习的

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-11-09 06:20:00
38 [报告]
发表于 2015-11-15 19:29 |只看该作者
是挺火的,当初在大学里选择做linux服务器管理这行,我还以为不用学编程了,最多就是写写shell脚本之类的,今年毕业出来才知道做linux运维是要会编程的,尤其现在大家都在谈自动化运维,至少会3p中的一种,即Python、php、perl,不过运维的话,听人说学python最好

论坛徽章:
19
酉鸡
日期:2015-02-16 11:13:06操作系统版块每周发帖之星
日期:2015-12-02 15:01:04每日论坛发贴之星
日期:2015-11-28 06:20:00IT运维版块每日发帖之星
日期:2015-11-28 06:20:00每日论坛发贴之星
日期:2015-11-27 06:20:00IT运维版块每日发帖之星
日期:2015-11-27 06:20:00IT运维版块每日发帖之星
日期:2015-11-20 06:20:00每日论坛发贴之星
日期:2015-11-19 06:20:00IT运维版块每日发帖之星
日期:2015-11-19 06:20:00每日论坛发贴之星
日期:2015-11-15 06:20:00数据库技术版块每日发帖之星
日期:2015-11-15 06:20:00程序设计版块每日发帖之星
日期:2015-11-15 06:20:00
39 [报告]
发表于 2015-11-16 10:42 |只看该作者
支持一下啊

论坛徽章:
0
40 [报告]
发表于 2015-11-26 09:49 |只看该作者
支持,刚开始学习python,希望以后能用上
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP