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