zoukankan      html  css  js  c++  java
  • Django&Tornado&Flask比较

    Django

    优点:

    • 大和全(重量级框架)
    • 自带orm,template,view 
    • 需要的功能也可以去找第三方的app
    • 注重高效开发
    • 全自动化的管理后台(只需要使用起ORM,做简单的定义,就能自动生成数据库结构,全功能的管理后台)
    • session功能

    缺点:

    • template不怎么好用(来自自身的缺点)
    • 数据库用nosql不方便(来自自身的缺点)
    • 如果功能不多,容易臃肿

    Tornado

    优点:

    • 少而精(轻量级框架)
    • 注重性能优越,速度快
    • 解决高并发(请求处理是基于回调的非阻塞调用)
    • 异步非阻塞
    • websockets 长连接
    • 内嵌了HTTP服务器
    • 单线程的异步网络程序,默认启动时根据CPU数量运行多个实例;利用CPU多核的优势
    • 自定义模块

    缺点:

    • 模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块

    总结:

    性能, Tornado 首选;

    开发速度,Django 和 Flask 都行,区别是 Flask 把许多功能交给第三方库去完成了,因此 Flask 更为灵活。

    综上所述:

    Django适合初学者或者小团队的快速开发,适合做管理类、博客类网站、或者功能十分复杂需求十分多的网站

    Tornado适合高度定制,适合访问量大异步情况多的网站

    ======================================================================================

    Tornado 概述

    Tornado是Facebook开源出来的框架,其哲学跟Django近乎两个极端。Tornado是异步框架Tornado基本上只算有MVC中C这一层
    Tornado走的是少而精的方向,它也有提供模板功能;虽然不鼓励,但作者是可以允许在模板进行少量编码的。
    如果跟asp.net相比,Tornado有点类似仅实现了AsyncHttpHandler;除此之外,全部需要自己去实现。
    好吧,其实它有模板,有国际化支持,甚至还有内置的OAuth/OpenID模块,方便做第三方登录,它其实也直接实现了Http服务器。
    但它没有ORM(仅有一个mysql的超简单封装),甚至没有Session支持,更不要说Django那样自动化的后台。
    假设是一个大型网站,在高性能的要求下,框架的各个部分往往都需要定制,可以复用的模块非常少;一个以Django开发的网站,各部分经过不断的定制,Django框架剩下的,很有可能也就是tornado一开始所能提供的这部分。
    殊途同归。

    Flask概述

    Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库 入门简单,即便没有多少web开发经验,也能很快做出网站,非常适用于小型网站 非常适用于开发web服务的API 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验,各方面性能均等于或优于Django。Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库。

    Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一 Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django。 Flask比Django更加Pythonic,与Python的philosophy更加吻合。

    Django概述

    Django太重,除了web框架,自带ORM和模板引擎,灵活和自由度不够高。Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉。

    Django的自带ORM非常优秀,综合评价略高于SQLAlchemy Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja。

    Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山 Django目前支持Jinja等非官方模板引擎 。

    Django非常适合企业级网站的开发:快速靠谱稳定,成熟,完善,但相比于Flask,Django的整体生态相对封闭。

    Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植 Django上手也比较容易,开发文档详细、完善,相关资料丰富

     

    Django与Flask的应用场景

    鉴于Flask和Django的特点,如果你是开发一个REST API的系统,没有复杂的分层和逻辑的话,Flask会是一个不错的选择,因为框架内建的功能已经足够你完成这个任务;又或者,你是打算实现一个大型的系统,需要自己重新实现大部分插件的内容,Flask也还是不错,因为它足够的简单,能让你快速的读懂和扩展。
    其他的情况我还是推荐你用回Django。尤其是当你需要安装大量的Flask插件,去实现Django本来就有的功能时,你就应该意识到你需要放弃Flask
    当然这只是个人的看法,也没有绝对这一说,主要还是看你想在框架上花费多少的时间。

     

  • 相关阅读:
    JVM学习-垃圾回收算法
    JVM学习-jvm判断对象已死的方法
    JVM学习-jvm内存区域
    python 多线程
    Python+unittest+requests+excel实现接口自动化测试框架
    linux 运行tensorflow文件缺少_bz2问题及解决
    获取url地址
    微信小程序的小问题(2)
    微信小程序的小问题(1)
    前端知识
  • 原文地址:https://www.cnblogs.com/sunny0824/p/13727048.html
Copyright © 2011-2022 走看看