什么是 Web 框架?
上一節課《Django 框架簡介》我們簡單地認識了下 Django 框架,在正式開始學習它之前,我還要跟你說下 Web 框架到底是個什么東西?為什么市面上會有各種各樣形形色色的 Web 開發框架?以及使用 Web 框架進行開發的優勢在哪里?這些問題在這節課里面你都可以找到答案。
1. Web 框架
在計算機領域,框架指的是由部分組織、機構或者個人開發出的一套程序模板。我們借助這套程序模板可以快速進行應用開發。往往一個優秀的框架是能幫我們簡化各種常用操作,比如各種類型數據庫 (SQLite、MySQL 或者 PostgreSQL)的增刪改查、簡化各種熱門互聯網組件(如消息中間件等)的接入以及提供各種復雜功能的再包裝。
特別對于 Web 框架,會對到發生過來的 HTTP 請求做一系列的過濾處理,最后才到達我們的視圖函數進行處理。計算機的每一個領域都有大量的早期互聯網工作者為我們做了不少工作。為了減少重復造輪子,早期的互聯網工作者為我們開發了許多優秀的代碼庫,而后逐漸演變成開發框架,以供普通開發者使用。正是由于開發框架的出現,大大降低了程序員的開發門檻,也導致越來越多的人員進入該行業。
Web 框架是專門針對 Web 應用開發的一套開發工具,幾乎都是開源和任意使用,由社區維護 。由于 Web 的后端開發語言有很多種,比如 Java、Python 以及 Go 等,它們都對應著若干個非常流行的 Web 框架。Java 中最火的 Web 開發框架莫過于 Spring 以及 SpringMVC 系列框架,Python 中有 Django、Flask 和 Tornado 等。而在這些框架的基礎上,我們幾乎只需要十幾行就能構建出一個簡單的 Web 服務。
2. 使用 Web 框架的好處
使用 Web 框架進行開發的好處如下:
-
應用業界最流行的 Python Web 框架,如 Django、Flask 等,可以幫我們快速完成應用開發,節省開發時間和人力投入,這種做法往往是中小型企業開發的不二之選。大型企業也許會開發出自己的服務框架,比如阿里的微服務框架 Dubbo。但對于大多數企業而言,由于財力和人力限制,基于框架開發是最高效的解決方案;
-
流行的 Web 框架往往具備一定的優異性能和良好的代碼規范,我們遵守一定的開發原則就能構建出良好風格的 API 接口,同時開發應用也會具備框架的優異性能。例如 Tornado 框架是專注高性能的 Web 框架;
-
避免重復造輪子,由框架完成各種常用操作代碼。開發人員集中精力完成業務邏輯開發,可以顯著降低 Web 開發難度。
-
在熟練使用 Web 框架之后,我們可以認真學習 Web 框架源碼,這些代碼是來自全世界優秀的程序員奉獻智慧的結晶。從中我們可以學習到如何處理 Web 請求,如何使用開發語言(如 Java、Python 等)的各種設計模式、高級封裝等。只有深入學習了這些知識,我們才有可能成為一名合格的應用開發者。
在信息安全領域,只會使用工具進行網絡攻擊的人,被嘲笑為腳本小子。只會使用框架,調各種 API 接口的開發者,往往被人戲稱為調包俠。因此,掌握 Web 框架的使用是第一步,除此之外,我們在學完框架的基本使用之后,還需要真正深入框架源碼進行學習,除了能快速定位開發問題之外,也是快速提升個人能力的一個有效途徑。
3. 各種語言的 Web 框架介紹
目前,主流的 Web 框架可以按照語言類型進行分類,比如基于 Java 開發的 Web 框架、基于 Python 開發的 Web 框架和基于 Go 開發的 Web 框架等等。每種語言領域內的 Web 框架也是各有特色,有大而全,有小而精,還有專注異步高性能等等。
熱門的 Python Web 框架有:
主流的 Java Web 框架有:
-
Spring/Spring Boot/Spring MVC 等:幾乎是大部分 Java web 開發者的首選和必選,占據了大部分市場?;?Spring 及其衍生框架,我們能迅速開發一個 Java Web 服務,幾乎不需要任何 Web 開發基礎;
-
Dubbo:阿里巴巴的開源的高性能 RPC 框架、特點是分布式、高性能以及高度可擴展;
-
Struts2:老一代的 Java Web 框架,特點是高度成熟。不過目前趨勢來看,已經很少人使用 Struts2 來開發新的 Web 服務。
Go 作為近幾年快速崛起的后端開發語言,也受到了廣大后端開發者的追捧,Go Web 框架也隨之而來,其中的典型代表有:
- Beego 框架:它類似于 Python Web 框架 Django,走大而全的風格,具備各種 Web 應用程序的通用功能;
- Gin 框架:Gin 是 Go 的一個微框架,封裝優雅,接口友好。具有快速靈活,容錯方便、性能優異等特點;
- Echo 框架:Go 的微型 Web 框架。其具備快速 HTTP 路由器、支持擴展中間件,同時還支持靜態文件服務。
4. 小結
本小結介紹了 Web 框架相關知識,梳理了使用 Web 框架開發的諸多好處,最后介紹了三種后端開發語言的主流 Web 框架。任何一種 Web 框架其核心思想和封裝功能都有很多相似。完全掌握一個 Web 框架的使用并熟讀其源碼,掌握框架核心處理流程,對于快速上手使用其他 Web 框架以及提升自身編碼水平都有極大的促進作用。