網站首頁 編程語言 正文
web框架是什么?
web開發框架是一組工具,同時也提供了非常多的資源,供軟件開發人員構建和管理網站、提供web服務、編寫web應用程序。它是一個抽象工具,能使開發應用程序和重復使用代碼的過程變得更容易。
為什么需要web開發框架?
進行自定義軟件開發時,web開發框架讓整個過程變得更容易,因而開發速度更快、更高效。許多開發框架都很便宜,這也使得整個客戶機的成本更小。
一個被廣泛使用的框架安全性更高。這主要依賴于該框架背后的社區,在這里,用戶成為長期的測試人員,并可以提供修復。
如果發現了安全漏洞,可以訪問框架的網站,告知特定的團隊,這樣他們就可以修復它。
Python? web? 目前較火的三大框架:Django、Flask 與 Tornado
1、Django
Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,模板T和視圖V。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟件。
Django是一個高級的Python Web框架,以快速開發和實用簡潔的設計聞名。它由經驗豐富的開發人員構建,解決了Web開發的麻煩,因此用戶可以專注于編寫應用程序,而不需要擔心返工。并且它是開源和免費的。
Python 界最全能的 web 開發框架,battery-include 各種功能完備,可維護性和開發速度一級棒。常有人說 Django 慢,其實主要慢在 Django ORM 與數據庫的交互上,所以是否選用 Django,取決于項目對數據庫交互的要求以及各種優化。而對于 Django 的同步特性導致吞吐量小的問題,其實可以通過 Celery 等解決,倒不是一個根本問題。
特點:
- 安全系數高,能幫助開發者規避常見錯誤。
- 速度特別快,因為它的設計目的是使應用程序非??斓貜母拍铍A段過渡到最終階段。
- 擴展性好。
- 從21世紀初Django成為開源框架到現在,它一直是最佳的歸檔方式。
Django 的項目代表:
Instagram,Guardian。
2、Flask
Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。
Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有默認使用的數據庫、窗體驗證工具。
Flask 雖然是微框架,但是也可以做成規模化的 Flask。加上 Flask 可以自由選擇自己的數據庫交互組件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等異步特性以后,Flask 的性能相對 Tornado 也不逞多讓,也許Flask 的靈活性可能是某些團隊更需要的。
特點:
- 包含開發調試器和服務器
- 有豐富的文檔
- 支持安全cookie
- 基于unicode
- 單元測試集成支持
3、Tornado
Tornado是一種 Web 服務器軟件的開源版本。Tornado 和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式服務器,而且速度相當快。
? 得利于其 非阻塞的方式和對epoll的運用,Tornado 每秒可以處理數以千計的連接,因此 Tornado 是實時 Web 服務的一個 理想框架。
? 天生異步,性能強悍是 Tornado 的名片,然而 Tornado 相比 Django 是較為原始的框架,諸多內容需要自己去處理。當然,隨著項目越來越大,框架能夠提供的功能占比越來越小,更多的內容需要團隊自己去實現,而大項目往往需要性能的保證,這時候 Tornado 就是比較好的選擇。
Tornado項目代表:
知乎
總結:
- Django適合:開發速度快,初學者或者小團隊的快速開發,適合做管理后臺類、博客類網站、或者功能十分復雜需求十分多的網站。Django 和 Flask 都行,區別是 Flask 把許多功能交給第三方庫去完成了,因此 Flask 更為靈活。
- Tornado適合:性能好,高度定制,適合訪問量大,異步情況多的網站
原文鏈接:https://www.cnblogs.com/springsnow/p/12163456.html
相關推薦
- 2022-09-12 詳解APScheduler如何設置任務不并發_python
- 2023-03-03 react?native圖片解析流程詳解_React
- 2022-12-07 C++11,?14,?17對tuple元素的訪問詳情_C 語言
- 2022-08-30 C++示例講解初始化列表方法_C 語言
- 2022-08-13 socket:REUSEADDR與REUSEPORT選項
- 2022-04-11 基于python實現Pycharm斷點調試_python
- 2023-04-04 C/C++關于實現CAN信號的獲取方法_C 語言
- 2022-10-13 Windows命令批處理的用法詳解_DOS/BAT
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支